jenkins-bot has submitted this change and it was merged.

Change subject: Include generated metadata for redirects
......................................................................


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
---
M includes/api/ApiPageSet.php
1 file changed, 15 insertions(+), 2 deletions(-)

Approvals:
  Anomie: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php
index d67b184..1415b79 100644
--- a/includes/api/ApiPageSet.php
+++ b/includes/api/ApiPageSet.php
@@ -66,6 +66,7 @@
        private $mInterwikiTitles = array();
        /** @var Title[] */
        private $mPendingRedirectIDs = array();
+       private $mResolvedRedirectTitles = array();
        private $mConvertedTitles = array();
        private $mGoodRevIDs = array();
        private $mLiveRevIDs = array();
@@ -434,7 +435,7 @@
 
        /**
         * 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 @@
                        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 @@
                                $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 @@
                                        continue;
                                }
                                $lb->addObj( $rt );
-                               
$this->mRedirectTitles[$title->getPrefixedText()] = $rt;
+                               $from = $title->getPrefixedText();
+                               $this->mResolvedRedirectTitles[$from] = $title;
+                               $this->mRedirectTitles[$from] = $rt;
                                unset( $this->mPendingRedirectIDs[$id] );
                        }
                }

-- 
To view, visit https://gerrit.wikimedia.org/r/230585
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6c1871dee517dd9a9a8a70cbd6ece0bc42dd0667
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: EBernhardson <[email protected]>
Gerrit-Reviewer: Alex Monk <[email protected]>
Gerrit-Reviewer: Anomie <[email protected]>
Gerrit-Reviewer: DCausse <[email protected]>
Gerrit-Reviewer: Deskana <[email protected]>
Gerrit-Reviewer: Yurik <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to