Merge "Add SPARQL client to core"
[lhc/web/wiklou.git] / includes / search / SearchEngineFactory.php
index e30869e..8cdca57 100644 (file)
@@ -1,11 +1,12 @@
 <?php
 
+use Wikimedia\Rdbms\IDatabase;
+
 /**
  * Factory class for SearchEngine.
  * Allows to create engine of the specific type.
  */
 class SearchEngineFactory {
-
        /**
         * Configuration for SearchEngine classes.
         * @var SearchEngineConfig
@@ -33,10 +34,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::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;
+               }
+       }
 }