/**
  * Create SearchEngine of the given type.
  * @param string $type
  * @return SearchEngine
  */
 public function create($type = null)
 {
     $dbr = null;
     $configType = $this->config->getSearchType();
     $alternatives = $this->config->getSearchTypes();
     if ($type && in_array($type, $alternatives)) {
         $class = $type;
     } elseif ($configType !== null) {
         $class = $configType;
     } else {
         $dbr = wfGetDB(DB_REPLICA);
         $class = self::getSearchEngineClass($dbr);
     }
     $search = new $class($dbr);
     return $search;
 }
Example #2
0
 /**
  * @return array
  */
 protected function getSearchProfiles()
 {
     // Builds list of Search Types (profiles)
     $nsAllSet = array_keys($this->searchConfig->searchableNamespaces());
     $defaultNs = $this->searchConfig->defaultNamespaces();
     $profiles = ['default' => ['message' => 'searchprofile-articles', 'tooltip' => 'searchprofile-articles-tooltip', 'namespaces' => $defaultNs, 'namespace-messages' => $this->searchConfig->namespacesAsText($defaultNs)], 'images' => ['message' => 'searchprofile-images', 'tooltip' => 'searchprofile-images-tooltip', 'namespaces' => [NS_FILE]], 'all' => ['message' => 'searchprofile-everything', 'tooltip' => 'searchprofile-everything-tooltip', 'namespaces' => $nsAllSet], 'advanced' => ['message' => 'searchprofile-advanced', 'tooltip' => 'searchprofile-advanced-tooltip', 'namespaces' => self::NAMESPACES_CURRENT]];
     Hooks::run('SpecialSearchProfiles', [&$profiles]);
     foreach ($profiles as &$data) {
         if (!is_array($data['namespaces'])) {
             continue;
         }
         sort($data['namespaces']);
     }
     return $profiles;
 }