* @param $comment String
* @param $fileVersions Array
* @param $unsuppress Boolean
+ * @param $user User doing the action, or null to use $wgUser
*
* @return array(number of file revisions restored, number of image revisions restored, log message)
* on success, false on failure
*/
- function undelete( $timestamps, $comment = '', $fileVersions = array(), $unsuppress = false ) {
+ function undelete( $timestamps, $comment = '', $fileVersions = array(), $unsuppress = false, User $user = null ) {
+ global $wgContLang, $wgUser;
+
// If both the set of text revisions and file revisions are empty,
// restore everything. Otherwise, just restore the requested items.
$restoreAll = empty( $timestamps ) && empty( $fileVersions );
}
// Touch the log!
- global $wgContLang;
- $log = new LogPage( 'delete' );
if( $textRestored && $filesRestored ) {
$reason = wfMsgExt( 'undeletedrevisions-files', array( 'content', 'parsemag' ),
if( trim( $comment ) != '' ) {
$reason .= wfMsgForContent( 'colon-separator' ) . $comment;
}
- $log->addEntry( 'restore', $this->title, $reason );
+
+ if ( $user === null ) {
+ $user = $wgUser;
+ }
+
+ $logEntry = new ManualLogEntry( 'delete', 'restore' );
+ $logEntry->setPerformer( $user );
+ $logEntry->setTarget( $this->title );
+ $logEntry->setComment( $reason );
+ $logid = $logEntry->insert();
+ $logEntry->publish( $logid );
return array( $textRestored, $filesRestored, $reason );
}
);
} else {
// The title is no longer valid, show as text
- $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
- $item = htmlspecialchars( $title->getPrefixedText() );
+ $item = Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+ Linker::getInvalidTitleDescription( $this->getContext(), $row->ar_namespace, $row->ar_title ) );
}
$revs = $this->msg( 'undeleterevisions' )->numParams( $row->count )->parse();
$out->addHTML( "<li>{$item} ({$revs})</li>\n" );
"</td>\n" .
"</tr>" .
$diffEngine->generateDiffBody(
- $previousRev->getText(), $currentRev->getText() ) .
+ $previousRev->getText( Revision::FOR_THIS_USER, $this->getUser() ),
+ $currentRev->getText( Revision::FOR_THIS_USER, $this->getUser() ) ) .
"</table>" .
"</div>\n"
);
private function formatRevisionRow( $row, $earliestLiveTime, $remaining ) {
$rev = Revision::newFromArchiveRow( $row,
array( 'page' => $this->mTargetObj->getArticleID() ) );
- $stxt = '';
+ $revTextSize = '';
$ts = wfTimestamp( TS_MW, $row->ar_timestamp );
// Build checkboxen...
if( $this->mAllowed ) {
// Revision text size
$size = $row->ar_len;
if( !is_null( $size ) ) {
- $stxt = Linker::formatRevisionSize( $size );
+ $revTextSize = Linker::formatRevisionSize( $size );
}
// Edit summary
$comment = Linker::revComment( $rev );
// Revision delete links
$revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
- return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
+
+ $revisionRow = $this->msg( 'undelete-revisionrow' )->rawParams( $checkBox, $revdlink, $last, $pageLink , $userLink, $revTextSize, $comment )->escaped();
+ return "<li>$revisionRow</li>";
}
private function formatFileRow( $row ) {
$this->mTargetTimestamp,
$this->mComment,
$this->mFileVersions,
- $this->mUnsuppress );
+ $this->mUnsuppress,
+ $this->getUser()
+ );
if( is_array( $ok ) ) {
if ( $ok[1] ) { // Undeleted file count