X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQuerySearch.php;h=f57d3a30cf5f7381a8e781634313f2e18e453e31;hb=5a6cf9c7cd7e315cbdd96c323cfc90bcb90c9f09;hp=2eb5d14ea3b70b2e8dcb29b8374b63576771ae39;hpb=47b93ded1388ce5712d0a816db4ddd3466609bcd;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php index 2eb5d14ea3..f57d3a30cf 100644 --- a/includes/api/ApiQuerySearch.php +++ b/includes/api/ApiQuerySearch.php @@ -24,6 +24,8 @@ * @file */ +use MediaWiki\MediaWikiServices; + /** * Query module to perform full text search within wiki titles and content * @@ -78,8 +80,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { } // Create search engine instance and set options - $search = isset( $params['backend'] ) && $params['backend'] != self::BACKEND_NULL_PARAM ? - SearchEngine::create( $params['backend'] ) : SearchEngine::create(); + $type = isset( $params['backend'] ) && $params['backend'] != self::BACKEND_NULL_PARAM ? + $params['backend'] : null; + $search = MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $type ); $search->setLimitOffset( $limit + 1, $params['offset'] ); $search->setNamespaces( $params['namespace'] ); $search->setFeatureData( 'rewrite', (bool)$params['enablerewrites'] ); @@ -95,7 +98,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { } elseif ( $what == 'nearmatch' ) { // near matches must receive the user input as provided, otherwise // the near matches within namespaces are lost. - $matches = SearchEngine::getNearMatchResultSet( $params['search'] ); + $matches = $search->getNearMatcher( $this->getConfig() ) + ->getNearMatchResultSet( $params['search'] ); } else { // We default to title searches; this is a terrible legacy // of the way we initially set up the MySQL fulltext-based @@ -116,7 +120,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { if ( is_null( $matches ) ) { $this->dieUsage( "{$what} search is disabled", "search-{$what}-disabled" ); } elseif ( $matches instanceof Status && !$matches->isGood() ) { - $this->dieUsage( $matches->getWikiText(), 'search-error' ); + $this->dieUsage( $matches->getWikiText( false, false, 'en' ), 'search-error' ); } if ( $resultPageSet === null ) { @@ -358,13 +362,14 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { 'enablerewrites' => false, ]; - $alternatives = SearchEngine::getSearchTypes(); + $searchConfig = MediaWikiServices::getInstance()->getSearchEngineConfig(); + $alternatives = $searchConfig->getSearchTypes(); if ( count( $alternatives ) > 1 ) { if ( $alternatives[0] === null ) { $alternatives[0] = self::BACKEND_NULL_PARAM; } $params['backend'] = [ - ApiBase::PARAM_DFLT => $this->getConfig()->get( 'SearchType' ), + ApiBase::PARAM_DFLT => $searchConfig->getSearchType(), ApiBase::PARAM_TYPE => $alternatives, ]; }