Merge "Show redirect fragments on Special:BrokenRedirects"
[lhc/web/wiklou.git] / includes / specials / SpecialDoubleRedirects.php
index 9140bf1..64b378c 100644 (file)
@@ -21,6 +21,9 @@
  * @ingroup SpecialPage
  */
 
+use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\IDatabase;
+
 /**
  * A special page listing redirects to redirecting page.
  * The software will automatically not follow double redirects, to prevent loops.
@@ -70,12 +73,13 @@ class DoubleRedirectsPage extends QueryPage {
                                // not actually be a page table row for this target (e.g. for interwiki redirects)
                                'nsc' => 'rb.rd_namespace',
                                'tc' => 'rb.rd_title',
+                               'fc' => 'rb.rd_fragment',
                                'iwc' => 'rb.rd_interwiki',
                        ],
                        'conds' => [
                                'ra.rd_from = pa.page_id',
 
-                               // Filter out redirects where the target goes interwiki (bug 40353).
+                               // Filter out redirects where the target goes interwiki (T42353).
                                // This isn't an optimization, it is required for correct results,
                                // otherwise a non-double redirect like Bar -> w:Foo will show up
                                // like "Bar -> Foo -> w:Foo".
@@ -143,7 +147,7 @@ class DoubleRedirectsPage extends QueryPage {
                }
 
                $titleB = Title::makeTitle( $result->nsb, $result->tb );
-               $titleC = Title::makeTitle( $result->nsc, $result->tc, '', $result->iwc );
+               $titleC = Title::makeTitle( $result->nsc, $result->tc, $result->fc, $result->iwc );
 
                $linkA = $linkRenderer->makeKnownLink(
                        $titleA,
@@ -176,7 +180,7 @@ class DoubleRedirectsPage extends QueryPage {
                        [ 'redirect' => 'no' ]
                );
 
-               $linkC = $linkRenderer->makeKnownLink( $titleC );
+               $linkC = $linkRenderer->makeKnownLink( $titleC, $titleC->getFullText() );
 
                $lang = $this->getLanguage();
                $arr = $lang->getArrow() . $lang->getDirMark();