1 | <?php |
||
34 | class ResultSetReconstitutionProcessor implements SearchResultSetProcessor |
||
35 | { |
||
36 | /** |
||
37 | * @var ObjectManagerInterface |
||
38 | */ |
||
39 | protected $objectManager; |
||
40 | |||
41 | /** |
||
42 | * @return ObjectManagerInterface |
||
43 | */ |
||
44 | 55 | public function getObjectManager() |
|
51 | |||
52 | /** |
||
53 | * @param ObjectManagerInterface $objectManager |
||
54 | */ |
||
55 | 28 | public function setObjectManager($objectManager) |
|
59 | |||
60 | |||
61 | /** |
||
62 | * @return FacetRegistry |
||
63 | */ |
||
64 | 55 | protected function getFacetRegistry() |
|
68 | |||
69 | /** |
||
70 | * The implementation can be used to influence a SearchResultSet that is |
||
71 | * created and processed in the SearchResultSetService. |
||
72 | * |
||
73 | * @param SearchResultSet $resultSet |
||
74 | * @return SearchResultSet |
||
75 | */ |
||
76 | 66 | public function process(SearchResultSet $resultSet) |
|
91 | |||
92 | /** |
||
93 | * @param SearchResultSet $resultSet |
||
94 | * @return SearchResultSet |
||
95 | */ |
||
96 | 66 | protected function parseResultCount(SearchResultSet $resultSet) |
|
97 | { |
||
98 | 66 | $response = $resultSet->getResponse(); |
|
99 | 66 | $solrResponse = $response->__get('response'); |
|
100 | 66 | if (!isset($solrResponse->numFound)) { |
|
101 | 5 | return $resultSet; |
|
102 | } |
||
103 | 61 | $resultSet->setAllResultCount($solrResponse->numFound); |
|
104 | 61 | return $resultSet; |
|
105 | } |
||
106 | |||
107 | /** |
||
108 | * @param SearchResultSet $resultSet |
||
109 | * @return SearchResultSet |
||
110 | */ |
||
111 | 66 | protected function parseSortingIntoObjects(SearchResultSet $resultSet) |
|
150 | |||
151 | /** |
||
152 | * @param SearchResultSet $resultSet |
||
153 | * @return SearchResultSet |
||
154 | */ |
||
155 | 66 | private function parseSpellCheckingResponseIntoObjects(SearchResultSet $resultSet) |
|
184 | |||
185 | /** |
||
186 | * @param \stdClass $suggestionData |
||
187 | * @param string $suggestedTerm |
||
188 | * @param string $misspelledTerm |
||
189 | * @return Suggestion |
||
190 | */ |
||
191 | 5 | private function createSuggestionFromResponseFragment($suggestionData, $suggestedTerm, $misspelledTerm) |
|
202 | |||
203 | /** |
||
204 | * Parse available facets into objects |
||
205 | * |
||
206 | * @param SearchResultSet $resultSet |
||
207 | * @return SearchResultSet |
||
208 | */ |
||
209 | 66 | private function parseFacetsIntoObjects(SearchResultSet $resultSet) |
|
210 | { |
||
211 | // Make sure we can access the facet configuration |
||
212 | 66 | if (!$resultSet->getUsedSearchRequest() || !$resultSet->getUsedSearchRequest()->getContextTypoScriptConfiguration()) { |
|
213 | 7 | return $resultSet; |
|
214 | } |
||
215 | |||
216 | // Read the response |
||
217 | 59 | $response = $resultSet->getResponse(); |
|
218 | 59 | if (!is_object($response->facet_counts) && !is_object($response->facets)) { |
|
219 | 4 | return $resultSet; |
|
220 | } |
||
221 | |||
222 | /** @var FacetRegistry $facetRegistry */ |
||
223 | 55 | $facetRegistry = $this->getFacetRegistry(); |
|
224 | 55 | $facetsConfiguration = $resultSet->getUsedSearchRequest()->getContextTypoScriptConfiguration()->getSearchFacetingFacets(); |
|
225 | |||
226 | 55 | foreach ($facetsConfiguration as $name => $options) { |
|
227 | 52 | if (!is_array($options)) { |
|
228 | continue; |
||
229 | } |
||
230 | 52 | $facetName = rtrim($name, '.'); |
|
231 | 52 | $type = !empty($options['type']) ? $options['type'] : ''; |
|
232 | |||
233 | 52 | $parser = $facetRegistry->getPackage($type)->getParser(); |
|
234 | 52 | $facet = $parser->parse($resultSet, $facetName, $options); |
|
235 | 52 | if ($facet !== null) { |
|
236 | 52 | $resultSet->addFacet($facet); |
|
237 | } |
||
238 | } |
||
239 | |||
240 | 55 | $this->applyRequirements($resultSet); |
|
241 | |||
242 | 55 | return $resultSet; |
|
243 | } |
||
244 | |||
245 | /** |
||
246 | * @param SearchResultSet $resultSet |
||
247 | */ |
||
248 | 55 | protected function applyRequirements(SearchResultSet $resultSet) |
|
258 | |||
259 | /** |
||
260 | * @return RequirementsService |
||
261 | */ |
||
262 | 55 | protected function getRequirementsService() |
|
266 | } |
||
267 |