diff options
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-api/src/Service/RevisionPatroller.php')
-rw-r--r-- | bin/wiki/vendor/addwiki/mediawiki-api/src/Service/RevisionPatroller.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/RevisionPatroller.php b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/RevisionPatroller.php new file mode 100644 index 00000000..e642fd96 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/RevisionPatroller.php @@ -0,0 +1,47 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\Revision; + +/** + * @access private + * + * @author Addshore + */ +class RevisionPatroller extends Service { + + /** + * @since 0.3 + * + * @param Revision $revision + * + * @return bool success + */ + public function patrol( Revision $revision ) { + $this->api->postRequest( new SimpleRequest( + 'patrol', [ + 'revid' => $revision->getId(), + 'token' => $this->getTokenForRevision( $revision ), + ] ) ); + return true; + } + + /** + * @param Revision $revision + * + * @returns string + */ + private function getTokenForRevision( Revision $revision ) { + $result = $this->api->postRequest( new SimpleRequest( 'query', [ + 'list' => 'recentchanges', + 'rcstart' => $revision->getTimestamp(), + 'rcend' => $revision->getTimestamp(), + 'rctoken' => 'patrol', + ] ) ); + $result = array_shift( $result['query']['recentchanges'] ); + return $result['patroltoken']; + } + +} |