diff --git a/includes/Linker.php b/includes/Linker.php index 5ee762894d2..26512a9ad84 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -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. diff --git a/includes/actions/InfoAction.php b/includes/actions/InfoAction.php index 18730d63d4f..2af8c63c139 100644 --- a/includes/actions/InfoAction.php +++ b/includes/actions/InfoAction.php @@ -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 diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php index 1f6a21e0719..e6d938dc095 100644 --- a/includes/actions/RollbackAction.php +++ b/includes/actions/RollbackAction.php @@ -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 ) diff --git a/includes/actions/pagers/HistoryPager.php b/includes/actions/pagers/HistoryPager.php index 4081f5a31f6..627eaa437b8 100644 --- a/includes/actions/pagers/HistoryPager.php +++ b/includes/actions/pagers/HistoryPager.php @@ -401,7 +401,7 @@ class HistoryPager extends ReverseChronologicalPager { $s .= " $link"; $s .= $dirmark; $s .= " " . - Linker::revUserTools( $rev, true, false ) . ""; + Linker::revUserTools( $rev->getRevisionRecord(), true, false ) . ""; $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 .= ' ' . $this->msg( 'updatedmarker' )->escaped() . ''; @@ -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' ] ); diff --git a/includes/changes/ChangesList.php b/includes/changes/ChangesList.php index 8ff249798d8..c068fcbb6ca 100644 --- a/includes/changes/ChangesList.php +++ b/includes/changes/ChangesList.php @@ -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' ] + ); } } } diff --git a/includes/changetags/ChangeTagsRevisionItem.php b/includes/changetags/ChangeTagsRevisionItem.php index 2a98e20f96f..81c3726f211 100644 --- a/includes/changetags/ChangeTagsRevisionItem.php +++ b/includes/changetags/ChangeTagsRevisionItem.php @@ -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 = "$revlink"; } diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index c342cd22f04..b9c012ce290 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -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 = '
' . $oldRevisionHeader . '
' . '
' . - Linker::revUserTools( $this->mOldRev, !$this->unhide ) . '
' . + Linker::revUserTools( $oldRevRecord, !$this->unhide ) . '' . '
' . $oldminor . - Linker::revComment( $this->mOldRev, !$diffOnly, !$this->unhide ) . $ldel . '
' . + Linker::revComment( $oldRevRecord, !$diffOnly, !$this->unhide ) . $ldel . '' . '
' . $oldChangeTags[0] . '
' . '
' . $prevlink . '
'; @@ -768,11 +772,12 @@ class DifferenceEngine extends ContextSource { ' ' . implode( ' ', $formattedRevisionTools ); $newChangeTags = ChangeTags::formatSummaryRow( $this->mNewTags, 'diff', $this->getContext() ); + $newRevRecord = $this->mNewRev->getRevisionRecord(); $newHeader = '
' . $newRevisionHeader . '
' . - '
' . Linker::revUserTools( $this->mNewRev, !$this->unhide ) . + '
' . Linker::revUserTools( $newRevRecord, !$this->unhide ) . " $rollback
" . '
' . $newminor . - Linker::revComment( $this->mNewRev, !$diffOnly, !$this->unhide ) . $rdel . '
' . + Linker::revComment( $newRevRecord, !$diffOnly, !$this->unhide ) . $rdel . '
' . '
' . $newChangeTags[0] . '
' . '
' . $nextlink . $this->markPatrolledLink() . '
'; @@ -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 . ' '; } diff --git a/includes/page/Article.php b/includes/page/Article.php index 7b335adf56a..01133ba9786 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -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() . ""; @@ -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 .= ' '; } diff --git a/includes/revisiondelete/RevDelRevisionItem.php b/includes/revisiondelete/RevDelRevisionItem.php index ce3f2537821..a934fe4feb3 100644 --- a/includes/revisiondelete/RevDelRevisionItem.php +++ b/includes/revisiondelete/RevDelRevisionItem.php @@ -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 = "$revlink"; } diff --git a/includes/revisionlist/RevisionItem.php b/includes/revisionlist/RevisionItem.php index b16d814fbb2..de00ec84601 100644 --- a/includes/revisionlist/RevisionItem.php +++ b/includes/revisionlist/RevisionItem.php @@ -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 = "$revlink"; } diff --git a/includes/specials/SpecialMergeHistory.php b/includes/specials/SpecialMergeHistory.php index d1b40373e43..7294d6793aa 100644 --- a/includes/specials/SpecialMergeHistory.php +++ b/includes/specials/SpecialMergeHistory.php @@ -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' ) diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php index 8dfcc3c113f..08a1ed32e2a 100644 --- a/includes/specials/SpecialNewpages.php +++ b/includes/specials/SpecialNewpages.php @@ -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'; diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 4d49719df52..3a5df988ebd 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -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 ) . '
' . '' . '
' . - $minor . Linker::revComment( $rev ) . $rdel . '
' . + $minor . Linker::revComment( $rev->getRevisionRecord() ) . $rdel . '
' . '
' . '
' . $tagSummary[0] . '
' . @@ -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 = []; diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 091a3463736..324738ddbb3 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -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 .= ' '; } diff --git a/includes/specials/pagers/DeletedContribsPager.php b/includes/specials/pagers/DeletedContribsPager.php index f23872c875c..cad7ece6a99 100644 --- a/includes/specials/pagers/DeletedContribsPager.php +++ b/includes/specials/pagers/DeletedContribsPager.php @@ -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 .= ' '; } diff --git a/tests/phpunit/includes/LinkerTest.php b/tests/phpunit/includes/LinkerTest.php index 62b02f3daca..02278941d1e 100644 --- a/tests/phpunit/includes/LinkerTest.php +++ b/tests/phpunit/includes/LinkerTest.php @@ -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();