From: MatmaRex Date: Sat, 6 Jul 2013 20:53:27 +0000 (+0200) Subject: Show change tags on diffs X-Git-Tag: 1.31.0-rc.0~19216^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22upgrade%22%2C%22reinstall=non%22%29%20.%20%22?a=commitdiff_plain;h=cd5f0d63fae22a275809ad96fb3408907b04f72a;p=lhc%2Fweb%2Fwiklou.git 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 --- 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; }