MediaWiki master
ApiPatrol.php
Go to the documentation of this file.
1<?php
27
32class ApiPatrol extends ApiBase {
33 private RevisionStore $revisionStore;
34
40 public function __construct(
41 ApiMain $main,
42 $action,
43 RevisionStore $revisionStore
44 ) {
45 parent::__construct( $main, $action );
46 $this->revisionStore = $revisionStore;
47 }
48
52 public function execute() {
54 $this->requireOnlyOneParameter( $params, 'rcid', 'revid' );
55
56 if ( isset( $params['rcid'] ) ) {
57 $rc = RecentChange::newFromId( $params['rcid'] );
58 if ( !$rc ) {
59 $this->dieWithError( [ 'apierror-nosuchrcid', $params['rcid'] ] );
60 }
61 } else {
62 $rev = $this->revisionStore->getRevisionById( $params['revid'] );
63 if ( !$rev ) {
64 $this->dieWithError( [ 'apierror-nosuchrevid', $params['revid'] ] );
65 }
66 $rc = $this->revisionStore->getRecentChange( $rev );
67 if ( !$rc ) {
68 $this->dieWithError( [ 'apierror-notpatrollable', $params['revid'] ] );
69 }
70 }
71
72 $user = $this->getUser();
73 $tags = $params['tags'];
74
75 // Check if user can add tags
76 if ( $tags !== null ) {
77 $ableToTag = ChangeTags::canAddTagsAccompanyingChange( $tags, $this->getAuthority() );
78 if ( !$ableToTag->isOK() ) {
79 $this->dieStatus( $ableToTag );
80 }
81 }
82
83 $status = $rc->markPatrolled( $user, $tags );
84
85 if ( !$status->isGood() ) {
86 $this->dieStatus( $status );
87 }
88
89 $result = [ 'rcid' => (int)$rc->getAttribute( 'rc_id' ) ];
90 ApiQueryBase::addTitleInfo( $result, $rc->getTitle() );
91 $this->getResult()->addValue( null, $this->getModuleName(), $result );
92 }
93
94 public function mustBePosted() {
95 return true;
96 }
97
98 public function isWriteMode() {
99 return true;
100 }
101
102 public function getAllowedParams() {
103 return [
104 'rcid' => [
105 ParamValidator::PARAM_TYPE => 'integer'
106 ],
107 'revid' => [
108 ParamValidator::PARAM_TYPE => 'integer'
109 ],
110 'tags' => [
111 ParamValidator::PARAM_TYPE => 'tags',
112 ParamValidator::PARAM_ISMULTI => true,
113 ],
114 ];
115 }
116
117 public function needsToken() {
118 return 'patrol';
119 }
120
121 protected function getExamplesMessages() {
122 return [
123 'action=patrol&token=123ABC&rcid=230672766'
124 => 'apihelp-patrol-example-rcid',
125 'action=patrol&token=123ABC&revid=230672766'
126 => 'apihelp-patrol-example-revid',
127 ];
128 }
129
130 public function getHelpUrls() {
131 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Patrol';
132 }
133}
array $params
The job parameters.
This abstract class implements many basic API functions, and is the base of all API classes.
Definition ApiBase.php:65
dieWithError( $msg, $code=null, $data=null, $httpCode=0)
Abort execution with an error.
Definition ApiBase.php:1540
requireOnlyOneParameter( $params,... $required)
Die if 0 or more than one of a certain set of parameters is set and not false.
Definition ApiBase.php:960
getResult()
Get the result object.
Definition ApiBase.php:681
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition ApiBase.php:821
getModuleName()
Get the name of the module being executed by this instance.
Definition ApiBase.php:542
dieStatus(StatusValue $status)
Throw an ApiUsageException based on the Status object.
Definition ApiBase.php:1595
This is the main API class, used for both external and internal processing.
Definition ApiMain.php:67
Allows user to patrol pages.
Definition ApiPatrol.php:32
isWriteMode()
Indicates whether this module requires write mode.
Definition ApiPatrol.php:98
execute()
Patrols the article or provides the reason the patrol failed.
Definition ApiPatrol.php:52
needsToken()
Returns the token type this module requires in order to execute.
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
getHelpUrls()
Return links to more detailed help pages about the module.
getExamplesMessages()
Returns usage examples for this module.
mustBePosted()
Indicates whether this module must be called with a POST request.
Definition ApiPatrol.php:94
__construct(ApiMain $main, $action, RevisionStore $revisionStore)
Definition ApiPatrol.php:40
static canAddTagsAccompanyingChange(array $tags, Authority $performer=null, $checkBlock=true)
Is it OK to allow the user to apply all the specified tags at the same time as they edit/make the cha...
Service for looking up page revisions.
Service for formatting and validating API parameters.