Disable $wgContentHandlerUseDB during upgrade where fields don't exist.
They can cause problems if, for example, the installation has hooks for UserSaveSettings or UserSaveOptions that try to update a user page. Change-Id: I31078678e8939c897b1357bcb77eb2d26f806f29 Bug: 47271
This commit is contained in:
parent
e61cb8218b
commit
08d3afc971
4 changed files with 54 additions and 13 deletions
|
|
@ -88,6 +88,11 @@ abstract class DatabaseUpdater {
|
|||
*/
|
||||
protected $skipSchema = false;
|
||||
|
||||
/**
|
||||
* Hold the value of $wgContentHandlerUseDB during the upgrade.
|
||||
*/
|
||||
protected $holdContentHandlerUseDB = true;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
|
|
@ -1033,4 +1038,30 @@ abstract class DatabaseUpdater {
|
|||
$cl->execute();
|
||||
$this->output( "done.\n" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off content handler fields during parts of the upgrade
|
||||
* where they aren't available.
|
||||
*/
|
||||
protected function disableContentHandlerUseDB() {
|
||||
global $wgContentHandlerUseDB;
|
||||
|
||||
if( $wgContentHandlerUseDB ) {
|
||||
$this->output( "Turning off Content Handler DB fields for this part of upgrade.\n" );
|
||||
$this->holdContentHandlerUseDB = $wgContentHandlerUseDB;
|
||||
$wgContentHandlerUseDB = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns content handler fields back on.
|
||||
*/
|
||||
protected function enableContentHandlerUseDB() {
|
||||
global $wgContentHandlerUseDB;
|
||||
|
||||
if( $this->holdContentHandlerUseDB ) {
|
||||
$this->output( "Content Handler DB fields should be usable now.\n" );
|
||||
$wgContentHandlerUseDB = $this->holdContentHandlerUseDB;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,9 +31,11 @@ class MysqlUpdater extends DatabaseUpdater {
|
|||
|
||||
protected function getCoreUpdateList() {
|
||||
return array(
|
||||
array( 'disableContentHandlerUseDB' ),
|
||||
|
||||
// 1.2
|
||||
array( 'addField', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ),
|
||||
array( 'addField', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ),
|
||||
array( 'addField', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ),
|
||||
array( 'addField', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ),
|
||||
array( 'doInterwikiUpdate' ),
|
||||
array( 'doIndexUpdate' ),
|
||||
array( 'addTable', 'hitcounter', 'patch-hitcounter.sql' ),
|
||||
|
|
@ -215,12 +217,13 @@ class MysqlUpdater extends DatabaseUpdater {
|
|||
// 1.21
|
||||
array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
|
||||
array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
|
||||
array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
|
||||
array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
|
||||
array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
|
||||
array( 'addTable', 'sites', 'patch-sites.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
|
||||
array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
|
||||
array( 'enableContentHandlerUseDB' ),
|
||||
array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
|
||||
array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
|
||||
array( 'addTable', 'sites', 'patch-sites.sql' ),
|
||||
array( 'addField', 'filearchive', 'fa_sha1', 'patch-fa_sha1.sql' ),
|
||||
array( 'addField', 'job', 'job_token', 'patch-job_token.sql' ),
|
||||
array( 'addField', 'job', 'job_attempts', 'patch-job_attempts.sql' ),
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ class OracleUpdater extends DatabaseUpdater {
|
|||
|
||||
protected function getCoreUpdateList() {
|
||||
return array(
|
||||
array( 'disableContentHandlerUseDB' ),
|
||||
|
||||
// 1.17
|
||||
array( 'doNamespaceDefaults' ),
|
||||
array( 'doFKRenameDeferr' ),
|
||||
|
|
@ -79,6 +81,7 @@ class OracleUpdater extends DatabaseUpdater {
|
|||
array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
|
||||
array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
|
||||
array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
|
||||
array( 'enableContentHandlerUseDB' ),
|
||||
array( 'dropField', 'site_stats', 'ss_admins', 'patch-ss_admins.sql' ),
|
||||
array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
|
||||
array( 'addTable', 'sites', 'patch-sites.sql' ),
|
||||
|
|
|
|||
|
|
@ -31,8 +31,10 @@ class SqliteUpdater extends DatabaseUpdater {
|
|||
|
||||
protected function getCoreUpdateList() {
|
||||
return array(
|
||||
array( 'disableContentHandlerUseDB' ),
|
||||
|
||||
// 1.14
|
||||
array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
|
||||
array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
|
||||
array( 'doActiveUsersInit' ),
|
||||
array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
|
||||
array( 'sqliteInitialIndexes' ),
|
||||
|
|
@ -94,10 +96,12 @@ class SqliteUpdater extends DatabaseUpdater {
|
|||
// 1.21
|
||||
array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
|
||||
array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
|
||||
array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
|
||||
array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_format', 'patch-archive-ar_content_format.sql' ),
|
||||
array( 'addField', 'archive', 'ar_content_model', 'patch-archive-ar_content_model.sql' ),
|
||||
array( 'addField', 'page', 'page_content_model', 'patch-page-page_content_model.sql' ),
|
||||
array( 'enableContentHandlerUseDB' ),
|
||||
|
||||
array( 'dropField', 'site_stats', 'ss_admins', 'patch-drop-ss_admins.sql' ),
|
||||
array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
|
||||
array( 'addTable', 'sites', 'patch-sites.sql' ),
|
||||
array( 'addField', 'filearchive', 'fa_sha1', 'patch-fa_sha1.sql' ),
|
||||
|
|
|
|||
Loading…
Reference in a new issue