Merge "Migrate SpecialUndelete and Diff from tag_summary to change_tag"

This commit is contained in:
jenkins-bot 2018-12-12 22:30:55 +00:00 committed by Gerrit Code Review
commit 8beca8a8fe
2 changed files with 45 additions and 12 deletions

View file

@ -21,8 +21,10 @@
* @ingroup DifferenceEngine
*/
use MediaWiki\MediaWikiServices;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Storage\NameTableAccessException;
/**
* DifferenceEngine is responsible for rendering the difference between two revisions as HTML.
@ -1797,22 +1799,42 @@ class DifferenceEngine extends ContextSource {
// Load tags information for both revisions
$dbr = wfGetDB( DB_REPLICA );
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
if ( $this->mOldid !== false ) {
$this->mOldTags = $dbr->selectField(
'tag_summary',
'ts_tags',
[ 'ts_rev_id' => $this->mOldid ],
$tagIds = $dbr->selectFieldValues(
'change_tag',
'ct_tag_id',
[ 'ct_rev_id' => $this->mOldid ],
__METHOD__
);
$tags = [];
foreach ( $tagIds as $tagId ) {
try {
$tags[] = $changeTagDefStore->getName( (int)$tagId );
} catch ( NameTableAccessException $exception ) {
continue;
}
}
$this->mOldTags = implode( ',', $tags );
} else {
$this->mOldTags = false;
}
$this->mNewTags = $dbr->selectField(
'tag_summary',
'ts_tags',
[ 'ts_rev_id' => $this->mNewid ],
$tagIds = $dbr->selectFieldValues(
'change_tag',
'ct_tag_id',
[ 'ct_rev_id' => $this->mNewid ],
__METHOD__
);
$tags = [];
foreach ( $tagIds as $tagId ) {
try {
$tags[] = $changeTagDefStore->getName( (int)$tagId );
} catch ( NameTableAccessException $exception ) {
continue;
}
}
$this->mNewTags = implode( ',', $tags );
return true;
}

View file

@ -23,6 +23,7 @@
use MediaWiki\MediaWikiServices;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Storage\NameTableAccessException;
use Wikimedia\Rdbms\IResultWrapper;
/**
@ -596,12 +597,22 @@ class SpecialUndelete extends SpecialPage {
$minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
$tags = wfGetDB( DB_REPLICA )->selectField(
'tag_summary',
'ts_tags',
[ 'ts_rev_id' => $rev->getId() ],
$tagIds = wfGetDB( DB_REPLICA )->selectFieldValues(
'change_tag',
'ct_tag_id',
[ 'ct_rev_id' => $rev->getId() ],
__METHOD__
);
$tags = [];
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
foreach ( $tagIds as $tagId ) {
try {
$tags[] = $changeTagDefStore->getName( (int)$tagId );
} catch ( NameTableAccessException $exception ) {
continue;
}
}
$tags = implode( ',', $tags );
$tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff', $this->getContext() );
// FIXME This is reimplementing DifferenceEngine#getRevisionHeader