X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fpage%2FWikiPage.php;h=c8566ac8772934af69be9516d39cb373b7c0b5f4;hp=fea1bf64ef7c51145876ff9b21fd6dbb2bb03648;hb=fa0f6f34972c0e0f4aac24a03b3efdfc45f256f6;hpb=50ea56e349d62c48c69c22bbdf91514c7a9e77e1 diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index fea1bf64ef..c8566ac877 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -726,7 +726,7 @@ class WikiPage implements Page, IDBAccessObject { // Try using the replica DB first, then try the master $rev = $this->mTitle->getFirstRevision(); if ( !$rev ) { - $rev = $this->mTitle->getFirstRevision( Title::GAID_FOR_UPDATE ); + $rev = $this->mTitle->getFirstRevision( Title::READ_LATEST ); } return $rev; } @@ -1896,7 +1896,8 @@ class WikiPage implements Page, IDBAccessObject { // TODO: this check is here for backwards-compatibility with 1.31 behavior. // Checking the minoredit right should be done in the same place the 'bot' right is // checked for the EDIT_FORCE_BOT flag, which is currently in EditPage::attemptSave. - if ( ( $flags & EDIT_MINOR ) && !$user->isAllowed( 'minoredit' ) ) { + $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); + if ( ( $flags & EDIT_MINOR ) && !$permissionManager->userHasRight( $user, 'minoredit' ) ) { $flags = ( $flags & ~EDIT_MINOR ); } @@ -1916,7 +1917,6 @@ class WikiPage implements Page, IDBAccessObject { // TODO: this logic should not be in the storage layer, it's here for compatibility // with 1.31 behavior. Applying the 'autopatrol' right should be done in the same // place the 'bot' right is handled, which is currently in EditPage::attemptSave. - $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); if ( $needsPatrol && $permissionManager->userCan( 'autopatrol', $user, $this->getTitle() @@ -2841,7 +2841,7 @@ class WikiPage implements Page, IDBAccessObject { */ protected function archiveRevisions( $dbw, $id, $suppress ) { global $wgContentHandlerUseDB, $wgMultiContentRevisionSchemaMigrationStage, - $wgActorTableSchemaMigrationStage, $wgDeleteRevisionsBatchSize; + $wgDeleteRevisionsBatchSize; // Given the lock above, we can be confident in the title and page ID values $namespace = $this->getTitle()->getNamespace(); @@ -2968,9 +2968,7 @@ class WikiPage implements Page, IDBAccessObject { $dbw->delete( 'revision', [ 'rev_id' => $revids ], __METHOD__ ); $dbw->delete( 'revision_comment_temp', [ 'revcomment_rev' => $revids ], __METHOD__ ); - if ( $wgActorTableSchemaMigrationStage & SCHEMA_COMPAT_WRITE_NEW ) { - $dbw->delete( 'revision_actor_temp', [ 'revactor_rev' => $revids ], __METHOD__ ); - } + $dbw->delete( 'revision_actor_temp', [ 'revactor_rev' => $revids ], __METHOD__ ); // Also delete records from ip_changes as applicable. if ( count( $ipRevIds ) > 0 ) { @@ -3251,14 +3249,12 @@ class WikiPage implements Page, IDBAccessObject { // Save $flags = EDIT_UPDATE | EDIT_INTERNAL; - if ( $guser->isAllowed( 'minoredit' ) ) { + $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); + if ( $permissionManager->userHasRight( $guser, 'minoredit' ) ) { $flags |= EDIT_MINOR; } - if ( $bot && ( MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasAnyRight( $guser, 'markbotedits', 'bot' ) ) - ) { + if ( $bot && ( $permissionManager->userHasAnyRight( $guser, 'markbotedits', 'bot' ) ) ) { $flags |= EDIT_FORCE_BOT; } @@ -3293,7 +3289,6 @@ class WikiPage implements Page, IDBAccessObject { // TODO: this logic should not be in the storage layer, it's here for compatibility // with 1.31 behavior. Applying the 'autopatrol' right should be done in the same // place the 'bot' right is handled, which is currently in EditPage::attemptSave. - $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); if ( $wgUseRCPatrol && $permissionManager->userCan( 'autopatrol', $guser, $this->getTitle() @@ -3310,7 +3305,7 @@ class WikiPage implements Page, IDBAccessObject { // Set patrolling and bot flag on the edits, which gets rollbacked. // This is done even on edit failure to have patrolling in that case (T64157). $set = []; - if ( $bot && $guser->isAllowed( 'markbotedits' ) ) { + if ( $bot && $permissionManager->userHasRight( $guser, 'markbotedits' ) ) { // Mark all reverted edits as bot $set['rc_bot'] = 1; } @@ -3409,9 +3404,12 @@ class WikiPage implements Page, IDBAccessObject { MediaWikiServices::getInstance()->getLinkCache()->invalidateTitle( $title ); // Invalidate caches of articles which include this page - DeferredUpdates::addUpdate( - new HTMLCacheUpdate( $title, 'templatelinks', 'page-create' ) + $job = HTMLCacheUpdateJob::newForBacklinks( + $title, + 'templatelinks', + [ 'causeAction' => 'page-create' ] ); + JobQueueGroup::singleton()->lazyPush( $job ); if ( $title->getNamespace() == NS_CATEGORY ) { // Load the Category object, which will schedule a job to create @@ -3453,9 +3451,12 @@ class WikiPage implements Page, IDBAccessObject { // Images if ( $title->getNamespace() == NS_FILE ) { - DeferredUpdates::addUpdate( - new HTMLCacheUpdate( $title, 'imagelinks', 'page-delete' ) + $job = HTMLCacheUpdateJob::newForBacklinks( + $title, + 'imagelinks', + [ 'causeAction' => 'page-delete' ] ); + JobQueueGroup::singleton()->lazyPush( $job ); } // User talk pages @@ -3487,20 +3488,24 @@ class WikiPage implements Page, IDBAccessObject { $slotsChanged = null ) { // TODO: move this into a PageEventEmitter service - - if ( $slotsChanged === null || in_array( SlotRecord::MAIN, $slotsChanged ) ) { + $jobs = []; + if ( $slotsChanged === null || in_array( SlotRecord::MAIN, $slotsChanged ) ) { // Invalidate caches of articles which include this page. // Only for the main slot, because only the main slot is transcluded. // TODO: MCR: not true for TemplateStyles! [SlotHandler] - DeferredUpdates::addUpdate( - new HTMLCacheUpdate( $title, 'templatelinks', 'page-edit' ) + $jobs[] = HTMLCacheUpdateJob::newForBacklinks( + $title, + 'templatelinks', + [ 'causeAction' => 'page-edit' ] ); } - // Invalidate the caches of all pages which redirect here - DeferredUpdates::addUpdate( - new HTMLCacheUpdate( $title, 'redirect', 'page-edit' ) + $jobs[] = HTMLCacheUpdateJob::newForBacklinks( + $title, + 'redirect', + [ 'causeAction' => 'page-edit' ] ); + JobQueueGroup::singleton()->lazyPush( $jobs ); MediaWikiServices::getInstance()->getLinkCache()->invalidateTitle( $title );