From: Roan Kattouw Date: Sat, 26 Apr 2008 15:30:27 +0000 (+0000) Subject: (bug 13735) Added prop=categoryinfo module X-Git-Tag: 1.31.0-rc.0~48058 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=80da31e04cb18cf815f0fd32ce690c07938ab970;p=lhc%2Fweb%2Fwiklou.git (bug 13735) Added prop=categoryinfo module --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 19f6b6f828..03e0351477 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -269,6 +269,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * Fixed handling of usernames containing spaces in list=block * (bug 13836) Fixed fatal errors resulting from combining iiprop=metadata with format=xml +* (bug 13735) Added prop=categoryinfo module === Languages updated in 1.13 === diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 51c0c024a2..1dee7b1215 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -361,6 +361,7 @@ function __autoload($className) { 'ApiQueryBase' => 'includes/api/ApiQueryBase.php', 'ApiQueryCategories' => 'includes/api/ApiQueryCategories.php', 'ApiQueryCategoryMembers' => 'includes/api/ApiQueryCategoryMembers.php', + 'ApiQueryCategoryInfo' => 'includes/api/ApiQueryCategoryInfo.php', 'ApiQueryContributions' => 'includes/api/ApiQueryUserContributions.php', 'ApiQueryExternalLinks' => 'includes/api/ApiQueryExternalLinks.php', 'ApiQueryExtLinksUsage' => 'includes/api/ApiQueryExtLinksUsage.php', diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php index a220e580b6..8f2f8dfc7f 100644 --- a/includes/api/ApiQuery.php +++ b/includes/api/ApiQuery.php @@ -55,6 +55,7 @@ class ApiQuery extends ApiBase { 'templates' => 'ApiQueryLinks', 'categories' => 'ApiQueryCategories', 'extlinks' => 'ApiQueryExternalLinks', + 'categoryinfo' => 'ApiQueryCategoryInfo', ); private $mQueryListModules = array ( diff --git a/includes/api/ApiQueryCategoryInfo.php b/includes/api/ApiQueryCategoryInfo.php new file mode 100644 index 0000000000..1929241a54 --- /dev/null +++ b/includes/api/ApiQueryCategoryInfo.php @@ -0,0 +1,89 @@ +@gmail.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * http://www.gnu.org/copyleft/gpl.html + */ + +if (!defined('MEDIAWIKI')) { + // Eclipse helper - will be ignored in production + require_once ("ApiQueryBase.php"); +} + +/** + * This query adds subelement to all pages with the list of images embedded into those pages. + * + * @addtogroup API + */ +class ApiQueryCategoryInfo extends ApiQueryBase { + + public function __construct($query, $moduleName) { + parent :: __construct($query, $moduleName, 'ci'); + } + + public function execute() { + $alltitles = $this->getPageSet()->getAllTitlesByNamespace(); + $categories = $alltitles[NS_CATEGORY]; + if(empty($categories)) + return; + + $titles = $this->getPageSet()->getGoodTitles() + + $this->getPageSet()->getMissingTitles(); + $cattitles = array(); + foreach($categories as $c) + { + $t = $titles[$c]; + $cattitles[$c] = $t->getDbKey(); + } + + $this->addTables('category'); + $this->addFields(array('cat_title', 'cat_pages', 'cat_subcats', 'cat_files')); + $this->addWhere(array('cat_title' => $cattitles)); + + $db = $this->getDB(); + $res = $this->select(__METHOD__); + + $data = array(); + $catids = array_flip($cattitles); + while($row = $db->fetchObject($res)) + { + $vals = array(); + $vals['size'] = $row->cat_pages; + $vals['pages'] = $row->cat_pages - $row->cat_subcats - $row->cat_files; + $vals['files'] = $row->cat_files; + $vals['subcats'] = $row->cat_subcats; + $this->addPageSubItems($catids[$row->cat_title], $vals); + } + $db->freeResult($res); + } + + public function getDescription() { + return 'Returns information about the given categories'; + } + + protected function getExamples() { + return "api.php?action=query&prop=categoryinfo&titles=Category:Foo|Category:Bar"; + } + + public function getVersion() { + return __CLASS__ . ': $Id$'; + } +}