Unbreak creating extension tables from the web installer
[lhc/web/wiklou.git] / includes / installer / DatabaseUpdater.php
index 0d55454..04132ad 100644 (file)
@@ -150,7 +150,7 @@ abstract class DatabaseUpdater {
         * LoadExtensionSchemaUpdates hook.
         */
        private function loadExtensions() {
-               if ( !defined( 'MEDIAWIKI_INSTALL' ) ) {
+               if ( !defined( 'MEDIAWIKI_INSTALL' ) || defined( 'MW_EXTENSIONS_LOADED' ) ) {
                        return; // already loaded
                }
                $vars = Installer::getExistingLocalSettings();
@@ -162,7 +162,7 @@ abstract class DatabaseUpdater {
 
                // This will automatically add "AutoloadClasses" to $wgAutoloadClasses
                $data = $registry->readFromQueue( $queue );
-               $hooks = [ 'wgHooks' => [ 'LoadExtensionSchemaUpdates' => [] ] ];
+               $hooks = [];
                if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
                        $hooks = $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'];
                }
@@ -1263,4 +1263,23 @@ abstract class DatabaseUpdater {
                $this->output( "done.\n" );
        }
 
+       /**
+        * Populate ar_rev_id, then make it not nullable
+        * @since 1.31
+        */
+        protected function populateArchiveRevId() {
+                $info = $this->db->fieldInfo( 'archive', 'ar_rev_id', __METHOD__ );
+                if ( !$info ) {
+                        throw new MWException( 'Missing ar_rev_id field of archive table. Should not happen.' );
+                }
+                if ( $info->isNullable() ) {
+                        $this->output( "Populating ar_rev_id.\n" );
+                        $task = $this->maintenance->runChild( 'PopulateArchiveRevId', 'populateArchiveRevId.php' );
+                        if ( $task->execute() ) {
+                                $this->applyPatch( 'patch-ar_rev_id-not-null.sql', false,
+                                        'Making ar_rev_id not nullable' );
+                        }
+                }
+        }
+
 }