X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/mediawiki.git/blobdiff_plain/74c929b24b048c9f1e31e17db757ae4195cd7673..19e297c21b10b1b8a3acad5e73fc71dcb35db44a:/includes/api/ApiPurge.php diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php index d7202a46..2f4648be 100644 --- a/includes/api/ApiPurge.php +++ b/includes/api/ApiPurge.php @@ -1,11 +1,11 @@ extractRequestParams(); - if(!$wgUser->isAllowed('purge')) - $this->dieUsageMsg(array('cantpurge')); - if(!isset($params['titles'])) - $this->dieUsageMsg(array('missingparam', 'titles')); + if ( !$wgUser->isAllowed( 'purge' ) && !$this->getMain()->isInternalMode() && + !$this->getMain()->getRequest()->wasPosted() ) { + $this->dieUsageMsg( array( 'mustbeposted', $this->getModuleName() ) ); + } $result = array(); - foreach($params['titles'] as $t) { + foreach ( $params['titles'] as $t ) { $r = array(); - $title = Title::newFromText($t); - if(!$title instanceof Title) - { + $title = Title::newFromText( $t ); + if ( !$title instanceof Title ) { $r['title'] = $t; $r['invalid'] = ''; $result[] = $r; continue; } - ApiQueryBase::addTitleInfo($r, $title); - if(!$title->exists()) - { + ApiQueryBase::addTitleInfo( $r, $title ); + if ( !$title->exists() ) { $r['missing'] = ''; $result[] = $r; continue; } - $article = new Article($title); + $article = MediaWiki::articleFromTitle( $title ); $article->doPurge(); // Directly purge and skip the UI part of purge(). $r['purged'] = ''; $result[] = $r; } - $this->getResult()->setIndexedTagName($result, 'page'); - $this->getResult()->addValue(null, $this->getModuleName(), $result); + $this->getResult()->setIndexedTagName( $result, 'page' ); + $this->getResult()->addValue( null, $this->getModuleName(), $result ); + } + + public function isWriteMode() { + return true; } public function getAllowedParams() { - return array ( + return array( 'titles' => array( - ApiBase :: PARAM_ISMULTI => true + ApiBase::PARAM_ISMULTI => true, + ApiBase::PARAM_REQUIRED => true ) ); } public function getParamDescription() { - return array ( + return array( 'titles' => 'A list of titles', ); } public function getDescription() { - return array ( - 'Purge the cache for the given titles.' + return array( 'Purge the cache for the given titles.', + 'This module requires a POST request if the user is not logged in.' ); } + public function getPossibleErrors() { + return array_merge( parent::getPossibleErrors(), array( + array( 'cantpurge' ), + ) ); + } + protected function getExamples() { return array( 'api.php?action=purge&titles=Main_Page|API' @@ -101,6 +112,6 @@ class ApiPurge extends ApiBase { } public function getVersion() { - return __CLASS__ . ': $Id: ApiPurge.php 41020 2008-09-19 00:21:03Z demon $'; + return __CLASS__ . ': $Id$'; } }