+ $msg = 'diff-multi-otherusers';
+ }
+
+ return wfMessage( $msg )->numParams( $numEdits, $numUsers )->parse();
+ }
+
+ /**
+ * Get a header for a specified revision.
+ *
+ * @param Revision $rev
+ * @param string $complete 'complete' to get the header wrapped depending
+ * the visibility of the revision and a link to edit the page.
+ *
+ * @return string HTML fragment
+ */
+ public function getRevisionHeader( Revision $rev, $complete = '' ) {
+ $lang = $this->getLanguage();
+ $user = $this->getUser();
+ $revtimestamp = $rev->getTimestamp();
+ $timestamp = $lang->userTimeAndDate( $revtimestamp, $user );
+ $dateofrev = $lang->userDate( $revtimestamp, $user );
+ $timeofrev = $lang->userTime( $revtimestamp, $user );
+
+ $header = $this->msg(
+ $rev->isCurrent() ? 'currentrev-asof' : 'revisionasof',
+ $timestamp,
+ $dateofrev,
+ $timeofrev
+ )->escaped();
+
+ if ( $complete !== 'complete' ) {
+ return $header;
+ }
+
+ $title = $rev->getTitle();
+
+ $header = Linker::linkKnown( $title, $header, [],
+ [ 'oldid' => $rev->getId() ] );
+
+ if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+ $editQuery = [ 'action' => 'edit' ];
+ if ( !$rev->isCurrent() ) {
+ $editQuery['oldid'] = $rev->getId();
+ }
+
+ $key = $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold';
+ $msg = $this->msg( $key )->escaped();
+ $editLink = $this->msg( 'parentheses' )->rawParams(
+ Linker::linkKnown( $title, $msg, [], $editQuery ) )->escaped();
+ $header .= ' ' . Html::rawElement(
+ 'span',
+ [ 'class' => 'mw-diff-edit' ],
+ $editLink
+ );
+ if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $header = Html::rawElement(
+ 'span',
+ [ 'class' => 'history-deleted' ],
+ $header
+ );
+ }
+ } else {
+ $header = Html::rawElement( 'span', [ 'class' => 'history-deleted' ], $header );