}
/**
- * 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.
*/
* @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;
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 ) ) {
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 ) );
* @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();
/**
* @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
/**
* @return bool
*/
- function getCachedWork() {
+ public function getCachedWork() {
$this->parserOutput = ParserCache::singleton()->get( $this->page, $this->parserOptions );
if ( $this->parserOutput === false ) {
/**
* @return bool
*/
- function fallback() {
+ public function fallback() {
$this->parserOutput = ParserCache::singleton()->getDirty( $this->page, $this->parserOptions );
if ( $this->parserOutput === false ) {
* @param $status Status
* @return bool
*/
- function error( $status ) {
+ public function error( $status ) {
$this->error = $status;
return false;
}