X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FWikiPage.php;h=b4aa303c1fd770feb59a0cbd3ac96a6f5d18772f;hb=ceccc158847c173d5a1c2b388334268222832e4a;hp=bcd0f69486de06571ddd5840ca22304f478574ea;hpb=77c05999ee5b28226b8f39c7857e0235cc0a1131;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WikiPage.php b/includes/WikiPage.php index bcd0f69486..b4aa303c1f 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -1173,7 +1173,7 @@ class WikiPage implements Page, IDBAccessObject { } /** - * Do standard deferred updates after page view + * Do standard deferred updates after page view (existing or missing page) * @param User $user The relevant user * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed. */ @@ -1568,7 +1568,7 @@ class WikiPage implements Page, IDBAccessObject { * @param $flags Int * @return Int updated $flags */ - function checkFlags( $flags ) { + public function checkFlags( $flags ) { if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) { if ( $this->exists() ) { $flags |= EDIT_UPDATE; @@ -2945,6 +2945,29 @@ class WikiPage implements Page, IDBAccessObject { return array( array( 'notvisiblerev' ) ); } + // Set patrolling and bot flag on the edits, which gets rollbacked. + // This is done before the rollback edit to have patrolling also on failure (bug 62157). + $set = array(); + if ( $bot && $guser->isAllowed( 'markbotedits' ) ) { + // Mark all reverted edits as bot + $set['rc_bot'] = 1; + } + + if ( $wgUseRCPatrol ) { + // Mark all reverted edits as patrolled + $set['rc_patrolled'] = 1; + } + + if ( count( $set ) ) { + $dbw->update( 'recentchanges', $set, + array( /* WHERE */ + 'rc_cur_id' => $current->getPage(), + 'rc_user_text' => $current->getUserText(), + 'rc_timestamp > ' . $dbw->addQuotes( $s->rev_timestamp ), + ), __METHOD__ + ); + } + // Generate the edit summary if necessary $target = Revision::newFromId( $s->rev_id ); if ( empty( $summary ) ) { @@ -2991,32 +3014,17 @@ class WikiPage implements Page, IDBAccessObject { return $status->getErrorsArray(); } - $set = array(); - if ( $bot && $guser->isAllowed( 'markbotedits' ) ) { - // Mark all reverted edits as bot - $set['rc_bot'] = 1; - } - - if ( $wgUseRCPatrol ) { - // Mark all reverted edits as patrolled - $set['rc_patrolled'] = 1; - } - - if ( count( $set ) ) { - $dbw->update( 'recentchanges', $set, - array( /* WHERE */ - 'rc_cur_id' => $current->getPage(), - 'rc_user_text' => $current->getUserText(), - 'rc_timestamp > ' . $dbw->addQuotes( $s->rev_timestamp ), - ), __METHOD__ - ); + // raise error, when the edit is an edit without a new version + if ( empty( $status->value['revision'] ) ) { + $resultDetails = array( 'current' => $current ); + return array( array( 'alreadyrolled', + htmlspecialchars( $this->mTitle->getPrefixedText() ), + htmlspecialchars( $fromP ), + htmlspecialchars( $current->getUserText() ) + ) ); } - if ( !empty( $status->value['revision'] ) ) { - $revId = $status->value['revision']->getId(); - } else { - $revId = false; - } + $revId = $status->value['revision']->getId(); wfRunHooks( 'ArticleRollbackComplete', array( $this, $guser, $target, $current ) ); @@ -3502,7 +3510,7 @@ class PoolWorkArticleView extends PoolCounterWork { * @param $parserOptions parserOptions to use for the parse operation * @param $content Content|String: content to parse or null to load it; may also be given as a wikitext string, for BC */ - function __construct( Page $page, ParserOptions $parserOptions, $revid, $useParserCache, $content = null ) { + public function __construct( Page $page, ParserOptions $parserOptions, $revid, $useParserCache, $content = null ) { if ( is_string( $content ) ) { // BC: old style call $modelId = $page->getRevision()->getContentModel(); $format = $page->getRevision()->getContentFormat(); @@ -3548,7 +3556,7 @@ class PoolWorkArticleView extends PoolCounterWork { /** * @return bool */ - function doWork() { + public function doWork() { global $wgUseFileCache; // @todo several of the methods called on $this->page are not declared in Page, but present @@ -3611,7 +3619,7 @@ class PoolWorkArticleView extends PoolCounterWork { /** * @return bool */ - function getCachedWork() { + public function getCachedWork() { $this->parserOutput = ParserCache::singleton()->get( $this->page, $this->parserOptions ); if ( $this->parserOutput === false ) { @@ -3626,7 +3634,7 @@ class PoolWorkArticleView extends PoolCounterWork { /** * @return bool */ - function fallback() { + public function fallback() { $this->parserOutput = ParserCache::singleton()->getDirty( $this->page, $this->parserOptions ); if ( $this->parserOutput === false ) { @@ -3645,7 +3653,7 @@ class PoolWorkArticleView extends PoolCounterWork { * @param $status Status * @return bool */ - function error( $status ) { + public function error( $status ) { $this->error = $status; return false; }