Revert "(bug 29115) Add redirect target value on page info"
authorReedy <reedy@wikimedia.org>
Wed, 12 Dec 2012 21:51:54 +0000 (21:51 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 12 Dec 2012 21:51:54 +0000 (21:51 +0000)
This reverts commit 0c6ba8c61d73f995d32e5c8348833ebedd90ea4a

RELEASE-NOTES-1.21
includes/api/ApiPageSet.php
includes/api/ApiQueryInfo.php

index b7571bb..87a0058 100644 (file)
@@ -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 ===
 
index bee8046..0f5be6b 100644 (file)
@@ -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;
        }
 
        /**
index 76d1e3b..e5cea96 100644 (file)
@@ -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
-                               )
                        )
                );