/** * Initializes additional filters configured through TypoScript and * Flexforms for use in regular queries and suggest queries. * * @param Tx_Solr_Query $query * @return void */ protected function initializeAdditionalFilters(Tx_Solr_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; }