From f483892c900573986eda769231b195b4e8e4e005 Mon Sep 17 00:00:00 2001 From: Sam Reed Date: Sun, 6 Mar 2011 19:15:07 +0000 Subject: [PATCH] * (bug 27717) API's exturlusage module does not respect $wgMiserMode Implement ApiQueryCategoryMembers style miser mode stuffs --- RELEASE-NOTES | 1 + includes/api/ApiQueryCategoryMembers.php | 1 + includes/api/ApiQueryExtLinksUsage.php | 26 ++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 4bd27a6bf4..a90d0414ef 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -216,6 +216,7 @@ PHP if you have not done so prior to upgrading MediaWiki. * (bug 27587) list=filearchive now outputs full title info * (bug 27018) Added action=filerevert to revert files to an old version * (bug 27897) list=allusers and list=users list hidden users +* (bug 27717) API's exturlusage module does not respect $wgMiserMode === Languages updated in 1.18 === diff --git a/includes/api/ApiQueryCategoryMembers.php b/includes/api/ApiQueryCategoryMembers.php index 15da5cd48d..d1b4d8bfc2 100644 --- a/includes/api/ApiQueryCategoryMembers.php +++ b/includes/api/ApiQueryCategoryMembers.php @@ -311,6 +311,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase { 'continue' => 'For large categories, give the value retured from previous query', 'limit' => 'The maximum number of pages to return.', ); + if ( $wgMiserMode ) { $desc['namespace'] = array( $desc['namespace'], diff --git a/includes/api/ApiQueryExtLinksUsage.php b/includes/api/ApiQueryExtLinksUsage.php index 07d5b1bb30..9ab7fefda7 100644 --- a/includes/api/ApiQueryExtLinksUsage.php +++ b/includes/api/ApiQueryExtLinksUsage.php @@ -64,7 +64,14 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase { $this->addTables( array( 'page', 'externallinks' ) ); // must be in this order for 'USE INDEX' $this->addOption( 'USE INDEX', 'el_index' ); $this->addWhere( 'page_id=el_from' ); - $this->addWhereFld( 'page_namespace', $params['namespace'] ); + + global $wgMiserMode; + $miser_ns = array(); + if ( $wgMiserMode ) { + $miser_ns = $params['namespace']; + } else { + $this->addWhereFld( 'page_namespace', $params['namespace'] ); + } $whereQuery = $this->prepareUrlQuerySearchString( $db, $query, $protocol ); @@ -106,6 +113,10 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase { break; } + if ( count( $miser_ns ) && !in_array( $row->page_namespace, $miser_ns ) ) { + continue; + } + if ( is_null( $resultPageSet ) ) { $vals = array(); if ( $fld_ids ) { @@ -194,8 +205,9 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase { } public function getParamDescription() { + global $wgMiserMode; $p = $this->getModulePrefix(); - return array( + $desc = array( 'prop' => array( 'What pieces of information to include', ' ids - Adds the ID of page', @@ -211,6 +223,16 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase { 'namespace' => 'The page namespace(s) to enumerate.', 'limit' => 'How many pages to return.' ); + + if ( $wgMiserMode ) { + $desc['namespace'] = array( + $desc['namespace'], + 'NOTE: Due to $wgMiserMode, using this may result in fewer than "limit" results', + 'returned before continuing; in extreme cases, zero results may be returned', + ); + } + + return $desc; } public function getDescription() { -- 2.20.1