$this->mUnsuppress = $request->getVal( 'wpUnsuppress' ) && $user->isAllowed( 'suppressrevision' );
$this->mToken = $request->getVal( 'token' );
- if ( $this->isAllowed( 'undelete' ) && !$user->isBlocked() ) {
+ $block = $user->getBlock();
+ if ( $this->isAllowed( 'undelete' ) && !( $block && $block->isSitewide() ) ) {
$this->mAllowed = true; // user can restore
$this->mCanView = true; // user can view content
} elseif ( $this->isAllowed( 'deletedtext' ) ) {
*/
protected function isAllowed( $permission, User $user = null ) {
$user = $user ?: $this->getUser();
+ $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
+
if ( $this->mTargetObj !== null ) {
- return $this->mTargetObj->userCan( $permission, $user );
+ return $permissionManager->userCan( $permission, $user, $this->mTargetObj );
} else {
return $user->isAllowed( $permission );
}
} else {
$this->showFile( $this->mFilename );
}
- } elseif ( $this->mAction === "submit" ) {
+ } elseif ( $this->mAction === 'submit' ) {
if ( $this->mRestore ) {
$this->undelete();
} elseif ( $this->mRevdel ) {
foreach ( $this->getRequest()->getValues() as $key => $val ) {
$matches = [];
if ( preg_match( "/^ts(\d{14})$/", $key, $matches ) ) {
- $revisions[ $archive->getRevision( $matches[1] )->getId() ] = 1;
+ $revisions[$archive->getRevision( $matches[1] )->getId()] = 1;
}
}
+
$query = [
- "type" => "revision",
- "ids" => $revisions,
- "target" => $this->mTargetObj->getPrefixedText()
+ 'type' => 'revision',
+ 'ids' => $revisions,
+ 'target' => $this->mTargetObj->getPrefixedText()
];
$url = SpecialPage::getTitleFor( 'Revisiondelete' )->getFullURL( $query );
$this->getOutput()->redirect( $url );
Message::rawParam( $link ), $time,
Message::rawParam( $userLink ), $d, $t
);
- $out->addHtml( '</div>' );
+ $out->addHTML( '</div>' );
if ( !Hooks::run( 'UndeleteShowRevision', [ $this->mTargetObj, $rev ] ) ) {
return;
'readonly' => 'readonly',
'cols' => 80,
'rows' => 25
- ], $content->getNativeData() . "\n" );
+ ], $content->getText() . "\n" );
$buttonFields[] = new OOUI\ButtonInputWidget( [
'type' => 'submit',
] );
} else {
$sourceView = '';
- $previewButton = '';
}
$buttonFields[] = new OOUI\ButtonInputWidget( [
*
* @param Revision $previousRev
* @param Revision $currentRev
- * @return string HTML
*/
function showDiff( $previousRev, $currentRev ) {
$diffContext = clone $this->getContext();
$repo = RepoGroup::singleton()->getLocalRepo();
$path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
- $repo->streamFile( $path );
+ $repo->streamFileWithStatus( $path );
}
protected function showHistory() {
'content' => new OOUI\HtmlSnippet( $this->msg( 'undeleteextrahelp' )->parseAsBlock() )
] );
- $conf = $this->getConfig();
- $oldCommentSchema = $conf->get( 'CommentTableSchemaMigrationStage' ) === MIGRATION_OLD;
-
$fields[] = new OOUI\FieldLayout(
new OOUI\TextInputWidget( [
'name' => 'wpComment',
'autofocus' => true,
// HTML maxlength uses "UTF-16 code units", which means that characters outside BMP
// (e.g. emojis) count for two each. This limit is overridden in JS to instead count
- // Unicode codepoints (or 255 UTF-8 bytes for old schema).
- 'maxLength' => $oldCommentSchema ? 255 : CommentStore::COMMENT_CHARACTER_LIMIT,
+ // Unicode codepoints.
+ 'maxLength' => CommentStore::COMMENT_CHARACTER_LIMIT,
] ),
[
'label' => $this->msg( 'undeletecomment' )->text(),