extractRequestParams(); if ( !$wgUser->isAllowed( 'purge' ) && !$this->getMain()->isInternalMode() && !$this->getMain()->getRequest()->wasPosted() ) { $this->dieUsageMsg( array( 'mustbeposted', $this->getModuleName() ) ); } $result = array(); foreach ( $params['titles'] as $t ) { $r = array(); $title = Title::newFromText( $t ); if ( !$title instanceof Title ) { $r['title'] = $t; $r['invalid'] = ''; $result[] = $r; continue; } ApiQueryBase::addTitleInfo( $r, $title ); if ( !$title->exists() ) { $r['missing'] = ''; $result[] = $r; continue; } $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 ); } public function isWriteMode() { return true; } public function getAllowedParams() { return array( 'titles' => array( ApiBase::PARAM_ISMULTI => true, ApiBase::PARAM_REQUIRED => true ) ); } public function getParamDescription() { return array( 'titles' => 'A list of titles', ); } public function getDescription() { 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' ); } public function getVersion() { return __CLASS__ . ': $Id: ApiPurge.php 74944 2010-10-18 09:19:20Z catrope $'; } }