示例#1
0
 /**
  * Provides the values for the markers in the simple form template
  *
  * @return array An array containing values for markers in the simple form template
  * @throws \InvalidArgumentException if an registered form modifier fails to implement the required interface ApacheSolrForTypo3\Solr\Plugin\FormModifier
  */
 public function execute()
 {
     $url = $this->cObj->getTypoLink_URL($this->parentPlugin->typoScriptConfiguration->getSearchTargetPage());
     $marker = array('action' => htmlspecialchars($url), 'action_id' => intval($this->parentPlugin->typoScriptConfiguration->getSearchTargetPage()), 'action_language' => intval($GLOBALS['TSFE']->sys_page->sys_language_uid), 'action_language_parameter' => 'L', 'accept-charset' => $GLOBALS['TSFE']->metaCharset, 'q' => $this->parentPlugin->getCleanUserQuery());
     // hook to modify the search form
     if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['modifySearchForm'])) {
         foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['modifySearchForm'] as $classReference) {
             $formModifier = GeneralUtility::getUserObj($classReference);
             if ($formModifier instanceof FormModifier) {
                 if ($formModifier instanceof CommandPluginAware) {
                     $formModifier->setParentPlugin($this->parentPlugin);
                 }
                 $marker = $formModifier->modifyForm($marker, $this->parentPlugin->getTemplate());
             } else {
                 throw new \InvalidArgumentException('Form modifier "' . $classReference . '" must implement the ApacheSolrForTypo3\\Solr\\Plugin\\FormModifier interface.', 1262864703);
             }
         }
     }
     return $marker;
 }
示例#2
0
 /**
  * Returns the eID URL for the AJAX suggestion request.
  *
  * @author Mario Rimann <*****@*****.**>
  * @return string the full URL to the eID script including the needed parameters
  */
 protected function getSuggestEidUrl()
 {
     $suggestUrl = GeneralUtility::getIndpEnv('TYPO3_SITE_URL');
     if ($this->configuration['suggest.']['forceHttps']) {
         $suggestUrl = str_replace('http://', 'https://', $suggestUrl);
     }
     $suggestUrl .= '?eID=tx_solr_suggest&id=' . $GLOBALS['TSFE']->id;
     // add filters
     $additionalFilters = $this->parentPlugin->getAdditionalFilters();
     if (!empty($additionalFilters)) {
         $additionalFilters = json_encode($additionalFilters);
         $additionalFilters = rawurlencode($additionalFilters);
         $suggestUrl .= '&filters=' . $additionalFilters;
     }
     // adds the language parameter to the suggest URL
     if ($GLOBALS['TSFE']->sys_language_uid > 0) {
         $suggestUrl .= '&L=' . $GLOBALS['TSFE']->sys_language_uid;
     }
     return $suggestUrl;
 }
示例#3
0
 /**
  * Constructor.
  *
  * @param CommandPluginBase $parentPlugin Parent plugin object.
  */
 public function __construct(CommandPluginBase $parentPlugin)
 {
     $this->parentPlugin = $parentPlugin;
     $this->configuration = $parentPlugin->typoScriptConfiguration;
     $this->search = $parentPlugin->getSearchResultSetService()->getSearch();
 }
示例#4
0
 /**
  * Performs special search initialization for the result plugin.
  *
  */
 protected function initializeSearch()
 {
     parent::initializeSearch();
     $rawUserQuery = $this->getRawUserQuery();
     /* @var $query Query */
     $query = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Query', $rawUserQuery);
     $this->initializeAdditionalFilters($query);
     // TODO check whether a search has been conducted already?
     if ($this->solrAvailable && (isset($rawUserQuery) || $this->conf['search.']['initializeWithEmptyQuery'] || $this->conf['search.']['initializeWithQuery'])) {
         if ($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']['logging.']['query.']['searchWords']) {
             GeneralUtility::devLog('received search query', 'solr', 0, array($rawUserQuery));
         }
         $resultsPerPage = $this->getNumberOfResultsPerPage();
         $query->setResultsPerPage($resultsPerPage);
         $searchComponents = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Search\\SearchComponentManager')->getSearchComponents();
         foreach ($searchComponents as $searchComponent) {
             $searchComponent->setSearchConfiguration($this->conf['search.']);
             if ($searchComponent instanceof QueryAware) {
                 $searchComponent->setQuery($query);
             }
             if ($searchComponent instanceof PluginAware) {
                 $searchComponent->setParentPlugin($this);
             }
             $searchComponent->initializeSearchComponent();
         }
         if ($this->conf['search.']['initializeWithEmptyQuery'] || $this->conf['search.']['query.']['allowEmptyQuery']) {
             // empty main query, but using a "return everything"
             // alternative query in q.alt
             $query->setAlternativeQuery('*:*');
         }
         if ($this->conf['search.']['initializeWithQuery']) {
             $query->setAlternativeQuery($this->conf['search.']['initializeWithQuery']);
         }
         foreach ($this->additionalFilters as $additionalFilter) {
             $query->addFilter($additionalFilter);
         }
         $this->query = $query;
     }
 }
 /**
  * Modifies the search form by providing an additional marker showing
  * the parsed lucene query used by Solr.
  *
  * @param array $markers An array of existing form markers
  * @param Template $template An instance of the template engine
  * @return array Array with additional markers for queryAnalysis
  */
 public function modifyForm(array $markers, Template $template)
 {
     $markers['debug_query'] = '<br><strong>Parsed Query:</strong><br>' . $this->parentPlugin->getSearch()->getDebugResponse()->parsedquery;
     return $markers;
 }
示例#6
0
 /**
  * Constructor.
  *
  * @param CommandPluginBase $parentPlugin Parent plugin object.
  */
 public function __construct(CommandPluginBase $parentPlugin)
 {
     $this->parentPlugin = $parentPlugin;
     $this->configuration = $parentPlugin->conf;
     $this->search = $parentPlugin->getSearch();
 }
示例#7
0
 /**
  * Performs special search initialization for the result plugin.
  *
  */
 protected function initializeSearch()
 {
     parent::initializeSearch();
     $this->initializeAdditionalFilters();
 }