* LoadExtensionSchemaUpdates hook.
*/
private function loadExtensions() {
- if ( !defined( 'MEDIAWIKI_INSTALL' ) ) {
+ if ( !defined( 'MEDIAWIKI_INSTALL' ) || defined( 'MW_EXTENSIONS_LOADED' ) ) {
return; // already loaded
}
$vars = Installer::getExistingLocalSettings();
// 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'];
}
"maintenance/migrateComments.php.\n"
);
$task = $this->maintenance->runChild( MigrateComments::class, 'migrateComments.php' );
- $task->execute();
+ $ok = $task->execute();
$this->output( $ok ? "done.\n" : "errors were encountered.\n" );
}
}
* @since 1.31
*/
protected function migrateArchiveText() {
- $this->output( "Migrating archive ar_text to modern storage.\n" );
- $task = $this->maintenance->runChild( MigrateArchiveText::class, 'migrateArchiveText.php' );
- $task->execute();
- $this->output( "done.\n" );
+ if ( $this->db->fieldExists( 'archive', 'ar_text', __METHOD__ ) ) {
+ $this->output( "Migrating archive ar_text to modern storage.\n" );
+ $task = $this->maintenance->runChild( MigrateArchiveText::class, 'migrateArchiveText.php' );
+ $task->setForce();
+ if ( $task->execute() ) {
+ $this->applyPatch( 'patch-drop-ar_text.sql', false,
+ 'Dropping ar_text and ar_flags columns' );
+ }
+ }
}
+ /**
+ * 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' );
+ }
+ }
+ }
+
}