X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fsearch%2FSearchEngineFactory.php;h=a2f6a7546f80abdc84777c51247e12b60e8d352f;hb=4f3d131492de5491d4be6d8d67d786b0703a8c49;hp=ecb6f43e6478151f30461238d89001d401eaaac0;hpb=f506a05aaa035b96537b33244b0f18b093048e97;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/search/SearchEngineFactory.php b/includes/search/SearchEngineFactory.php index ecb6f43e64..a2f6a7546f 100644 --- a/includes/search/SearchEngineFactory.php +++ b/includes/search/SearchEngineFactory.php @@ -1,6 +1,8 @@ config->getSearchType(); + $alternativesClasses = $this->config->getSearchTypes(); - $configType = $this->config->getSearchType(); - $alternatives = $this->config->getSearchTypes(); - - if ( $type && in_array( $type, $alternatives ) ) { + $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); + if ( $type !== null && in_array( $type, $alternativesClasses ) ) { $class = $type; - } elseif ( $configType !== null ) { - $class = $configType; + } elseif ( $configuredClass !== null ) { + $class = $configuredClass; } else { - $dbr = wfGetDB( DB_REPLICA ); - $class = self::getSearchEngineClass( $dbr ); + $class = self::getSearchEngineClass( $lb ); } - $search = new $class( $dbr ); - return $search; + if ( is_subclass_of( $class, SearchDatabase::class ) ) { + return new $class( $lb ); + } else { + return new $class(); + } } /** - * @param IDatabase $db + * @param IDatabase|ILoadBalancer $dbOrLb * @return string SearchEngine subclass name * @since 1.28 */ - public static function getSearchEngineClass( IDatabase $db ) { - switch ( $db->getType() ) { + public static function getSearchEngineClass( $dbOrLb ) { + $type = ( $dbOrLb instanceof IDatabase ) + ? $dbOrLb->getType() + : $dbOrLb->getServerType( $dbOrLb->getWriterIndex() ); + + switch ( $type ) { case 'sqlite': return SearchSqlite::class; case 'mysql': return SearchMySQL::class; case 'postgres': return SearchPostgres::class; - case 'mssql': - return SearchMssql::class; - case 'oracle': - return SearchOracle::class; default: return SearchEngineDummy::class; }