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/PageRestorer.php | |
parent | 8c201ace3699b4928daf41eb7b4cdcb4565c6f3b (diff) |
adds reevotech scripts
Diffstat (limited to 'bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/PageRestorer.php')
-rw-r--r-- | bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/PageRestorer.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/PageRestorer.php b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/PageRestorer.php new file mode 100644 index 00000000..a422bd97 --- /dev/null +++ b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/PageRestorer.php @@ -0,0 +1,76 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\Page; +use Mediawiki\DataModel\Title; +use OutOfBoundsException; + +/** + * @access private + * + * @author Addshore + */ +class PageRestorer extends Service { + + /** + * @since 0.3 + * + * @param Page $page + * @param array $extraParams + * + * @return bool + */ + public function restore( Page $page, array $extraParams = [] ) { + $this->api->postRequest( + new SimpleRequest( + 'undelete', + $this->getUndeleteParams( $page->getTitle(), $extraParams ) + ) + ); + + return true; + } + + /** + * @param Title $title + * @param array $extraParams + * + * @return array + */ + private function getUndeleteParams( Title $title, $extraParams ) { + $params = []; + + $params['title'] = $title->getTitle(); + $params['token'] = $this->getUndeleteToken( $title ); + + return array_merge( $extraParams, $params ); + } + + /** + * @param Title $title + * + * @throws OutOfBoundsException + * @returns string + */ + private function getUndeleteToken( Title $title ) { + $response = $this->api->postRequest( + new SimpleRequest( + 'query', [ + 'list' => 'deletedrevs', + 'titles' => $title->getTitle(), + 'drprop' => 'token', + ] + ) + ); + if ( array_key_exists( 'token', $response['query']['deletedrevs'][0] ) ) { + return $response['query']['deletedrevs'][0]['token']; + } else { + throw new OutOfBoundsException( + 'Could not get page undelete token from list=deletedrevs query' + ); + } + } + +} |