From 25d87429e6085bb055044eed08d1f59b4aa1bc17 Mon Sep 17 00:00:00 2001 From: umherirrender Date: Thu, 27 Oct 2016 19:33:14 +0200 Subject: [PATCH] Refactor rev_delete handling on deletion Refactoring handling of the rev_delete database field, which is not needed to select, when the suppress option is set. Also added a new const, to avoid a comment about that things should be 15 ... Change-Id: Ia5bcb835172bf6c10e2e872555fc67e91806ebe1 --- includes/Revision.php | 1 + includes/filerepo/file/LocalFile.php | 8 +------- includes/page/WikiPage.php | 19 +++++++------------ 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/includes/Revision.php b/includes/Revision.php index 8f337f955c..b812191398 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -87,6 +87,7 @@ class Revision implements IDBAccessObject { const DELETED_USER = 4; const DELETED_RESTRICTED = 8; const SUPPRESSED_USER = 12; // convenience + const SUPPRESSED_ALL = 15; // convenience // Audience options for accessors const FOR_PUBLIC = 1; diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 9df9360b73..d3a14fa5a4 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -2234,12 +2234,7 @@ class LocalFileDeleteBatch { // Bitfields to further suppress the content if ( $this->suppress ) { - $bitfield = 0; - // This should be 15... - $bitfield |= Revision::DELETED_TEXT; - $bitfield |= Revision::DELETED_COMMENT; - $bitfield |= Revision::DELETED_USER; - $bitfield |= Revision::DELETED_RESTRICTED; + $bitfield = Revision::SUPPRESSED_ALL; } else { $bitfield = 'oi_deleted'; } @@ -2259,7 +2254,6 @@ class LocalFileDeleteBatch { 'fa_deleted_timestamp' => $encTimestamp, 'fa_deleted_reason' => $encReason, 'fa_deleted' => $this->suppress ? $bitfield : 0, - 'fa_name' => 'img_name', 'fa_archive_name' => 'NULL', 'fa_size' => 'img_size', diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 54bc6f6260..0b26d28617 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -2926,17 +2926,13 @@ class WikiPage implements Page, IDBAccessObject { $content = null; } + $fields = Revision::selectFields(); + $bitfield = false; + // Bitfields to further suppress the content if ( $suppress ) { - $bitfield = 0; - // This should be 15... - $bitfield |= Revision::DELETED_TEXT; - $bitfield |= Revision::DELETED_COMMENT; - $bitfield |= Revision::DELETED_USER; - $bitfield |= Revision::DELETED_RESTRICTED; - $deletionFields = [ $dbw->addQuotes( $bitfield ) . ' AS deleted' ]; - } else { - $deletionFields = [ 'rev_deleted AS deleted' ]; + $bitfield = Revision::SUPPRESSED_ALL; + $fields = array_diff( $fields, [ 'rev_deleted' ] ); } // For now, shunt the revision data into the archive table. @@ -2947,10 +2943,9 @@ class WikiPage implements Page, IDBAccessObject { // the rev_deleted field, which is reserved for this purpose. // Get all of the page revisions - $fields = array_diff( Revision::selectFields(), [ 'rev_deleted' ] ); $res = $dbw->select( 'revision', - array_merge( $fields, $deletionFields ), + $fields, [ 'rev_page' => $id ], __METHOD__, 'FOR UPDATE' @@ -2973,7 +2968,7 @@ class WikiPage implements Page, IDBAccessObject { 'ar_flags' => '', 'ar_len' => $row->rev_len, 'ar_page_id' => $id, - 'ar_deleted' => $row->deleted, + 'ar_deleted' => $suppress ? $bitfield : $row->rev_deleted, 'ar_sha1' => $row->rev_sha1, ]; if ( $wgContentHandlerUseDB ) { -- 2.20.1