From d2202b84141ff8f31a24ca09aa5de07b78e75bab Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 15 Sep 2016 19:33:52 -0700 Subject: [PATCH] Add SearchEngineFactory::getSearchEngineClass() instead of using the DB Change-Id: I46207cafec737cb830adc2bdf1b501a0d138b40d --- includes/search/SearchEngineFactory.php | 25 +++++++++++++++++-- .../includes/search/SearchEngineTest.php | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/includes/search/SearchEngineFactory.php b/includes/search/SearchEngineFactory.php index e30869e19b..a767bc3130 100644 --- a/includes/search/SearchEngineFactory.php +++ b/includes/search/SearchEngineFactory.php @@ -5,7 +5,6 @@ * Allows to create engine of the specific type. */ class SearchEngineFactory { - /** * Configuration for SearchEngine classes. * @var SearchEngineConfig @@ -33,10 +32,32 @@ class SearchEngineFactory { $class = $configType; } else { $dbr = wfGetDB( DB_REPLICA ); - $class = $dbr->getSearchEngine(); + $class = self::getSearchEngineClass( $dbr ); } $search = new $class( $dbr ); return $search; } + + /** + * @param IDatabase $db + * @return string SearchEngine subclass name + * @since 1.28 + */ + public static function getSearchEngineClass( IDatabase $db ) { + switch ( $db->getType() ) { + case 'sqlite': + return 'SearchSqlite'; + case 'mysql': + return 'SearchMySQL'; + case 'postgres': + return 'SearchPostgres'; + case 'mssql': + return 'SearchMssql'; + case 'oracle': + return 'SearchOracle'; + default: + return 'SearchEngineDummy'; + } + } } diff --git a/tests/phpunit/includes/search/SearchEngineTest.php b/tests/phpunit/includes/search/SearchEngineTest.php index 902fc9ea7d..3fb4bbbb1f 100644 --- a/tests/phpunit/includes/search/SearchEngineTest.php +++ b/tests/phpunit/includes/search/SearchEngineTest.php @@ -30,7 +30,7 @@ class SearchEngineTest extends MediaWikiLangTestCase { $this->markTestSkipped( "MySQL or SQLite with FTS3 only" ); } - $searchType = $this->db->getSearchEngine(); + $searchType = SearchEngineFactory::getSearchEngineClass( $this->db ); $this->setMwGlobals( [ 'wgSearchType' => $searchType ] ); -- 2.20.1