From 9ed6ba246108ecf7e7e5651148d458e61e8c2c2a Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Sun, 23 Aug 2009 09:39:13 +0000 Subject: [PATCH] Redo r53641, reverted in r55457, now using indexed queries: * (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks target page --- RELEASE-NOTES | 3 +++ maintenance/deleteRevision.php | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 3d7cddd2d1..020931f89a 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -423,6 +423,9 @@ this. Was used when mwEmbed was going to be an extension. * (bug 20317) Cleaned up default main page link accesskey settings * (bug 20362) Special:Statistics now produces valid HTML when view counters are enabled +* (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks + target page + == API changes in 1.16 == diff --git a/maintenance/deleteRevision.php b/maintenance/deleteRevision.php index 980b0c3389..5dc0b59faf 100644 --- a/maintenance/deleteRevision.php +++ b/maintenance/deleteRevision.php @@ -63,7 +63,14 @@ class DeleteRevision extends Maintenance { $this->output( "Revision $revID not found\n" ); } else { $affected += $dbw->affectedRows(); + $pageID = $dbw->selectField( 'revision', 'rev_page', array( 'rev_id' => $revID ), __METHOD__ ); + $pageLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), __METHOD__ ); $dbw->delete( 'revision', array( 'rev_id' => $revID ) ); + if ( $pageLatest == $revID ) { + // Database integrity + $newLatest = $dbw->selectField( 'revision', 'rev_id', array( 'rev_page' => $pageID ), __METHOD__, array( 'ORDER BY' => 'rev_timestamp DESC' ) ); + $dbw->update( 'page', array( 'page_latest' => $newLatest ), array( 'page_id' => $pageID ), __METHOD__ ); + } } } $this->output( "Deleted $affected revisions\n" ); -- 2.20.1