/** * Parse result data into result objects * * @throws RuntimeException * @param Query $query * @param QueryFacetSet $facetSet * @param array $data * @return ResultFacetSet */ public function parse($query, $facetSet, $data) { if ($facetSet->getExtractFromResponse() === true) { if (empty($data['facet_counts']) === false) { foreach ($data['facet_counts'] as $key => $facets) { switch ($key) { case 'facet_fields': $method = 'createFacetField'; break; case 'facet_queries': $method = 'createFacetQuery'; break; case 'facet_ranges': $method = 'createFacetRange'; break; case 'facet_pivot': $method = 'createFacetPivot'; break; default: throw new RuntimeException('Unknown facet class identifier'); } foreach ($facets as $k => $facet) { $facetObject = $facetSet->{$method}($k); if ($key == 'facet_pivot') { /** @var \Solarium\QueryType\Select\Query\Component\Facet\Pivot $facetObject */ $facetObject->setFields($k); } } } } } $facets = array(); foreach ($facetSet->getFacets() as $key => $facet) { switch ($facet->getType()) { case QueryFacetSet::FACET_FIELD: $result = $this->facetField($query, $facet, $data); break; case QueryFacetSet::FACET_QUERY: $result = $this->facetQuery($facet, $data); break; case QueryFacetSet::FACET_MULTIQUERY: $result = $this->facetMultiQuery($facet, $data); break; case QueryFacetSet::FACET_RANGE: $result = $this->facetRange($query, $facet, $data); break; case QueryFacetSet::FACET_PIVOT: $result = $this->facetPivot($query, $facet, $data); break; default: throw new RuntimeException('Unknown facet type'); } if ($result !== null) { $facets[$key] = $result; } } return $this->createFacetSet($facets); }
public function testSetAndGetExtractFromResponse() { $this->facetSet->setExtractFromResponse(true); $this->assertEquals(true, $this->facetSet->getExtractFromResponse()); }