X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=includes%2Frevisiondelete%2FRevDelRevisionList.php;h=07362c422ff1e82ef5a2acff8702bc92afb94881;hb=74426f3cf796b149f1ae445e41815bbe148640b2;hp=27e51486119dad1f0c8d20fd099abc43a408a60f;hpb=c33f3c5a6761cf5cefb770b86c01e2514d2799f1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/revisiondelete/RevDelRevisionList.php b/includes/revisiondelete/RevDelRevisionList.php index 27e5148611..07362c422f 100644 --- a/includes/revisiondelete/RevDelRevisionList.php +++ b/includes/revisiondelete/RevDelRevisionList.php @@ -19,6 +19,9 @@ * @ingroup RevisionDelete */ +use Wikimedia\Rdbms\FakeResultWrapper; +use Wikimedia\Rdbms\IDatabase; + /** * List for revision table items * @@ -59,18 +62,19 @@ class RevDelRevisionList extends RevDelList { */ public function doQuery( $db ) { $ids = array_map( 'intval', $this->ids ); + $revQuery = Revision::getQueryInfo( [ 'page', 'user' ] ); $queryInfo = [ - 'tables' => [ 'revision', 'user' ], - 'fields' => array_merge( Revision::selectFields(), Revision::selectUserFields() ), + 'tables' => $revQuery['tables'], + 'fields' => $revQuery['fields'], 'conds' => [ 'rev_page' => $this->title->getArticleID(), 'rev_id' => $ids, ], - 'options' => [ 'ORDER BY' => 'rev_id DESC' ], - 'join_conds' => [ - 'page' => Revision::pageJoinCond(), - 'user' => Revision::userJoinCond(), + 'options' => [ + 'ORDER BY' => 'rev_id DESC', + 'USE INDEX' => [ 'revision' => 'PRIMARY' ] // workaround for MySQL bug (T104313) ], + 'join_conds' => $revQuery['joins'], ]; ChangeTags::modifyDisplayQuery( $queryInfo['tables'], @@ -94,14 +98,15 @@ class RevDelRevisionList extends RevDelList { return $live; } + $arQuery = Revision::getArchiveQueryInfo(); $archiveQueryInfo = [ - 'tables' => [ 'archive' ], - 'fields' => Revision::selectArchiveFields(), + 'tables' => $arQuery['tables'], + 'fields' => $arQuery['fields'], 'conds' => [ 'ar_rev_id' => $ids, ], 'options' => [ 'ORDER BY' => 'ar_rev_id DESC' ], - 'join_conds' => [], + 'join_conds' => $arQuery['joins'], ]; ChangeTags::modifyDisplayQuery( @@ -170,10 +175,10 @@ class RevDelRevisionList extends RevDelList { return Status::newGood(); } - public function doPostCommitUpdates() { + public function doPostCommitUpdates( array $visibilityChangeMap ) { $this->title->purgeSquid(); // Extensions that require referencing previous revisions may need this - Hooks::run( 'ArticleRevisionVisibilitySet', [ $this->title, $this->ids ] ); + Hooks::run( 'ArticleRevisionVisibilitySet', [ $this->title, $this->ids, $visibilityChangeMap ] ); return Status::newGood(); } }