Example #1
0
 /**
  * Initializes additional filters configured through TypoScript and
  * Flexforms for use in regular queries and suggest queries.
  *
  * @param Query $query
  * @return void
  */
 protected function initializeAdditionalFilters(Query $query)
 {
     $additionalFilters = array();
     if (!empty($this->conf['search.']['query.']['filter.'])) {
         // special filter to limit search to specific page tree branches
         if (array_key_exists('__pageSections', $this->conf['search.']['query.']['filter.'])) {
             $query->setRootlineFilter($this->conf['search.']['query.']['filter.']['__pageSections']);
             unset($this->conf['search.']['query.']['filter.']['__pageSections']);
         }
         // all other regular filters
         foreach ($this->conf['search.']['query.']['filter.'] as $filterKey => $filter) {
             if (!is_array($this->conf['search.']['query.']['filter.'][$filterKey])) {
                 if (is_array($this->conf['search.']['query.']['filter.'][$filterKey . '.'])) {
                     $filter = $this->cObj->stdWrap($this->conf['search.']['query.']['filter.'][$filterKey], $this->conf['search.']['query.']['filter.'][$filterKey . '.']);
                 }
                 $additionalFilters[$filterKey] = $filter;
             }
         }
     }
     // flexform overwrites _all_ filters set through TypoScript
     $flexformFilters = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'filter', 'sQuery');
     if (!empty($flexformFilters)) {
         $additionalFilters = GeneralUtility::trimExplode('|', $flexformFilters);
     }
     $this->additionalFilters = $additionalFilters;
 }
 /**
  * Initializes additional filters configured through TypoScript and
  * Flexforms for use in regular queries and suggest queries.
  *
  * @param Query $query
  * @return void
  */
 protected function applyPageSectionsRootLineFilter(Query $query)
 {
     $searchQueryFilters = $this->typoScriptConfiguration->getSearchQueryFilterConfiguration();
     if (count($searchQueryFilters) <= 0) {
         return;
     }
     // special filter to limit search to specific page tree branches
     if (array_key_exists('__pageSections', $searchQueryFilters)) {
         $query->setRootlineFilter($searchQueryFilters['__pageSections']);
         $this->typoScriptConfiguration->removeSearchQueryFilterForPageSections();
     }
 }