X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Finstaller%2FMysqlUpdater.php;h=bc7725e93ff11e12ab7c5e26f0c82fb788ca5eaa;hb=827c6bfa416d9d0de8cc8e22f9f3fa36d8129d44;hp=e2ff9604a2330206b2f55b4ec75fb9720beee3ac;hpb=17e88d99eb768e4181207bbd35656d239ef5d4e8;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index e2ff9604a2..bc7725e93f 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -20,8 +20,8 @@ * @file * @ingroup Deployment */ -use Wikimedia\Rdbms\Field; use Wikimedia\Rdbms\MySQLField; +use Wikimedia\Rdbms\IDatabase; use MediaWiki\MediaWikiServices; /** @@ -83,7 +83,7 @@ class MysqlUpdater extends DatabaseUpdater { [ 'doUserUniqueUpdate' ], [ 'doUserGroupsUpdate' ], [ 'addField', 'site_stats', 'ss_total_pages', 'patch-ss_total_articles.sql' ], - [ 'addTable', 'user_newtalk', 'patch-usernewtalk2.sql' ], + [ 'addTable', 'user_newtalk', 'patch-usernewtalk.sql' ], [ 'addTable', 'transcache', 'patch-transcache.sql' ], [ 'addField', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ], @@ -329,6 +329,12 @@ class MysqlUpdater extends DatabaseUpdater { [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false, 'patch-l10n_cache-primary-key.sql' ], [ 'doUnsignedSyncronisation' ], + + // 1.31 + [ 'addTable', 'slots', 'patch-slots.sql' ], + [ 'addTable', 'content', 'patch-content.sql' ], + [ 'addTable', 'slot_roles', 'patch-slot_roles.sql' ], + [ 'addTable', 'content_models', 'patch-content_models.sql' ], ]; } @@ -390,7 +396,7 @@ class MysqlUpdater extends DatabaseUpdater { global $IP; if ( !$this->doTable( 'interwiki' ) ) { - return true; + return; } if ( $this->db->tableExists( "interwiki", __METHOD__ ) ) { @@ -531,25 +537,12 @@ class MysqlUpdater extends DatabaseUpdater { ) ); } $sql = "SELECT cur_title, cur_namespace, cur_id, cur_timestamp FROM $cur WHERE "; - $firstCond = true; + $dupeTitles = []; foreach ( $duplicate as $ns => $titles ) { - if ( $firstCond ) { - $firstCond = false; - } else { - $sql .= ' OR '; - } - $sql .= "( cur_namespace = {$ns} AND cur_title in ("; - $first = true; - foreach ( $titles as $t ) { - if ( $first ) { - $sql .= $this->db->addQuotes( $t ); - $first = false; - } else { - $sql .= ', ' . $this->db->addQuotes( $t ); - } - } - $sql .= ") ) \n"; + $dupeTitles[] = "( cur_namespace = {$ns} AND cur_title in (" + . $this->db->makeList( $titles ) . ") ) \n"; } + $sql .= $this->db->makeList( $dupeTitles, IDatabase::LIST_OR ); # By sorting descending, the most recent entry will be the first in the list. # All following entries will be deleted by the next while-loop. $sql .= 'ORDER BY cur_namespace, cur_title, cur_timestamp DESC';