X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiPageSet.php;h=913f45ba5f22006c937cbb28e2515adcfcadb6f8;hb=6228415557b1206dce035c9a2751378d120e34e7;hp=26846f4332bdda8eea83016bc95f89ea988f86b6;hpb=1504dea1127a5f7960dcdc4eed5a044f6a962deb;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php index 26846f4332..913f45ba5f 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -418,19 +418,6 @@ class ApiPageSet extends ApiBase { return $this->mGoodTitles + $this->mMissingTitles; } - /** - * Titles that were deemed invalid by Title::newFromText() - * The array's index will be unique and negative for each item - * @deprecated since 1.26, use self::getInvalidTitlesAndReasons() - * @return string[] Array of strings (not Title objects) - */ - public function getInvalidTitles() { - wfDeprecated( __METHOD__, '1.26' ); - return array_map( function ( $t ) { - return $t['title']; - }, $this->mInvalidTitles ); - } - /** * Titles that were deemed invalid by Title::newFromText() * The array's index will be unique and negative for each item @@ -832,8 +819,9 @@ class ApiPageSet extends ApiBase { /** * Does the same as initFromTitles(), but is based on page IDs instead * @param array $pageids Array of page IDs + * @param bool $filterIds Whether the IDs need filtering */ - private function initFromPageIds( $pageids ) { + private function initFromPageIds( $pageids, $filterIds = false ) { if ( !$pageids ) { return; } @@ -841,7 +829,9 @@ class ApiPageSet extends ApiBase { $pageids = array_map( 'intval', $pageids ); // paranoia $remaining = array_flip( $pageids ); - $pageids = self::getPositiveIntegers( $pageids ); + if ( $filterIds ) { + $pageids = $this->filterIDs( [ [ 'page', 'page_id' ] ], $pageids ); + } $res = null; if ( !empty( $pageids ) ) { @@ -952,9 +942,10 @@ class ApiPageSet extends ApiBase { $pageids = []; $remaining = array_flip( $revids ); - $revids = self::getPositiveIntegers( $revids ); + $revids = $this->filterIDs( [ [ 'revision', 'rev_id' ], [ 'archive', 'ar_rev_id' ] ], $revids ); + $goodRemaining = array_flip( $revids ); - if ( !empty( $revids ) ) { + if ( $revids ) { $tables = [ 'revision', 'page' ]; $fields = [ 'rev_id', 'rev_page' ]; $where = [ 'rev_id' => $revids, 'rev_page = page_id' ]; @@ -968,22 +959,20 @@ class ApiPageSet extends ApiBase { $this->mLiveRevIDs[$revid] = $pageid; $pageids[$pageid] = ''; unset( $remaining[$revid] ); + unset( $goodRemaining[$revid] ); } } - $this->mMissingRevIDs = array_keys( $remaining ); - // Populate all the page information - $this->initFromPageIds( array_keys( $pageids ) ); + $this->initFromPageIds( array_keys( $pageids ), false ); // If the user can see deleted revisions, pull out the corresponding // titles from the archive table and include them too. We ignore // ar_page_id because deleted revisions are tied by title, not page_id. - if ( !empty( $this->mMissingRevIDs ) && $this->getUser()->isAllowed( 'deletedhistory' ) ) { - $remaining = array_flip( $this->mMissingRevIDs ); + if ( $goodRemaining && $this->getUser()->isAllowed( 'deletedhistory' ) ) { $tables = [ 'archive' ]; $fields = [ 'ar_rev_id', 'ar_namespace', 'ar_title' ]; - $where = [ 'ar_rev_id' => $this->mMissingRevIDs ]; + $where = [ 'ar_rev_id' => array_keys( $goodRemaining ) ]; $res = $db->select( $tables, $fields, $where, __METHOD__ ); $titles = []; @@ -1015,9 +1004,9 @@ class ApiPageSet extends ApiBase { $remaining[$revid] = true; } } - - $this->mMissingRevIDs = array_keys( $remaining ); } + + $this->mMissingRevIDs = array_keys( $remaining ); } /** @@ -1429,25 +1418,6 @@ class ApiPageSet extends ApiBase { return $this->mDbSource->getDB(); } - /** - * Returns the input array of integers with all values < 0 removed - * - * @param array $array - * @return array - */ - private static function getPositiveIntegers( $array ) { - // T27734 API: possible issue with revids validation - // It seems with a load of revision rows, MySQL gets upset - // Remove any < 0 integers, as they can't be valid - foreach ( $array as $i => $int ) { - if ( $int < 0 ) { - unset( $array[$i] ); - } - } - - return $array; - } - public function getAllowedParams( $flags = 0 ) { $result = [ 'titles' => [