extractRequestParams(); if ( !$wgUser->isAllowed( 'purge' ) ) $this->dieUsageMsg( array( 'cantpurge' ) ); if ( !isset( $params['titles'] ) ) $this->dieUsageMsg( array( 'missingparam', 'titles' ) ); $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 mustBePosted() { global $wgUser; return $wgUser->isAnon(); } public function isWriteMode() { return true; } public function getAllowedParams() { return array ( 'titles' => array( ApiBase :: PARAM_ISMULTI => true ) ); } public function getParamDescription() { return array ( 'titles' => 'A list of titles', ); } public function getDescription() { return array ( 'Purge the cache for the given titles.' ); } public function getPossibleErrors() { return array_merge( parent::getPossibleErrors(), array( array( 'cantpurge' ), array( 'missingparam', 'titles' ), ) ); } protected function getExamples() { return array( 'api.php?action=purge&titles=Main_Page|API' ); } public function getVersion() { return __CLASS__ . ': $Id: ApiPurge.php 69578 2010-07-20 02:46:20Z tstarling $'; } }