ContribsPager and HistoryPager both duplicate efforts.
Instead move this code into a new static function inside
ChangesList that is shared between the two.
Bug: T216420
Change-Id: I0025d2e515d086b60670bd3f37307caac8d662a2
* @return string
*/
function revLink( $rev ) {
- $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $this->getUser() );
- if ( $rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
- $link = MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
- $this->getTitle(),
- $date,
- [ 'class' => 'mw-changeslist-date' ],
- [ 'oldid' => $rev->getId() ]
- );
- } else {
- $link = htmlspecialchars( $date );
- }
- if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $link = "<span class=\"history-deleted mw-changeslist-date\">$link</span>";
- }
-
- return $link;
+ return ChangesList::revDateLink( $rev, $this->getUser(), $this->getLanguage(),
+ $this->getTitle() );
}
/**
return $out;
}
+ /**
+ * Render the date and time of a revision in the current user language
+ * based on whether the user is able to view this information or not.
+ * @param Revision $rev
+ * @param User $user
+ * @param Language $lang
+ * @param Title|null $title (optional) where Title does not match
+ * the Title associated with the Revision
+ * @internal For usage by Pager classes only (e.g. HistoryPager and ContribsPager).
+ * @return string HTML
+ */
+ public static function revDateLink( Revision $rev, User $user, Language $lang, $title = null ) {
+ $ts = $rev->getTimestamp();
+ $date = $lang->userTimeAndDate( $ts, $user );
+ if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+ $link = MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
+ $title !== null ? $title : $rev->getTitle(),
+ $date,
+ [ 'class' => 'mw-changeslist-date' ],
+ [ 'oldid' => $rev->getId() ]
+ );
+ } else {
+ $link = htmlspecialchars( $date );
+ }
+ if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $link = "<span class=\"history-deleted mw-changeslist-date\">$link</span>";
+ }
+ return $link;
+ }
+
/**
* @param string &$s HTML to update
* @param mixed $rc_timestamp
* and a separator
*
* @param RecentChange $rc
+ * @deprecated use revDateLink instead.
* @return string HTML fragment
*/
public function getTimestamp( $rc ) {
$lang = $this->getLanguage();
$comment = $lang->getDirMark() . Linker::revComment( $rev, false, true, false );
$date = $lang->userTimeAndDate( $row->rev_timestamp, $user );
- if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
- $d = $linkRenderer->makeKnownLink(
- $page,
- $date,
- [ 'class' => 'mw-changeslist-date' ],
- [ 'oldid' => intval( $row->rev_id ) ]
- );
- } else {
- $d = htmlspecialchars( $date );
- }
- if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $d = '<span class="history-deleted">' . $d . '</span>';
- }
+ $d = ChangesList::revDateLink( $rev, $user, $lang, $page );
# Show user names for /newbies as there may be different users.
# Note that only unprivileged users have rows with hidden user names excluded.