Ejemplo n.º 1
0
 /**
  *
  * Parse facet result list
  *
  * For now we are handling this directly here, but depending
  * on the additional facet types we will add may may have to
  * move this into the facet implementation classes if
  * different handling is needed
  *
  * @param SugarSeachEngineElasticResultSet $resultSet
  * @param array $options
  * @return array
  */
 public function parseFacets(SugarSeachEngineElasticResultSet $resultSet, $options = array())
 {
     $result = array('module_facet' => array(), 'secondary_facets' => array());
     // we can only process secondary facet results if a module filter is present
     if ($this->isOptionsModuleFilterValid($options)) {
         $module = array_shift($options['moduleFilter']);
         $defs = $this->loadFacetDefs($module);
     } else {
         $defs = false;
     }
     foreach ($resultSet->getFacets() as $facetId => $facetData) {
         // module facet is hard coded for now and uses "_type" as its name (core code)
         if ($facetId == '_type') {
             // simulate facet defs
             $modFacetDefs = array('label' => 'LBL_MODULE_FACET', 'type' => 'terms', 'ui_type' => 'select');
             $facet = FacetFactory::get('terms');
             if ($parsed = $facet->parseData($facetId, $modFacetDefs, $facetData)) {
                 $result['module_facet'] = $parsed;
             }
             continue;
         }
         // process secondary facets if defs are available
         if (!empty($defs[$facetId])) {
             $facet = FacetFactory::get($defs[$facetId]['type']);
             $facet->setOptions($defs[$facetId]['options']);
             if ($parsed = $facet->parseData($facetId, $defs[$facetId], $facetData)) {
                 $result['secondary_facets'][$facetId] = $parsed;
             }
         }
     }
     return $result;
 }