diff options
author | Yaco <franco@reevo.org> | 2021-10-19 20:42:50 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2021-10-19 20:42:50 -0300 |
commit | 1dc109c979d7788e8811b4eecfb8bfdf3b6ea6e2 (patch) | |
tree | 21d2a3bd6706af9eeb3e9d1def5a6ab8d8a67e93 /bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php | |
parent | 8c201ace3699b4928daf41eb7b4cdcb4565c6f3b (diff) |
adds reevotech scripts
Diffstat (limited to 'bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php')
-rw-r--r-- | bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php new file mode 100644 index 00000000..76a2f5c7 --- /dev/null +++ b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/RevisionRollbacker.php @@ -0,0 +1,73 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\Revision; +use Mediawiki\DataModel\Title; + +/** + * @access private + * + * @author Addshore + */ +class RevisionRollbacker extends Service { + + /** + * @since 0.3 + * + * @param Revision $revision + * @param Title $title if using MW 1.24 of lower (https://gerrit.wikimedia.org/r/#/c/133063/) + * + * @return bool + */ + public function rollback( Revision $revision, Title $title = null ) { + $this->api->postRequest( + new SimpleRequest( 'rollback', $this->getRollbackParams( $revision, $title ) ) + ); + + return true; + } + + /** + * @param Revision $revision + * @param Title|null $title + * + * @return array + */ + private function getRollbackParams( Revision $revision, $title ) { + $params = []; + if ( !is_null( $title ) ) { + // This is needed prior to https://gerrit.wikimedia.org/r/#/c/133063/ + $params['title'] = $title->getTitle(); + } else { + // This will work after https://gerrit.wikimedia.org/r/#/c/133063/ + $params['pageid'] = $revision->getPageId(); + } + $params['user'] = $revision->getUser(); + $params['token'] = $this->getTokenForRevision( $revision ); + + return $params; + } + + /** + * @param Revision $revision + * + * @returns string + */ + private function getTokenForRevision( Revision $revision ) { + $result = $this->api->postRequest( + new SimpleRequest( + 'query', [ + 'prop' => 'revisions', + 'revids' => $revision->getId(), + 'rvtoken' => 'rollback', + ] + ) + ); + $result = array_shift( $result['query']['pages'] ); + + return $result['revisions'][0]['rollbacktoken']; + } + +} |