121 $pm = MediaWikiServices::getInstance()->getPermissionManager();
125 $userId =
$file->getUser(
'id' );
126 $userText =
$file->getUser(
'text' );
127 $description =
$file->getDescription( File::FOR_THIS_USER, $user );
129 $local = $this->current->isLocal();
130 $row = $selected =
'';
133 if ( $local && ( $pm->userHasAnyRight( $user,
'delete',
'deletedhistory' ) ) ) {
135 # Link to remove from history
136 if ( $pm->userHasRight( $user,
'delete' ) ) {
137 $q = [
'action' =>
'delete' ];
139 $q[
'oldimage'] =
$img;
143 $this->
msg( $iscur ?
'filehist-deleteall' :
'filehist-deleteone' )->escaped(),
147 # Link to hide content. Don't show useless link to people who cannot hide revisions.
148 $canHide = $pm->userHasRight( $user,
'deleterevision' );
149 if ( $canHide || ( $pm->userHasRight( $user,
'deletedhistory' )
150 &&
$file->getVisibility() ) ) {
151 if ( $pm->userHasRight( $user,
'delete' ) ) {
155 if ( $iscur || !
$file->userCan( File::DELETED_RESTRICTED, $user ) ) {
158 list( $ts, ) = explode(
'!',
$img, 2 );
160 'type' =>
'oldimage',
161 'target' => $this->title->getPrefixedText(),
165 $file->isDeleted( File::DELETED_RESTRICTED ), $canHide );
175 $row .= $this->
msg(
'filehist-current' )->escaped();
176 } elseif ( $local && $pm->quickUserCan(
'edit', $user, $this->title )
177 && $pm->quickUserCan(
'upload', $user, $this->title )
179 if (
$file->isDeleted( File::DELETED_FILE ) ) {
180 $row .= $this->
msg(
'filehist-revert' )->escaped();
184 $this->
msg(
'filehist-revert' )->escaped(),
187 'action' =>
'revert',
196 if (
$file->getTimestamp() === $this->img->getTimestamp() ) {
197 $selected =
"class='filehistory-selected'";
199 $row .=
"<td $selected style='white-space: nowrap;'>";
200 if ( !
$file->userCan( File::DELETED_FILE, $user ) ) {
201 # Don't link to unviewable files
202 $row .= Html::element(
'span', [
'class' =>
'history-deleted' ],
203 $lang->userTimeAndDate( $timestamp, $user )
205 } elseif (
$file->isDeleted( File::DELETED_FILE ) ) {
206 $timeAndDate = htmlspecialchars(
$lang->userTimeAndDate( $timestamp, $user ) );
209 $revdel = SpecialPage::getTitleFor(
'Revisiondelete' );
210 # Make a link to review the image
216 'target' => $this->title->getPrefixedText(),
218 'token' => $user->getEditToken(
$img )
224 $row .=
'<span class="history-deleted">' . $url .
'</span>';
225 } elseif ( !
$file->exists() ) {
226 $row .= Html::element(
'span', [
'class' =>
'mw-file-missing' ],
227 $lang->userTimeAndDate( $timestamp, $user )
230 $url = $iscur ? $this->current->getUrl() : $this->current->getArchiveUrl(
$img );
231 $row .= Xml::element(
234 $lang->userTimeAndDate( $timestamp, $user )
240 if ( $this->showThumb ) {
246 $row .= htmlspecialchars(
$file->getDimensionsString() );
247 $row .= $this->
msg(
'word-separator' )->escaped();
248 $row .=
'<span style="white-space: nowrap;">';
249 $row .= $this->
msg(
'parentheses' )->sizeParams(
$file->getSize() )->escaped();
256 if (
$file->isDeleted( File::DELETED_USER ) ) {
257 $row .=
'<span class="history-deleted">'
258 . $this->
msg(
'rev-deleted-user' )->escaped() .
'</span>';
262 $row .=
'<span style="white-space: nowrap;">';
266 $row .= htmlspecialchars( $userText );
272 if (
$file->isDeleted( File::DELETED_COMMENT ) ) {
273 $row .=
'<td><span class="history-deleted">' .
274 $this->
msg(
'rev-deleted-comment' )->escaped() .
'</span></td>';
276 $contLang = MediaWikiServices::getInstance()->getContentLanguage();
277 $row .= Html::rawElement(
279 [
'dir' => $contLang->getDir() ],
285 Hooks::run(
'ImagePageFileHistoryLine', [ $this,
$file, &$row, &$rowClass ] );
286 $classAttr = $rowClass ?
" class='$rowClass'" :
'';
288 return "<tr{$classAttr}>{$row}</tr>\n";
298 if (
$file->allowInlineDisplay() &&
$file->userCan( File::DELETED_FILE, $user )
299 && !
$file->isDeleted( File::DELETED_FILE )
307 $thumbnail =
$file->transform( $params );
309 'alt' => $this->
msg(
'filehist-thumbtext',
310 $lang->userTimeAndDate( $timestamp, $user ),
311 $lang->userDate( $timestamp, $user ),
312 $lang->userTime( $timestamp, $user ) )->text(),
317 return $this->
msg(
'filehist-nothumb' )->escaped();
320 return $thumbnail->toHtml( $options );
322 return $this->
msg(
'filehist-nothumb' )->escaped();