Pass RevisionRecord to Linker methods

Hard deprecation of passing Revision objects will follow soon,
but until that is ready core calls can be updated

There is some code cleanup that could be done around the calls, but
to simplify review no other changes are made.

Bug: T249561
Change-Id: Ifcfb3811650decffeaa87dc033c41fd1710b47a6
This commit is contained in:
DannyS712 2020-04-18 00:21:26 +00:00
parent 9cfc05ce3a
commit af7f397ccc
16 changed files with 78 additions and 43 deletions

View file

@ -1908,6 +1908,8 @@ class Linker {
* Returns null if $wgShowRollbackEditCount is disabled or false if $verify
* is set and the user is the only contributor of the page.
*
* @todo Unused outside of this file - should it be made private?
*
* @param RevisionRecord|Revision $rev (RevisionRecord allowed since 1.35, Revision
* deprecated since 1.35)
* @param bool $verify Try to verify that this revision can really be rolled back
@ -1981,6 +1983,8 @@ class Linker {
* @since 1.16.3. $context added in 1.20. $editCount added in 1.21
* $rev could be a RevisionRecord since 1.35
*
* @todo Unused outside of this file - should it be made private?
*
* @param RevisionRecord|Revision $rev (RevisionRecord allowed since 1.35, Revision
* deprecated since 1.35)
* @param IContextSource|null $context Context to use or null for the main context.

View file

@ -565,7 +565,7 @@ class InfoAction extends FormlessAction {
// Page creator
$pageInfo['header-edits'][] = [
$this->msg( 'pageinfo-firstuser' ),
Linker::revUserTools( new Revision( $firstRev ) )
Linker::revUserTools( $firstRev )
];
// Date of page creation
@ -584,7 +584,7 @@ class InfoAction extends FormlessAction {
// Latest editor
$pageInfo['header-edits'][] = [
$this->msg( 'pageinfo-lastuser' ),
Linker::revUserTools( $lastRev )
Linker::revUserTools( $lastRev->getRevisionRecord() )
];
// Date of latest edit

View file

@ -164,8 +164,8 @@ class RollbackAction extends FormAction {
$this->getOutput()->setPageTitle( $this->msg( 'actioncomplete' ) );
$this->getOutput()->setRobotPolicy( 'noindex,nofollow' );
$old = Linker::revUserTools( $current );
$new = Linker::revUserTools( $target );
$old = Linker::revUserTools( $current->getRevisionRecord() );
$new = Linker::revUserTools( $target->getRevisionRecord() );
$this->getOutput()->addHTML(
$this->msg( 'rollback-success' )
->rawParams( $old, $new )

View file

@ -401,7 +401,7 @@ class HistoryPager extends ReverseChronologicalPager {
$s .= " $link";
$s .= $dirmark;
$s .= " <span class='history-user'>" .
Linker::revUserTools( $rev, true, false ) . "</span>";
Linker::revUserTools( $rev->getRevisionRecord(), true, false ) . "</span>";
$s .= $dirmark;
if ( $rev->isMinor() ) {
@ -418,7 +418,7 @@ class HistoryPager extends ReverseChronologicalPager {
}
# Text following the character difference is added just before running hooks
$s2 = Linker::revComment( $rev, false, true, false );
$s2 = Linker::revComment( $rev->getRevisionRecord(), false, true, false );
if ( $notificationtimestamp && ( $row->rev_timestamp >= $notificationtimestamp ) ) {
$s2 .= ' <span class="updatedmarker">' . $this->msg( 'updatedmarker' )->escaped() . '</span>';
@ -435,7 +435,7 @@ class HistoryPager extends ReverseChronologicalPager {
) {
// Get a rollback link without the brackets
$rollbackLink = Linker::generateRollback(
$rev,
$rev->getRevisionRecord(),
$this->getContext(),
[ 'verify', 'noBrackets' ]
);

View file

@ -750,8 +750,12 @@ class ChangesList extends ContextSource {
'actor' => $rc->mAttribs['rc_actor'] ?? null,
'deleted' => $rc->mAttribs['rc_deleted']
] );
$s .= ' ' . Linker::generateRollback( $rev, $this->getContext(),
[ 'noBrackets' ] );
$s .= ' ';
$s .= Linker::generateRollback(
$rev->getRevisionRecord(),
$this->getContext(),
[ 'noBrackets' ]
);
}
}
}

View file

@ -39,8 +39,8 @@ class ChangeTagsRevisionItem extends RevisionItem {
$difflink = $this->list->msg( 'parentheses' )
->rawParams( $this->getDiffLink() )->escaped();
$revlink = $this->getRevisionLink();
$userlink = Linker::revUserLink( $this->revision );
$comment = Linker::revComment( $this->revision );
$userlink = Linker::revUserLink( $this->revision->getRevisionRecord() );
$comment = Linker::revComment( $this->revision->getRevisionRecord() );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}

View file

@ -663,8 +663,11 @@ class DifferenceEngine extends ContextSource {
if ( $this->mNewRev->isCurrent() && $permissionManager->quickUserCan(
'rollback', $user, $this->mNewPage
) ) {
$rollbackLink = Linker::generateRollback( $this->mNewRev, $this->getContext(),
[ 'noBrackets' ] );
$rollbackLink = Linker::generateRollback(
$this->mNewRev->getRevisionRecord(),
$this->getContext(),
[ 'noBrackets' ]
);
if ( $rollbackLink ) {
$out->preventClickjacking();
$rollback = "\u{00A0}\u{00A0}\u{00A0}" . $rollbackLink;
@ -710,11 +713,12 @@ class DifferenceEngine extends ContextSource {
$oldRevisionHeader = $this->getRevisionHeader( $this->mOldRev, 'complete' );
$oldChangeTags = ChangeTags::formatSummaryRow( $this->mOldTags, 'diff', $this->getContext() );
$oldRevRecord = $this->mOldRev->getRevisionRecord();
$oldHeader = '<div id="mw-diff-otitle1"><strong>' . $oldRevisionHeader . '</strong></div>' .
'<div id="mw-diff-otitle2">' .
Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '</div>' .
Linker::revUserTools( $oldRevRecord, !$this->unhide ) . '</div>' .
'<div id="mw-diff-otitle3">' . $oldminor .
Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
Linker::revComment( $oldRevRecord, !$diffOnly, !$this->unhide ) . $ldel . '</div>' .
'<div id="mw-diff-otitle5">' . $oldChangeTags[0] . '</div>' .
'<div id="mw-diff-otitle4">' . $prevlink . '</div>';
@ -768,11 +772,12 @@ class DifferenceEngine extends ContextSource {
' ' . implode( ' ', $formattedRevisionTools );
$newChangeTags = ChangeTags::formatSummaryRow( $this->mNewTags, 'diff', $this->getContext() );
$newRevRecord = $this->mNewRev->getRevisionRecord();
$newHeader = '<div id="mw-diff-ntitle1"><strong>' . $newRevisionHeader . '</strong></div>' .
'<div id="mw-diff-ntitle2">' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) .
'<div id="mw-diff-ntitle2">' . Linker::revUserTools( $newRevRecord, !$this->unhide ) .
" $rollback</div>" .
'<div id="mw-diff-ntitle3">' . $newminor .
Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
Linker::revComment( $newRevRecord, !$diffOnly, !$this->unhide ) . $rdel . '</div>' .
'<div id="mw-diff-ntitle5">' . $newChangeTags[0] . '</div>' .
'<div id="mw-diff-ntitle4">' . $nextlink . $this->markPatrolledLink() . '</div>';
@ -917,10 +922,16 @@ class DifferenceEngine extends ContextSource {
/**
* @param Revision $rev
*
* @todo Accept RevisionRecord
*
* @return string
*/
protected function revisionDeleteLink( $rev ) {
$link = Linker::getRevDeleteLink( $this->getUser(), $rev, $rev->getTitle() );
$link = Linker::getRevDeleteLink(
$this->getUser(),
$rev->getRevisionRecord(),
$rev->getTitle()
);
if ( $link !== '' ) {
$link = "\u{00A0}\u{00A0}\u{00A0}" . $link . ' ';
}

View file

@ -1580,7 +1580,7 @@ class Article implements Page {
$tdtime = $language->userTime( $timestamp, $user );
# Show user links if allowed to see them. If hidden, then show them only if requested...
$userlinks = Linker::revUserTools( $revision, !$unhide );
$userlinks = Linker::revUserTools( $revision->getRevisionRecord(), !$unhide );
$infomsg = $current && !$context->msg( 'revision-info-current' )->isDisabled()
? 'revision-info-current'
@ -1591,7 +1591,11 @@ class Article implements Page {
$context->msg( $infomsg, $td )
->rawParams( $userlinks )
->params( $revision->getId(), $tddate, $tdtime, $revision->getUserText() )
->rawParams( Linker::revComment( $revision, true, true ) )
->rawParams( Linker::revComment(
$revision->getRevisionRecord(),
true,
true
) )
->parse() .
"</div>";
@ -1661,7 +1665,11 @@ class Article implements Page {
] + $extraParams
);
$cdel = Linker::getRevDeleteLink( $user, $revision, $this->getTitle() );
$cdel = Linker::getRevDeleteLink(
$user,
$revision->getRevisionRecord(),
$this->getTitle()
);
if ( $cdel !== '' ) {
$cdel .= ' ';
}

View file

@ -180,8 +180,8 @@ class RevDelRevisionItem extends RevDelItem {
$difflink = $this->list->msg( 'parentheses' )
->rawParams( $this->getDiffLink() )->escaped();
$revlink = $this->getRevisionLink();
$userlink = Linker::revUserLink( $this->revision );
$comment = Linker::revComment( $this->revision );
$userlink = Linker::revUserLink( $this->revision->getRevisionRecord() );
$comment = Linker::revComment( $this->revision->getRevisionRecord() );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}

View file

@ -135,8 +135,8 @@ class RevisionItem extends RevisionItemBase {
$difflink = $this->context->msg( 'parentheses' )
->rawParams( $this->getDiffLink() )->escaped();
$revlink = $this->getRevisionLink();
$userlink = Linker::revUserLink( $this->revision );
$comment = Linker::revComment( $this->revision );
$userlink = Linker::revUserLink( $this->revision->getRevisionRecord() );
$comment = Linker::revComment( $this->revision->getRevisionRecord() );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}

View file

@ -318,13 +318,13 @@ class SpecialMergeHistory extends SpecialPage {
);
}
$userLink = Linker::revUserTools( $rev );
$userLink = Linker::revUserTools( $rev->getRevisionRecord() );
$size = $row->rev_len;
if ( $size !== null ) {
$stxt = Linker::formatRevisionSize( $size );
}
$comment = Linker::revComment( $rev );
$comment = Linker::revComment( $rev->getRevisionRecord() );
return Html::rawElement( 'li', [],
$this->msg( 'mergehistory-revisionrow' )

View file

@ -397,8 +397,8 @@ class SpecialNewpages extends IncludableSpecialPage {
)->escaped()
);
$ulink = Linker::revUserTools( $rev );
$comment = Linker::revComment( $rev );
$ulink = Linker::revUserTools( $rev->getRevisionRecord() );
$comment = Linker::revComment( $rev->getRevisionRecord() );
if ( $this->patrollable( $result ) ) {
$classes[] = 'not-patrolled';

View file

@ -484,7 +484,7 @@ class SpecialUndelete extends SpecialPage {
$time = $lang->userTimeAndDate( $timestamp, $user );
$d = $lang->userDate( $timestamp, $user );
$t = $lang->userTime( $timestamp, $user );
$userLink = Linker::revUserTools( $rev );
$userLink = Linker::revUserTools( $rev->getRevisionRecord() );
$content = $rev->getContent( RevisionRecord::FOR_THIS_USER, $user );
@ -500,7 +500,11 @@ class SpecialUndelete extends SpecialPage {
// Revision delete links
if ( !$this->mDiff ) {
$revdel = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
$revdel = Linker::getRevDeleteLink(
$user,
$rev->getRevisionRecord(),
$this->mTargetObj
);
if ( $revdel ) {
$out->addHTML( "$revdel " );
}
@ -644,7 +648,7 @@ class SpecialUndelete extends SpecialPage {
// Add show/hide deletion links if available
$user = $this->getUser();
$lang = $this->getLanguage();
$rdel = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
$rdel = Linker::getRevDeleteLink( $user, $rev->getRevisionRecord(), $this->mTargetObj );
if ( $rdel ) {
$rdel = " $rdel";
@ -689,7 +693,7 @@ class SpecialUndelete extends SpecialPage {
Linker::revUserTools( $rev ) . '<br />' .
'</div>' .
'<div id="mw-diff-' . $prefix . 'title3">' .
$minor . Linker::revComment( $rev ) . $rdel . '<br />' .
$minor . Linker::revComment( $rev->getRevisionRecord() ) . $rdel . '<br />' .
'</div>' .
'<div id="mw-diff-' . $prefix . 'title5">' .
$tagSummary[0] . '<br />' .
@ -1019,7 +1023,7 @@ class SpecialUndelete extends SpecialPage {
}
// User links
$userLink = Linker::revUserTools( $revObject );
$userLink = Linker::revUserTools( $revRecord );
// Minor edit
$minor = $revRecord->isMinor() ? ChangesList::flag( 'minor' ) : '';
@ -1031,7 +1035,7 @@ class SpecialUndelete extends SpecialPage {
}
// Edit summary
$comment = Linker::revComment( $revObject );
$comment = Linker::revComment( $revRecord );
// Tags
$attribs = [];

View file

@ -606,8 +606,11 @@ class ContribsPager extends RangeChronologicalPager {
$permissionManager->quickUserCan( 'edit', $user, $page )
) {
$this->preventClickjacking();
$topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext(),
[ 'noBrackets' ] );
$topmarktext .= ' ' . Linker::generateRollback(
$rev->getRevisionRecord(),
$this->getContext(),
[ 'noBrackets' ]
);
}
}
# Is there a visible previous revision?
@ -660,8 +663,9 @@ class ContribsPager extends RangeChronologicalPager {
}
$lang = $this->getLanguage();
$comment = $lang->getDirMark() . Linker::revComment( $rev, false, true, false );
$d = ChangesList::revDateLink( $rev->getRevisionRecord(), $user, $lang, $page );
$revRecord = $rev->getRevisionRecord();
$comment = $lang->getDirMark() . Linker::revComment( $revRecord, false, true, false );
$d = ChangesList::revDateLink( $revRecord, $user, $lang, $page );
# When querying for an IP range, we want to always show user and user talk links.
$userlink = '';
@ -682,7 +686,7 @@ class ContribsPager extends RangeChronologicalPager {
$flags[] = ChangesList::flag( 'minor' );
}
$del = Linker::getRevDeleteLink( $user, $rev, $page );
$del = Linker::getRevDeleteLink( $user, $revRecord, $page );
if ( $del !== '' ) {
$del .= ' ';
}

View file

@ -342,7 +342,7 @@ class DeletedContribsPager extends IndexPager {
$last = htmlspecialchars( $this->messages['diff'] );
}
$comment = Linker::revComment( $rev );
$comment = Linker::revComment( $rev->getRevisionRecord() );
$date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user );
if ( !$permissionManager->userHasRight( $user, 'undelete' ) ||
@ -382,7 +382,7 @@ class DeletedContribsPager extends IndexPager {
}
// Revision delete link
$del = Linker::getRevDeleteLink( $user, $rev, $page );
$del = Linker::getRevDeleteLink( $user, $rev->getRevisionRecord(), $page );
if ( $del ) {
$del .= ' ';
}

View file

@ -473,7 +473,7 @@ class LinkerTest extends MediaWikiLangTestCase {
$summary = CommentStoreComment::newUnsavedComment( 'Some comment!' );
$updater->saveRevision( $summary );
$rollbackOutput = Linker::generateRollback( $page->getRevision(), $context );
$rollbackOutput = Linker::generateRollback( $page->getRevisionRecord(), $context );
$modules = $context->getOutput()->getModules();
$currentRev = $page->getRevision();
$revisionLookup = MediaWikiServices::getInstance()->getRevisionLookup();