X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUndelete.php;h=7d6c41ab2decb84a42db58d1b2766a4c44c09047;hb=ab66b66c25cc2ffdbc29495adc1d49a491225387;hp=6a01b0c49fc05b037d60bfaf02615e19ab46faf0;hpb=65f12f7190442dcea96eb8d642ebbf8c39df1427;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 6a01b0c49f..7d6c41ab2d 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -23,6 +23,7 @@ use MediaWiki\MediaWikiServices; use MediaWiki\Revision\RevisionRecord; +use MediaWiki\Storage\NameTableAccessException; use Wikimedia\Rdbms\IResultWrapper; /** @@ -94,7 +95,8 @@ class SpecialUndelete extends SpecialPage { $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' ) ) { @@ -198,7 +200,7 @@ class SpecialUndelete extends SpecialPage { } else { $this->showFile( $this->mFilename ); } - } elseif ( $this->mAction === "submit" ) { + } elseif ( $this->mAction === 'submit' ) { if ( $this->mRestore ) { $this->undelete(); } elseif ( $this->mRevdel ) { @@ -222,13 +224,14 @@ class SpecialUndelete extends SpecialPage { 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 ); @@ -492,7 +495,7 @@ class SpecialUndelete extends SpecialPage { 'readonly' => 'readonly', 'cols' => 80, 'rows' => 25 - ], $content->getNativeData() . "\n" ); + ], $content->getText() . "\n" ); $buttonFields[] = new OOUI\ButtonInputWidget( [ 'type' => 'submit', @@ -596,12 +599,22 @@ class SpecialUndelete extends SpecialPage { $minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : ''; - $tags = wfGetDB( DB_REPLICA )->selectField( - 'tag_summary', - 'ts_tags', - [ 'ts_rev_id' => $rev->getId() ], + $tagIds = wfGetDB( DB_REPLICA )->selectFieldValues( + 'change_tag', + 'ct_tag_id', + [ 'ct_rev_id' => $rev->getId() ], __METHOD__ ); + $tags = []; + $changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore(); + foreach ( $tagIds as $tagId ) { + try { + $tags[] = $changeTagDefStore->getName( (int)$tagId ); + } catch ( NameTableAccessException $exception ) { + continue; + } + } + $tags = implode( ',', $tags ); $tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff', $this->getContext() ); // FIXME This is reimplementing DifferenceEngine#getRevisionHeader @@ -758,9 +771,6 @@ class SpecialUndelete extends SpecialPage { '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', @@ -770,8 +780,8 @@ class SpecialUndelete extends SpecialPage { '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(),