/** * @return array */ protected function getValues() { if ($this->values === null) { $this->values = array(); if ($this->contentClassAttribute->attribute('data_type_string') == 'ezobjectrelationlist') { //$field = ezfSolrDocumentFieldBase::generateSubattributeFieldName( $this->contentClassAttribute, 'name', 'string' ); //@todo errore nella definzione del nome del sottoattributo? verifaicare vedi anche in self::buildFetch //$field = ezfSolrDocumentFieldBase::$DocumentFieldName->lookupSchemaName( // ezfSolrDocumentFieldBase::SUBMETA_FIELD_PREFIX . $this->contentClassAttribute->attribute( 'identifier' ) . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR . 'name', // 'string'); $field = ezfSolrDocumentFieldBase::$DocumentFieldName->lookupSchemaName(ezfSolrDocumentFieldBase::SUBATTR_FIELD_PREFIX . $this->contentClassAttribute->attribute('identifier') . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR . 'name' . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR, 'string'); } else { $field = ezfSolrDocumentFieldBase::generateAttributeFieldName($this->contentClassAttribute, 'string'); } $facets = array('field' => $field, 'name' => $this->attributes['name'], 'limit' => 300, 'sort' => 'alpha'); $fetchParameters = array('SearchContentClassID' => array($this->contentClassAttribute->attribute('contentclass_id')), 'Facet' => array($facets)); $data = $this->client->fetchRemoteNavigationList($fetchParameters); if (isset($data[$this->attributes['name']])) { $this->values = $data[$this->attributes['name']]; // setto i valori attivi e inietto il conto nel nome foreach ($this->values as $index => $value) { $current = (array) $this->attributes['value']; if (in_array($value['query'], $current)) { $this->values[$index]['active'] = true; } $this->values[$index]['query'] = OCFacetNavgationHelper::encodeValue($this->values[$index]['query']); if (isset($value['count']) && $value['count'] > 0) { $this->values[$index]['name'] = $value['name'] . ' (' . $value['count'] . ')'; } } } } return $this->values; }
protected function getValues() { if ($this->values === null) { $this->values = array(); $field = ezfSolrDocumentFieldBase::generateAttributeFieldName($this->contentClassAttribute, ezfSolrDocumentFieldBase::getClassAttributeType($this->contentClassAttribute, null, 'search')); $facets = array('field' => $field, 'name' => $this->attributes['name'], 'limit' => 500, 'sort' => 'alpha'); $currentParameters = $baseParameters = array_merge(OCClassSearchFormHelper::result()->getBaseParameters(), array('SearchContentClassID' => array($this->contentClassAttribute->attribute('contentclass_id')), 'Facet' => array($facets), 'SearchLimit' => 1)); if (OCClassSearchFormHelper::result()->isFetch()) { $currentParameters = array_merge($currentParameters, OCClassSearchFormHelper::result()->getCurrentParameters()); } $data = OCFacetNavgationHelper::navigationList($baseParameters, $currentParameters, OCClassSearchFormHelper::result()->searchText, OCClassSearchFormHelper::result()->isFetch()); if (isset($data[$this->attributes['name']])) { $this->values = $data[$this->attributes['name']]; // setto i valori attivi e inietto il conto nel nome foreach ($this->values as $index => $value) { $current = (array) $this->attributes['value']; if (in_array($value['query'], $current)) { $this->values[$index]['active'] = true; } $this->values[$index]['query'] = OCFacetNavgationHelper::encodeValue($this->values[$index]['query']); $this->values[$index]['raw_name'] = $value['name']; if (isset($value['count']) && $value['count'] > 0) { $this->values[$index]['name'] = $value['name'] . ' (' . $value['count'] . ')'; $this->values[$index]['count'] = $value['count']; } } } } return $this->values; }
protected function getBounds($includeCurrentParameters = false) { $start = $end = false; $sortField = ezfSolrDocumentFieldBase::getFieldName($this->contentClassAttribute, null, 'sort'); $currentParameters = array(); if ($includeCurrentParameters) { $currentParameters = OCClassSearchFormHelper::result()->getCurrentParameters(); } $fieldName = ezfSolrDocumentFieldBase::getFieldName($this->contentClassAttribute, null, 'search'); $params = array_merge(OCClassSearchFormHelper::result()->getBaseParameters(), $currentParameters, array('SearchContentClassID' => $this->contentClassAttribute->attribute('contentclass_id'), 'SearchLimit' => 1, 'SortBy' => array($sortField => 'asc'))); $startSearch = OCFacetNavgationHelper::fetch($params, OCClassSearchFormHelper::result()->searchText); /** @var $startSearchResults eZFindResultNode[] */ $startSearchResults = $startSearch['SearchResult']; if (isset($startSearchResults[0])) { $dataMap = $startSearchResults[0]->attribute('object')->attribute('data_map'); $start = $dataMap[$this->contentClassAttribute->attribute('identifier')]; } $params['SortBy'] = array($sortField => 'desc'); $endSearch = OCFacetNavgationHelper::fetch($params, OCClassSearchFormHelper::result()->searchText); /** @var $endSearchResults eZFindResultNode[] */ $endSearchResults = $endSearch['SearchResult']; if (isset($endSearchResults[0])) { $dataMap = $endSearchResults[0]->attribute('object')->attribute('data_map'); $end = $dataMap[$this->contentClassAttribute->attribute('identifier')]; } $className = $this->getBoundsClassName(); /** @var OCClassSearchFormFieldBoundsInterface $bounds */ $bounds = new $className(); $bounds->setStart($start); $bounds->setEnd($end); return $bounds; }
protected function getBounds($includeCurrentParameters = false) { $startTimestamp = $endTimestamp = 0; $currentParameters = array(); if ($includeCurrentParameters) { $currentParameters = OCClassSearchFormHelper::result()->getCurrentParameters(); } $params = array_merge(OCClassSearchFormHelper::result()->getBaseParameters(), $currentParameters, array('SearchContentClassID' => $this->currentClassId !== null ? array($this->currentClassId) : null, 'SearchLimit' => 1, 'SortBy' => array('published' => 'asc'))); $startSearch = OCFacetNavgationHelper::fetch($params, OCClassSearchFormHelper::result()->searchText); if (isset($startSearch['SearchResult'][0])) { $startTimestamp = $startSearch['SearchResult'][0]->attribute('object')->attribute('published'); } $params['SortBy'] = array('published' => 'desc'); $endSearch = OCFacetNavgationHelper::fetch($params, OCClassSearchFormHelper::result()->searchText); if (isset($endSearch['SearchResult'][0])) { $endTimestamp = $endSearch['SearchResult'][0]->attribute('object')->attribute('published'); } $data = new OCClassSearchFormPublishedFieldBounds(); $data->setStart($startTimestamp); $data->setEnd($endTimestamp); return $data; }
protected function getValues() { if ($this->values === null) { $this->values = array(); //@todo filter per parent_node //$classContent = $this->contentClassAttribute->content(); //$filters = isset( $classContent['default_placement']['node_id'] ) ? array( $classContent['default_placement']['node_id'] ) : array( 1 ); //@todo errore nella definzione del nome del sottoattributo? verifaicare vedi anche in self::buildFetch //$field = ezfSolrDocumentFieldBase::$DocumentFieldName->lookupSchemaName( // ezfSolrDocumentFieldBase::SUBMETA_FIELD_PREFIX . $this->contentClassAttribute->attribute( 'identifier' ) . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR . 'name', // 'string'); $field = ezfSolrDocumentFieldBase::$DocumentFieldName->lookupSchemaName(ezfSolrDocumentFieldBase::SUBATTR_FIELD_PREFIX . $this->contentClassAttribute->attribute('identifier') . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR . 'name' . ezfSolrDocumentFieldBase::SUBATTR_FIELD_SEPARATOR, 'string'); $facets = array('field' => $field, 'name' => $this->attributes['name'], 'limit' => 300, 'sort' => 'alpha'); $currentParameters = $baseParameters = array_merge(OCClassSearchFormHelper::result()->getBaseParameters(), array('SearchContentClassID' => array($this->contentClassAttribute->attribute('contentclass_id')), 'Facet' => array($facets), 'SearchLimit' => 1)); if (OCClassSearchFormHelper::result()->isFetch()) { $currentParameters = array_merge($currentParameters, OCClassSearchFormHelper::result()->getCurrentParameters()); } $data = OCFacetNavgationHelper::navigationList($baseParameters, $currentParameters, OCClassSearchFormHelper::result()->searchText, OCClassSearchFormHelper::result()->isFetch()); if (isset($data[$this->attributes['name']])) { $this->values = $data[$this->attributes['name']]; // setto i valori attivi e inietto il conto nel nome foreach ($this->values as $index => $value) { $current = (array) $this->attributes['value']; if (in_array($value['query'], $current)) { $this->values[$index]['active'] = true; } $this->values[$index]['query'] = OCFacetNavgationHelper::encodeValue($this->values[$index]['query']); $this->values[$index]['raw_name'] = $value['name']; if (isset($value['count']) && $value['count'] > 0) { $this->values[$index]['name'] = $value['name'] . ' (' . $value['count'] . ')'; $this->values[$index]['count'] = $value['count']; } } } } return $this->values; }
/** * @param array $parameters * * @return array */ protected function navigationList($parameters) { return OCFacetNavgationHelper::navigationList($parameters, $this->baseSearchParameters); }
protected function fetch() { if (self::$_result == null) { if ($this->isFetch()) { $params = OCFacetNavgationHelper::map(array_merge($this->baseParameters, $this->currentParameters)); self::$_result = OCFacetNavgationHelper::fetch($params, $this->searchText); if (self::$_result['SearchCount'] == 0) { eZDebug::writeNotice($params); eZDebug::writeNotice(self::$_result['SearchExtras']); } } else { self::$_result = false; } } return self::$_result; }
function modify(&$tpl, &$operatorName, &$operatorParameters, &$rootNamespace, &$currentNamespace, &$operatorValue, &$namedParameters) { switch ($operatorName) { case 'repository_list': $operatorValue = OCCrossSearch::listAvailableRepositories(); break; case 'class_search_result': try { $operatorValue = OCClassSearchFormHelper::result($namedParameters['parameters'], $namedParameters['fields'], true); } catch (Exception $e) { eZDebug::writeError($e->getMessage(), $operatorName); } break; case 'attribute_search_form': try { $operatorValue = OCClassSearchFormHelper::displayAttribute($namedParameters['helper'], $namedParameters['input_field']); } catch (Exception $e) { eZDebug::writeError($e->getMessage(), $operatorName); } break; case 'class_search_form': try { $operatorValue = OCClassSearchFormHelper::displayForm($namedParameters['class_identifier'], $namedParameters['parameters']); } catch (Exception $e) { eZDebug::writeError($e->getMessage(), $operatorName); } break; case 'strtotime': $operatorValue = strtotime($operatorValue); break; case 'calendar': $data = new OCCalendarData($namedParameters['node']); $data->setParameters($namedParameters['parameters']); $data->fetch(); $operatorValue = $data->data; break; case 'facet_navigation': $operatorValue = OCFacetNavgationHelper::data($namedParameters['base_query'], $namedParameters['override'], $namedParameters['base_uri']); break; case 'setFilterParameter': self::$filters[$namedParameters['name']][] = $namedParameters['value']; $this->log($namedParameters, 'setFilterParameter'); $operatorValue = self::$filters[$namedParameters['name']]; break; case 'getFilterParameter': $this->getAllFilters(); if (isset(self::$query_filters[$namedParameters['name']])) { $this->log($namedParameters['name'] . ': ' . var_export(self::$query_filters[$namedParameters['name']], true), 'getFilterParameter'); $operatorValue = is_array(self::$query_filters[$namedParameters['name']]) ? self::$query_filters[$namedParameters['name']] : array(self::$query_filters[$namedParameters['name']]); return true; } $operatorValue = array(); return false; break; case 'removeFilterParameter': $this->getAllFilters(); if (isset(self::$query_filters[$namedParameters['name']])) { self::$query_filters[$namedParameters['name']] = array(); return true; } return false; break; case 'getFilterParameters': $http = eZHTTPTool::instance(); $this->getAllFilters(); $filterList = self::$query_filters; if ($namedParameters['as_array']) { $operatorValue = $filterList; return; } $filterSearchHash = array(); if ($namedParameters['cond']) { $filterSearchHash[] = $namedParameters['cond']; } foreach ($filterList as $name => $value) { if (count($value) > 1) { $temp_array = array('or'); foreach ($value as $v) { $temp_array[] = $name . ':' . $v; } $filterSearchHash[] = $temp_array; } else { $filterSearchHash[] = $name . ':' . $value[0]; } } $this->log($filterSearchHash, 'getFilterParameters'); $operatorValue = $filterSearchHash; break; case 'getFilterUrlSuffix': $filterSearchHash = $operatorValue; $urlSuffix = ''; $tempArray = array(); foreach ($filterSearchHash as $filter) { if (is_array($filter)) { foreach ($filter as $f) { if ('and' != $f and 'or' != $f) { if (!in_array($f, $tempArray)) { $tempArray[] = $f; $urlSuffix .= '&filter[]=' . rawurlencode($f); } } } } else { if (!in_array($filter, $tempArray)) { $tempArray[] = $filter; $urlSuffix .= '&filter[]=' . rawurlencode($filter); } } } $operatorValue = $urlSuffix; break; case 'getFilterHiddenInput': $filterSearchHash = $operatorValue; $input = array(); $tempArray = array(); foreach ($filterSearchHash as $filter) { if (is_array($filter)) { foreach ($filter as $f) { if ('and' != $f and 'or' != $f) { if (!in_array($f, $tempArray)) { $tempArray[] = $f; $input[] = $f; } } } } else { if (!in_array($filter, $tempArray)) { $tempArray[] = $filter; $input[] = $filter; } } } $html = ''; foreach ($input as $i) { $html .= "<input type='hidden' name='filter[]' value='{$i}' />"; } $operatorValue = $html; break; case 'addQuoteOnFilter': $tempVar = $operatorValue; list($name, $value) = explode(':', $tempVar); $operatorValue = $name . ':"' . $value . '"'; break; case 'in_array_r': if ($this->recursiveArraySearch($namedParameters['needle'], $namedParameters['haystack']) !== false) { $operatorValue = true; return true; } $operatorValue = false; return false; break; case 'sort': sort($operatorValue); break; case 'asort': asort($operatorValue); break; case 'parsedate': $operatorValue = str_replace('"', '', $operatorValue); if (DateTime::createFromFormat("Y-m-d\\TH:i:sP", $operatorValue)) { $operatorValue = DateTime::createFromFormat("Y-m-d\\TH:i:sP", $operatorValue)->format("U"); } else { eZDebug::writeError($operatorValue . ': ' . var_export(DateTime::getLastErrors(), 1), 'parsedate'); $operatorValue = 0; } break; default: break; } }
public static function facetnavigation() { $http = eZHTTPTool::instance(); $json = $http->postVariable('json', null); if (is_array($json)) { $fetchParams = $json; } else { $fetchParams = json_decode($json, true); } $userParameters = $http->postVariable('userParameters', null); foreach ($userParameters as $key => $value) { if (empty($value)) { unset($userParameters[$key]); } } $template = $http->postVariable('template', null); $data = OCFacetNavgationHelper::data($fetchParams, $userParameters, '', isset($userParameters['query']) ? $userParameters['query'] : ''); $contentTpl = $template['content']; $navigationTpl = $template['navigation']; $tpl = eZTemplate::factory(); $tpl->setVariable('data', $data); $tpl->setVariable('view_parameters', $userParameters); if (is_array($contentTpl)) { foreach ($contentTpl as $key => $value) { if ($key != 'name') { $tpl->setVariable($key, $value); } } $content = $tpl->fetch('design:' . $contentTpl['name']); } else { $content = $tpl->fetch('design:' . $contentTpl); } $tpl = eZTemplate::factory(); $tpl->setVariable('data', $data); if (is_array($navigationTpl)) { foreach ($navigationTpl as $key => $value) { if ($key != 'name') { $tpl->setVariable($key, $value); } } $navigation = $tpl->fetch('design:' . $navigationTpl['name']); } else { $navigation = $tpl->fetch('design:' . $navigationTpl); } return array('content' => $content, 'navigation' => $navigation, 'fetch_paramters' => $data['fetch_parameters']); }