From cd5f0d63fae22a275809ad96fb3408907b04f72a Mon Sep 17 00:00:00 2001 From: MatmaRex Date: Sat, 6 Jul 2013 22:53:27 +0200 Subject: [PATCH] Show change tags on diffs This adds two very simple queries for every diff page view. It could be made to only add one (loading tags for both revisions at once), but it would be a little ugly. It could even be made to add zero, but this would require either rewriting and duplicating a lot of code here and constructing Revisions by hand or making the Revision itself know about its tags. Bug: 25824 Bug: 49602 Change-Id: Ic2ae58c703db7ceee5de4b320229d8c93810a73b --- includes/diff/DifferenceEngine.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 975d490123..4c2de4e2c9 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -38,6 +38,7 @@ class DifferenceEngine extends ContextSource { * @private */ var $mOldid, $mNewid; + var $mOldTags, $mNewTags; /** * @var Content */ @@ -302,12 +303,14 @@ class DifferenceEngine extends ContextSource { $ldel = $this->revisionDeleteLink( $this->mOldRev ); $oldRevisionHeader = $this->getRevisionHeader( $this->mOldRev, 'complete' ); + $oldChangeTags = ChangeTags::formatSummaryRow( $this->mOldTags, 'diff' ); $oldHeader = '
' . $oldRevisionHeader . '
' . '
' . Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '
' . '
' . $oldminor . Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '
' . + '
' . $oldChangeTags[0] . '
' . '
' . $prevlink . '
'; if ( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) { @@ -353,12 +356,14 @@ class DifferenceEngine extends ContextSource { $formattedRevisionTools[] = $this->msg( 'parentheses' )->rawParams( $tool )->escaped(); } $newRevisionHeader = $this->getRevisionHeader( $this->mNewRev, 'complete' ) . ' ' . implode( ' ', $formattedRevisionTools ); + $newChangeTags = ChangeTags::formatSummaryRow( $this->mNewTags, 'diff' ); $newHeader = '
' . $newRevisionHeader . '
' . '
' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) . " $rollback
" . '
' . $newminor . Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '
' . + '
' . $newChangeTags[0] . '
' . '
' . $nextlink . $this->markPatrolledLink() . '
'; if ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) { @@ -1141,6 +1146,25 @@ class DifferenceEngine extends ContextSource { $this->mOldPage = $this->mOldRev->getTitle(); } + // Load tags information for both revisions + $dbr = wfGetDB( DB_SLAVE ); + if ( $this->mOldid !== false ) { + $this->mOldTags = $dbr->selectField( + 'tag_summary', + 'ts_tags', + array( 'ts_rev_id' => $this->mOldid ), + __METHOD__ + ); + } else { + $this->mOldTags = false; + } + $this->mNewTags = $dbr->selectField( + 'tag_summary', + 'ts_tags', + array( 'ts_rev_id' => $this->mNewid ), + __METHOD__ + ); + return true; } -- 2.20.1