From: Matthew Britton Date: Mon, 6 Jun 2011 08:45:54 +0000 (+0000) Subject: follow up r89513: avoid internal error when only invalid revids/pageids are passed X-Git-Tag: 1.31.0-rc.0~29678 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=8a1f6bd717b0203d2c96bf4ff535c97633d9d553;p=lhc%2Fweb%2Fwiklou.git follow up r89513: avoid internal error when only invalid revids/pageids are passed --- diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php index 862468d937..3b49647852 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -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 );