if ( isset( $params['rcid'] ) ) {
$rc = RecentChange::newFromId( $params['rcid'] );
if ( !$rc ) {
- $this->dieUsageMsg( [ 'nosuchrcid', $params['rcid'] ] );
+ $this->dieWithError( [ 'apierror-nosuchrcid', $params['rcid'] ] );
}
} else {
$rev = Revision::newFromId( $params['revid'] );
if ( !$rev ) {
- $this->dieUsageMsg( [ 'nosuchrevid', $params['revid'] ] );
+ $this->dieWithError( [ 'apierror-nosuchrevid', $params['revid'] ] );
}
$rc = $rev->getRecentChange();
if ( !$rc ) {
- $this->dieUsage(
- 'The revision ' . $params['revid'] . " can't be patrolled as it's too old",
- 'notpatrollable'
- );
+ $this->dieWithError( [ 'apierror-notpatrollable', $params['revid'] ] );
}
}
- $retval = $rc->doMarkPatrolled( $this->getUser() );
+ $user = $this->getUser();
+ $tags = $params['tags'];
+
+ // Check if user can add tags
+ if ( !is_null( $tags ) ) {
+ $ableToTag = ChangeTags::canAddTagsAccompanyingChange( $tags, $user );
+ if ( !$ableToTag->isOK() ) {
+ $this->dieStatus( $ableToTag );
+ }
+ }
+
+ $retval = $rc->doMarkPatrolled( $user, false, $tags );
if ( $retval ) {
- $this->dieUsageMsg( reset( $retval ) );
+ $this->dieStatus( $this->errorArrayToStatus( $retval, $user ) );
}
$result = [ 'rcid' => intval( $rc->getAttribute( 'rc_id' ) ) ];
'revid' => [
ApiBase::PARAM_TYPE => 'integer'
],
+ 'tags' => [
+ ApiBase::PARAM_TYPE => 'tags',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
];
}
}
public function getHelpUrls() {
- return 'https://www.mediawiki.org/wiki/API:Patrol';
+ return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Patrol';
}
}