From b624df0d43b743de28a6a612e1f2f7cf6ac86280 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Thu, 4 Sep 2008 21:53:43 +0000 Subject: [PATCH] (bug 15466) Added action=purge to the API. Modified patch by ^demon --- RELEASE-NOTES | 1 + includes/AutoLoader.php | 1 + includes/api/ApiBase.php | 1 + includes/api/ApiMain.php | 1 + includes/api/ApiPurge.php | 102 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 includes/api/ApiPurge.php diff --git a/RELEASE-NOTES b/RELEASE-NOTES index aa1a158b80..34cf164a3b 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -214,6 +214,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN return just "Unknown error" * (bug 15448) YAML output returns empty values instead of 0 * (bug 15445) Added action=patrol +* (bug 15466) Added action=purge === Languages updated in 1.14 === diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 0ca2c94eef..d134004a36 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -240,6 +240,7 @@ $wgAutoloadLocalClasses = array( 'ApiParse' => 'includes/api/ApiParse.php', 'ApiPatrol' => 'includes/api/ApiPatrol.php', 'ApiProtect' => 'includes/api/ApiProtect.php', + 'ApiPurge' => 'includes/api/ApiPurge.php', 'ApiQuery' => 'includes/api/ApiQuery.php', 'ApiQueryAllCategories' => 'includes/api/ApiQueryAllCategories.php', 'ApiQueryAllimages' => 'includes/api/ApiQueryAllimages.php', diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 387b2b5380..144f61f705 100644 --- a/includes/api/ApiBase.php +++ b/includes/api/ApiBase.php @@ -680,6 +680,7 @@ abstract class ApiBase { 'createonly-exists' => array('code' => 'articleexists', 'info' => "The article you tried to create has been created already"), 'nocreate-missing' => array('code' => 'missingtitle', 'info' => "The article you tried to edit doesn't exist"), 'nosuchrcid' => array('code' => 'nosuchrcid', 'info' => "There is no change with rcid ``$1''"), + 'cantpurge' => array('code' => 'cantpurge', 'info' => "Only users with the 'purge' right can purge pages via the API"), // ApiEditPage messages 'noimageredirect-anon' => array('code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects"), diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index ef053267cd..4c41209884 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -65,6 +65,7 @@ class ApiMain extends ApiBase { 'feedwatchlist' => 'ApiFeedWatchlist', 'help' => 'ApiHelp', 'paraminfo' => 'ApiParamInfo', + 'purge' => 'ApiPurge', ); private static $WriteModules = array ( diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php new file mode 100644 index 0000000000..96df1ada2c --- /dev/null +++ b/includes/api/ApiPurge.php @@ -0,0 +1,102 @@ +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 = new Article($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 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.' + ); + } + + protected function getExamples() { + return array( + 'api.php?action=purge&titles=Main_Page|API' + ); + } + + public function getVersion() { + return __CLASS__ . ': $Id$'; + } +} -- 2.20.1