/** * 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; }
/** * @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; }