From: Erik Bernhardson Date: Mon, 10 Aug 2015 17:51:22 +0000 (-0700) Subject: Include generated metadata for redirects X-Git-Tag: 1.31.0-rc.0~10336^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=02750270545e004045af37b42def64669213ee88 Include generated metadata for redirects If a page is returned but is resolved as a redirect the generated data, such as the position of the result in search, is lost. Retain that data by including it in under the 'redirects' key. Bug: T92796 Change-Id: I6c1871dee517dd9a9a8a70cbd6ece0bc42dd0667 --- diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php index d67b18420e..1415b794bd 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -66,6 +66,7 @@ class ApiPageSet extends ApiBase { private $mInterwikiTitles = array(); /** @var Title[] */ private $mPendingRedirectIDs = array(); + private $mResolvedRedirectTitles = array(); private $mConvertedTitles = array(); private $mGoodRevIDs = array(); private $mLiveRevIDs = array(); @@ -434,7 +435,7 @@ class ApiPageSet extends ApiBase { /** * Get a list of redirect resolutions - maps a title to its redirect - * target. + * target. Includes generator data for redirect source when available. * @param ApiResult $result * @return array Array of prefixed_title (string) => Title object * @since 1.21 @@ -452,6 +453,15 @@ class ApiPageSet extends ApiBase { if ( $titleTo->isExternal() ) { $r['tointerwiki'] = $titleTo->getInterwiki(); } + if ( isset( $this->mResolvedRedirectTitles[$titleStrFrom] ) ) { + $titleFrom = $this->mResolvedRedirectTitles[$titleStrFrom]; + $ns = $titleFrom->getNamespace(); + $dbkey = $titleFrom->getDBkey(); + if ( isset( $this->mGeneratorData[$ns][$dbkey] ) ) { + $r = array_merge( $this->mGeneratorData[$ns][$dbkey], $r ); + } + } + $values[] = $r; } if ( !empty( $values ) && $result ) { @@ -1030,6 +1040,7 @@ class ApiPageSet extends ApiBase { $row->rd_fragment, $row->rd_interwiki ); + $this->mResolvedRedirectTitles[$from] = $this->mPendingRedirectIDs[$rdfrom]; unset( $this->mPendingRedirectIDs[$rdfrom] ); if ( $to->isExternal() ) { $this->mInterwikiTitles[$to->getPrefixedText()] = $to->getInterwiki(); @@ -1050,7 +1061,9 @@ class ApiPageSet extends ApiBase { continue; } $lb->addObj( $rt ); - $this->mRedirectTitles[$title->getPrefixedText()] = $rt; + $from = $title->getPrefixedText(); + $this->mResolvedRedirectTitles[$from] = $title; + $this->mRedirectTitles[$from] = $rt; unset( $this->mPendingRedirectIDs[$id] ); } }