follow up r89513: avoid internal error when only invalid revids/pageids are passed
authorMatthew Britton <gurch@users.mediawiki.org>
Mon, 6 Jun 2011 08:45:54 +0000 (08:45 +0000)
committerMatthew Britton <gurch@users.mediawiki.org>
Mon, 6 Jun 2011 08:45:54 +0000 (08:45 +0000)
includes/api/ApiPageSet.php

index 862468d..3b49647 100644 (file)
@@ -451,17 +451,19 @@ class ApiPageSet extends ApiQueryBase {
 
                $pageids = self::getPositiveIntegers( $pageids );
 
-               $set = array(
-                       'page_id' => $pageids
-               );
-               $db = $this->getDB();
-
-               // Get pageIDs data from the `page` table
-               $this->profileDBIn();
-               $res = $db->select( 'page', $this->getPageTableFields(), $set,
-                                       __METHOD__ );
-               $this->profileDBOut();
+               if ( count( $pageids ) ) {
+                       $set = array(
+                               'page_id' => $pageids
+                       );
+                       $db = $this->getDB();
 
+                       // Get pageIDs data from the `page` table
+                       $this->profileDBIn();
+                       $res = $db->select( 'page', $this->getPageTableFields(), $set,
+                                               __METHOD__ );
+                       $this->profileDBOut();
+               }
+               
                $this->initFromQueryResult( $res, $remaining, false );  // process PageIDs
 
                // Resolve any found redirects
@@ -540,21 +542,23 @@ class ApiPageSet extends ApiQueryBase {
 
                $revids = self::getPositiveIntegers( $revids );
 
-               $tables = array( 'revision', 'page' );
-               $fields = array( 'rev_id', 'rev_page' );
-               $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
-
-               // Get pageIDs data from the `page` table
-               $this->profileDBIn();
-               $res = $db->select( $tables, $fields, $where,  __METHOD__ );
-               foreach ( $res as $row ) {
-                       $revid = intval( $row->rev_id );
-                       $pageid = intval( $row->rev_page );
-                       $this->mGoodRevIDs[$revid] = $pageid;
-                       $pageids[$pageid] = '';
-                       unset( $remaining[$revid] );
+               if ( count( $revids ) ) {
+                       $tables = array( 'revision', 'page' );
+                       $fields = array( 'rev_id', 'rev_page' );
+                       $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
+
+                       // Get pageIDs data from the `page` table
+                       $this->profileDBIn();
+                       $res = $db->select( $tables, $fields, $where,  __METHOD__ );
+                       foreach ( $res as $row ) {
+                               $revid = intval( $row->rev_id );
+                               $pageid = intval( $row->rev_page );
+                               $this->mGoodRevIDs[$revid] = $pageid;
+                               $pageids[$pageid] = '';
+                               unset( $remaining[$revid] );
+                       }
+                       $this->profileDBOut();
                }
-               $this->profileDBOut();
 
                $this->mMissingRevIDs = array_keys( $remaining );