* (bug 27717) API's exturlusage module does not respect $wgMiserMode
authorSam Reed <reedy@users.mediawiki.org>
Sun, 6 Mar 2011 19:15:07 +0000 (19:15 +0000)
committerSam Reed <reedy@users.mediawiki.org>
Sun, 6 Mar 2011 19:15:07 +0000 (19:15 +0000)
Implement ApiQueryCategoryMembers style miser mode stuffs

RELEASE-NOTES
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryExtLinksUsage.php

index 4bd27a6..a90d041 100644 (file)
@@ -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 ===
 
index 15da5cd..d1b4d8b 100644 (file)
@@ -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'],
index 07d5b1b..9ab7fef 100644 (file)
@@ -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() {