From d1c9916e9c8a6096b337ee7d5cbbb15cb6ac0868 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Sat, 23 Oct 2010 17:48:08 +0000 Subject: [PATCH] Revert r70703 and followup r70715: broke &redirect for API edit with a fatal error --- includes/api/ApiEditPage.php | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/includes/api/ApiEditPage.php b/includes/api/ApiEditPage.php index 83d9c16ab6..fac787aae8 100644 --- a/includes/api/ApiEditPage.php +++ b/includes/api/ApiEditPage.php @@ -57,16 +57,36 @@ class ApiEditPage extends ApiBase { if ( !$titleObj || $titleObj->isExternal() ) { $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 -- 2.20.1