Followup to r70658: Code styling, use ApiPageSet to fix redirects.
authorX! <soxred93@users.mediawiki.org>
Sun, 8 Aug 2010 15:03:30 +0000 (15:03 +0000)
committerX! <soxred93@users.mediawiki.org>
Sun, 8 Aug 2010 15:03:30 +0000 (15:03 +0000)
includes/api/ApiEditPage.php

index 1c165b6..6c4142a 100644 (file)
@@ -58,35 +58,17 @@ class ApiEditPage extends ApiBase {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
                
-               if( $params['redirect'] ) {
-                       if( $titleObj->isRedirect() ) {
-                               $oldTitle = $titleObj;
-                               
-                               $titles = Title::newFromRedirectArray( Revision::newFromTitle( $oldTitle )->getText( Revision::FOR_THIS_USER ) );
-                               //array_shift( $titles );
-                               
-                               $this->getResult()->addValue( null, 'foo', $titles );
-                               
-                               
-                               $redirValues = array();
-                               foreach ( $titles as $id => $newTitle ) {
-                                       
-                                       if( !isset( $titles[ $id - 1 ] ) ) {
-                                               $titles[ $id - 1 ] = $oldTitle;
-                                       }
-                                       
-                                       $redirValues[] = array(
-                                               'from' => $titles[ $id - 1 ]->getPrefixedText(),
-                                               'to' => $newTitle->getPrefixedText()
-                                       );
-                                       
-                                       $titleObj = $newTitle;
-                               }
-               
-                               $this->getResult()->setIndexedTagName( $redirValues, 'r' );
-                               $this->getResult()->addValue( null, 'redirects', $redirValues );
-
+               if( $params['redirect'] && $titleObj->isRedirect() ) {
+                       
+                       $pageSet = new ApiPageSet( $this->getQuery(), true ); // Or true, true to also do variant conversion of titles
+                       $pageSet->populateFromTitles( array( $titleObj ) );
+                       foreach ( $pageSet->getRedirectTitles() as $from => $to ) {
+                           $redirsValues[] = array( 'from' => $from, 'to' => $to );
                        }
+
+       
+                       $this->getResult()->setIndexedTagName( $redirValues, 'r' );
+                       $this->getResult()->addValue( null, 'redirects', $redirValues );
                }
 
                // Some functions depend on $wgTitle == $ep->mTitle