From 493e87a34a393631255446752ea5815e0e600451 Mon Sep 17 00:00:00 2001 From: Reedy Date: Wed, 12 Dec 2012 21:51:54 +0000 Subject: [PATCH] Revert "(bug 29115) Add redirect target value on page info" This reverts commit 0c6ba8c61d73f995d32e5c8348833ebedd90ea4a --- RELEASE-NOTES-1.21 | 1 - includes/api/ApiPageSet.php | 66 +++++++++-------------------------- includes/api/ApiQueryInfo.php | 26 ++------------ 3 files changed, 18 insertions(+), 75 deletions(-) diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21 index b7571bb1a0..87a0058f15 100644 --- a/RELEASE-NOTES-1.21 +++ b/RELEASE-NOTES-1.21 @@ -122,7 +122,6 @@ production. * (bug 41042) Revert change to action=parse&page=... behavior when the page does not exist. * (bug 27202) Add timestamp sort to list=allimages. -* (bug 29115) Add redirect target value on page info. === Languages updated in 1.21 === diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php index bee80464c7..0f5be6b24b 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -624,43 +624,10 @@ class ApiPageSet extends ApiQueryBase { * @return LinkBatch */ private function getRedirectTargets() { - $redirectTitles = $this->resolveIdsToRedirectTargets( array_keys( $this->mPendingRedirectIDs ), 'profileDB' ); - $lb = new LinkBatch(); - foreach( $this->mPendingRedirectIDs as $rdfrom => $from ) { - if( !isset( $redirectTitles[$rdfrom] ) ) { - continue; - } - $to = $redirectTitles[$rdfrom]; - if ( $to && !isset( $this->mAllPages[$to->getNamespace()][$to->getText()] ) ) { - $lb->addObj( $to ); - } - $this->mRedirectTitles[$from->getPrefixedText()] = $to; - } - return $lb; - } - - /** - * Get the targets of redirects from the database - * - * Also creates entries in the redirect table for redirects that don't - * have one. - * - * @param $redirectIDs array The array of pageids to resolve - * @param $profileDB string if profileDBIn should called - * @return array id => redirect target as title - * @since 1.21 - */ - public function resolveIdsToRedirectTargets( $redirectIDs, $profileDB = '' ) { - if( !$redirectIDs ) { - return array(); - } - $db = $this->getDB(); - if( $profileDB ) { - $this->profileDBIn(); - } + $this->profileDBIn(); $res = $db->select( 'redirect', array( @@ -669,38 +636,37 @@ class ApiPageSet extends ApiQueryBase { 'rd_fragment', 'rd_interwiki', 'rd_title' - ), array( 'rd_from' => $redirectIDs ), + ), array( 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ), __METHOD__ ); - if( $profileDB ) { - $this->profileDBOut(); - } - - $redirectTitles = array(); + $this->profileDBOut(); foreach ( $res as $row ) { $rdfrom = intval( $row->rd_from ); + $from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText(); $to = Title::makeTitle( $row->rd_namespace, $row->rd_title, $row->rd_fragment, $row->rd_interwiki ); - $redirectTitles[$rdfrom] = $to; + unset( $this->mPendingRedirectIDs[$rdfrom] ); + if ( !isset( $this->mAllPages[$row->rd_namespace][$row->rd_title] ) ) { + $lb->add( $row->rd_namespace, $row->rd_title ); + } + $this->mRedirectTitles[$from] = $to; } - $unresolvedRedirectIDs = array_diff( $redirectIDs, array_keys( $redirectTitles ) ); - if ( $unresolvedRedirectIDs ) { + if ( $this->mPendingRedirectIDs ) { // We found pages that aren't in the redirect table // Add them - foreach ( $unresolvedRedirectIDs as $id ) { - $page = WikiPage::newFromID( $id ); - if ( !$page ) { - continue; - } + foreach ( $this->mPendingRedirectIDs as $id => $title ) { + $page = WikiPage::factory( $title ); $rt = $page->insertRedirect(); if ( !$rt ) { // What the hell. Let's just ignore this continue; } - $redirectTitles[$id] = $rt; + $lb->addObj( $rt ); + $this->mRedirectTitles[$title->getPrefixedText()] = $rt; + unset( $this->mPendingRedirectIDs[$id] ); } } - return $redirectTitles; + return $lb; } /** diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php index 76d1e3b339..e5cea96421 100644 --- a/includes/api/ApiQueryInfo.php +++ b/includes/api/ApiQueryInfo.php @@ -34,12 +34,12 @@ class ApiQueryInfo extends ApiQueryBase { private $fld_protection = false, $fld_talkid = false, $fld_subjectid = false, $fld_url = false, $fld_readable = false, $fld_watched = false, $fld_notificationtimestamp = false, - $fld_preload = false, $fld_displaytitle = false, $fld_redirecttarget = false; + $fld_preload = false, $fld_displaytitle = false; private $params, $titles, $missing, $everything, $pageCounter; private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched, - $pageLatest, $pageLength, $redirectTarget; + $pageLatest, $pageLength; private $protections, $watched, $notificationtimestamps, $talkids, $subjectids, $displaytitles; @@ -255,7 +255,6 @@ class ApiQueryInfo extends ApiQueryBase { $this->fld_readable = isset( $prop['readable'] ); $this->fld_preload = isset( $prop['preload'] ); $this->fld_displaytitle = isset( $prop['displaytitle'] ); - $this->fld_redirecttarget = isset( $prop['redirecttarget'] ); } $pageSet = $this->getPageSet(); @@ -318,10 +317,6 @@ class ApiQueryInfo extends ApiQueryBase { $this->getDisplayTitle(); } - if ( $this->fld_redirecttarget ) { - $this->redirectTarget = $pageSet->resolveIdsToRedirectTargets( array_keys( $this->pageIsRedir ) ); - } - foreach ( $this->everything as $pageid => $title ) { $pageInfo = $this->extractPageInfo( $pageid, $title ); $fit = $result->addValue( array( @@ -364,13 +359,6 @@ class ApiQueryInfo extends ApiQueryBase { if ( $this->pageIsNew[$pageid] ) { $pageInfo['new'] = ''; } - if ( $this->fld_redirecttarget && isset( $this->redirectTarget[$pageid] ) ) { - $targetTitle = $this->redirectTarget[$pageid]; - $pageInfo['redirecttarget'] = $targetTitle->getPrefixedText(); - if( $targetTitle->getFragment() !== '' ) { - $pageInfo['redirecttargetfragment'] = $targetTitle->getFragment(); - } - } } if ( !is_null( $this->params['token'] ) ) { @@ -698,7 +686,6 @@ class ApiQueryInfo extends ApiQueryBase { 'url', 'preload', 'displaytitle', - 'redirecttarget', ); if ( !is_null( $params['prop'] ) ) { foreach ( $params['prop'] as $prop ) { @@ -728,7 +715,6 @@ class ApiQueryInfo extends ApiQueryBase { 'readable', # private 'preload', 'displaytitle', - 'redirecttarget', // If you add more properties here, please consider whether they // need to be added to getCacheMode() ) ), @@ -754,7 +740,6 @@ class ApiQueryInfo extends ApiQueryBase { ' readable - Whether the user can read this page', ' preload - Gives the text returned by EditFormPreloadText', ' displaytitle - Gives the way the page title is actually displayed', - ' redirecttarget - Gives the redirect target, if this page is a redirect', ), 'token' => 'Request a token to perform a data-modifying action on a page', 'continue' => 'When more results are available, use this to continue', @@ -812,13 +797,6 @@ class ApiQueryInfo extends ApiQueryBase { ), 'displaytitle' => array( 'displaytitle' => 'string' - ), - 'redirecttarget' => array( - 'redirecttarget' => 'string', - 'redirecttargetfragment' => array( - ApiBase::PROP_TYPE => 'string', - ApiBase::PROP_NULLABLE => true - ) ) ); -- 2.20.1