Merge "Move DB errors to Rdbms namespace"
[lhc/web/wiklou.git] / includes / installer / MysqlInstaller.php
index 812742c..09051f4 100644 (file)
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBConnectionError;
+
 /**
  * Class for setting up the MediaWiki database using MySQL.
  *
@@ -124,7 +128,7 @@ class MysqlInstaller extends DatabaseInstaller {
                        return $status;
                }
                /**
-                * @var $conn DatabaseBase
+                * @var $conn Database
                 */
                $conn = $status->value;
 
@@ -168,7 +172,7 @@ class MysqlInstaller extends DatabaseInstaller {
                        return;
                }
                /**
-                * @var $conn DatabaseBase
+                * @var $conn Database
                 */
                $conn = $status->value;
                $conn->selectDB( $this->getVar( 'wgDBname' ) );
@@ -226,7 +230,7 @@ class MysqlInstaller extends DatabaseInstaller {
                $status = $this->getConnection();
 
                /**
-                * @var $conn DatabaseBase
+                * @var $conn Database
                 */
                $conn = $status->value;
 
@@ -312,7 +316,7 @@ class MysqlInstaller extends DatabaseInstaller {
                                'IS_GRANTABLE' => 1,
                        ], __METHOD__ );
                foreach ( $res as $row ) {
-                       $regex = $conn->likeToRegex( $row->TABLE_SCHEMA );
+                       $regex = $this->likeToRegex( $row->TABLE_SCHEMA );
                        if ( preg_match( $regex, $this->getVar( 'wgDBname' ) ) ) {
                                unset( $grantOptions[$row->PRIVILEGE_TYPE] );
                        }
@@ -325,6 +329,19 @@ class MysqlInstaller extends DatabaseInstaller {
                return true;
        }
 
+       /**
+        * Convert a wildcard (as used in LIKE) to a regex
+        * Slashes are escaped, slash terminators included
+        */
+       protected function likeToRegex( $wildcard ) {
+               $r = preg_quote( $wildcard, '/' );
+               $r = strtr( $r, [
+                       '%' => '.*',
+                       '_' => '.'
+               ] );
+               return "/$r/s";
+       }
+
        /**
         * @return string
         */