$this->useTransactionalTimeLimit();
$params = $this->extractRequestParams();
- $user = $this->getUser();
- if ( !$user->isAllowed( 'undelete' ) ) {
- $this->dieUsageMsg( 'permdenied-undelete' );
- }
+ $this->checkUserRightsAny( 'undelete' );
+ $user = $this->getUser();
if ( $user->isBlocked() ) {
$this->dieBlocked( $user->getBlock() );
}
$titleObj = Title::newFromText( $params['title'] );
if ( !$titleObj || $titleObj->isExternal() ) {
- $this->dieUsageMsg( [ 'invalidtitle', $params['title'] ] );
+ $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['title'] ) ] );
+ }
+
+ // Check if user can add tags
+ if ( !is_null( $params['tags'] ) ) {
+ $ableToTag = ChangeTags::canAddTagsAccompanyingChange( $params['tags'], $user );
+ if ( !$ableToTag->isOK() ) {
+ $this->dieStatus( $ableToTag );
+ }
}
// Convert timestamps
$params['reason'],
$params['fileids'],
false,
- $this->getUser()
+ $user,
+ $params['tags']
);
if ( !is_array( $retval ) ) {
- $this->dieUsageMsg( 'cannotundelete' );
+ $this->dieWithError( 'apierror-cantundelete' );
}
if ( $retval[1] ) {
ApiBase::PARAM_REQUIRED => true
],
'reason' => '',
+ 'tags' => [
+ ApiBase::PARAM_TYPE => 'tags',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
'timestamps' => [
ApiBase::PARAM_TYPE => 'timestamp',
ApiBase::PARAM_ISMULTI => true,