diff options
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-api/src/Service/PageDeleter.php')
-rw-r--r-- | bin/wiki/vendor/addwiki/mediawiki-api/src/Service/PageDeleter.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/PageDeleter.php b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/PageDeleter.php new file mode 100644 index 00000000..60c43e30 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/PageDeleter.php @@ -0,0 +1,105 @@ +<?php + +namespace Mediawiki\Api\Service; + +use Mediawiki\Api\SimpleRequest; +use Mediawiki\DataModel\Page; +use Mediawiki\DataModel\PageIdentifier; +use Mediawiki\DataModel\Revision; +use Mediawiki\DataModel\Title; + +/** + * @access private + * + * @author Addshore + */ +class PageDeleter extends Service { + + /** + * @since 0.2 + * + * @param Page $page + * @param array $extraParams + * + * @return bool + */ + public function delete( Page $page, array $extraParams = [] ) { + $this->api->postRequest( new SimpleRequest( + 'delete', + $this->getDeleteParams( $page->getPageIdentifier(), $extraParams ) + ) ); + return true; + } + + /** + * @since 0.2 + * + * @param Revision $revision + * @param array $extraParams + * + * @return bool + */ + public function deleteFromRevision( Revision $revision, array $extraParams = [] ) { + $this->api->postRequest( new SimpleRequest( + 'delete', + $this->getDeleteParams( $revision->getPageIdentifier(), $extraParams ) + ) ); + return true; + } + + /** + * @since 0.2 + * + * @param int $pageid + * @param array $extraParams + * + * @return bool + */ + public function deleteFromPageId( $pageid, array $extraParams = [] ) { + $this->api->postRequest( new SimpleRequest( + 'delete', + $this->getDeleteParams( new PageIdentifier( null, $pageid ), $extraParams ) + ) ); + return true; + } + + /** + * @since 0.5 + * + * @param Title|string $title + * @param array $extraParams + * + * @return bool + */ + public function deleteFromPageTitle( $title, array $extraParams = [] ) { + if ( is_string( $title ) ) { + $title = new Title( $title ); + } + $this->api->postRequest( new SimpleRequest( + 'delete', + $this->getDeleteParams( new PageIdentifier( $title ), $extraParams ) + ) ); + return true; + } + + /** + * @param PageIdentifier $identifier + * @param array $extraParams + * + * @return array + */ + private function getDeleteParams( PageIdentifier $identifier, $extraParams ) { + $params = []; + + if ( !is_null( $identifier->getId() ) ) { + $params['pageid'] = $identifier->getId(); + } else { + $params['title'] = $identifier->getTitle()->getTitle(); + } + + $params['token'] = $this->api->getToken( 'delete' ); + + return array_merge( $extraParams, $params ); + } + +} |