21use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
30 use ProtectedHookAccessorTrait;
65 $this->img->canRender();
73 return $this->imagePage;
88 return Xml::element(
'h2', [
'id' =>
'filehistory' ], $this->
msg(
'filehist' )->text() )
90 .
"<div id=\"mw-imagepage-section-filehistory\">\n"
91 . $this->
msg(
'filehist-help' )->parseAsBlock()
93 . Xml::openElement(
'table', [
'class' =>
'wikitable filehistory' ] ) .
"\n"
95 . ( $this->current->isLocal()
96 && ( $this->
getAuthority()->isAllowedAny(
'delete',
'deletedhistory' ) ) ?
'<th></th>' :
'' )
97 .
'<th>' . $this->
msg(
'filehist-datetime' )->escaped() .
'</th>'
98 . ( $this->showThumb ?
'<th>' . $this->
msg(
'filehist-thumb' )->escaped() .
'</th>' :
'' )
99 .
'<th>' . $this->
msg(
'filehist-dimensions' )->escaped() .
'</th>'
100 .
'<th>' . $this->
msg(
'filehist-user' )->escaped() .
'</th>'
101 .
'<th>' . $this->
msg(
'filehist-comment' )->escaped() .
'</th>'
110 return "</table>\n$navLinks\n</div>\n";
121 $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
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 && ( $this->
getAuthority()->isAllowedAny(
'delete',
'deletedhistory' ) ) ) {
135 # Link to remove from history
137 $q = [
'action' =>
'delete' ];
139 $q[
'oldimage'] =
$img;
141 $row .= $linkRenderer->makeKnownLink(
143 $this->
msg( $iscur ?
'filehist-deleteall' :
'filehist-deleteone' )->text(),
147 # Link to hide content. Don't show useless link to people who cannot hide revisions.
148 $canHide = $this->
getAuthority()->isAllowed(
'deleterevision' );
149 if ( $canHide || ( $this->
getAuthority()->isAllowed(
'deletedhistory' )
150 &&
$file->getVisibility() ) ) {
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 && $this->
getAuthority()->probablyCan(
'edit', $this->title )
177 && $this->
getAuthority()->probablyCan(
'upload', $this->title )
179 if (
$file->isDeleted( File::DELETED_FILE ) ) {
180 $row .= $this->
msg(
'filehist-revert' )->escaped();
182 $row .= $linkRenderer->makeKnownLink(
184 $this->
msg(
'filehist-revert' )->text(),
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 =
$lang->userTimeAndDate( $timestamp, $user );
210 # Make a link to review the image
211 $url = $linkRenderer->makeKnownLink(
216 'target' => $this->title->getPrefixedText(),
218 'token' => $user->getEditToken(
$img )
222 $url = htmlspecialchars( $timeAndDate );
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 $this->getHookRunner()->onImagePageFileHistoryLine( $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();
337 return $this->preventClickjacking;
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
getContext()
Gets the context this Article is executed in.
getTitle()
Get the title object of the article.
getPage()
Get the WikiPage object of this instance.
The simplest way of implementing IContextSource is to hold a RequestContext as a member variable and ...
msg( $key,... $params)
Get a Message object with context set Parameters are the same as wfMessage()
setContext(IContextSource $context)
Implements some public methods and some protected utility functions which are required by multiple ch...
getName()
Return the name of this file.
Builds the image revision log shown on image pages.
endImageHistoryList( $navLinks='')
beginImageHistoryList( $navLinks='')
preventClickjacking( $enable=true)
imageHistoryLine( $iscur, $file)
Class for viewing MediaWiki file description pages.
static userLink( $userId, $userName, $altUserName=false)
Make user link (or user contributions for unregistered users)
static revDeleteLinkDisabled( $delete=true)
Creates a dead (show/hide) link for deleting revisions/log entries.
static userToolLinks( $userId, $userText, $redContribsWhenNoEdits=false, $flags=0, $edits=null, $useParentheses=true)
Generate standard user tool links (talk, contributions, block link, etc.)
static revDeleteLink( $query=[], $restricted=false, $delete=true)
Creates a (show/hide) link for deleting revisions/log entries.
static formatComment( $comment, $title=null, $local=false, $wikiId=null)
This function is called by all recent changes variants, by the page history, and by the user contribu...
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
Represents a title within MediaWiki.
getConfig()
Get the site configuration.
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
if(!isset( $args[0])) $lang