Fix links problem on Special:Search
[lhc/web/wiklou.git] / includes / specials / SpecialSearch.php
index 9f83832..727179a 100644 (file)
@@ -499,9 +499,16 @@ class SpecialSearch extends SpecialPage {
                }
                $stParams = array_merge( $params, $this->powerSearchOptions() );
 
-               $suggest = Linker::linkKnown(
+               $linkRenderer = $this->getLinkRenderer();
+
+               $snippet = $textMatches->getSuggestionSnippet() ?: null;
+               if ( $snippet !== null ) {
+                       $snippet = new HtmlArmor( $snippet );
+               }
+
+               $suggest = $linkRenderer->makeKnownLink(
                        $this->getPageTitle(),
-                       $textMatches->getSuggestionSnippet() ?: null,
+                       $snippet,
                        [ 'id' => 'mw-search-DYM-suggestion' ],
                        $stParams
                );
@@ -535,18 +542,25 @@ class SpecialSearch extends SpecialPage {
                }
                $stParams = array_merge( $params, $this->powerSearchOptions() );
 
-               $rewritten = Linker::linkKnown(
+               $linkRenderer = $this->getLinkRenderer();
+
+               $snippet = $textMatches->getQueryAfterRewriteSnippet() ?: null;
+               if ( $snippet !== null ) {
+                       $snippet = new HtmlArmor( $snippet );
+               }
+
+               $rewritten = $linkRenderer->makeKnownLink(
                        $this->getPageTitle(),
-                       $textMatches->getQueryAfterRewriteSnippet() ?: null,
+                       $snippet,
                        [ 'id' => 'mw-search-DYM-rewritten' ],
                        $stParams
                );
 
                $stParams['search'] = $term;
                $stParams['runsuggestion'] = 0;
-               $original = Linker::linkKnown(
+               $original = $linkRenderer->makeKnownLink(
                        $this->getPageTitle(),
-                       htmlspecialchars( $term ),
+                       $term,
                        [ 'id' => 'mw-search-DYM-original' ],
                        $stParams
                );
@@ -766,7 +780,13 @@ class SpecialSearch extends SpecialPage {
                Hooks::run( 'ShowSearchHitTitle',
                        [ &$link_t, &$titleSnippet, $result, $terms, $this, &$query ] );
 
-               $link = Linker::linkKnown(
+               $linkRenderer = $this->getLinkRenderer();
+
+               if ( $titleSnippet !== null ) {
+                       $titleSnippet = new HtmlArmor( $titleSnippet );
+               }
+
+               $link = $linkRenderer->makeKnownLink(
                        $link_t,
                        $titleSnippet,
                        [ 'data-serp-pos' => $position ], // HTML attributes
@@ -800,9 +820,13 @@ class SpecialSearch extends SpecialPage {
                                $redirectText = null;
                        }
 
+                       if ( $redirectText !== null ) {
+                               $redirectText = new HtmlArmor( $redirectText );
+                       }
+
                        $redirect = "<span class='searchalttitle'>" .
                                $this->msg( 'search-redirect' )->rawParams(
-                                       Linker::linkKnown( $redirectTitle, $redirectText ) )->text() .
+                                       $linkRenderer->makeKnownLink( $redirectTitle, $redirectText ) )->text() .
                                "</span>";
                }
 
@@ -812,9 +836,13 @@ class SpecialSearch extends SpecialPage {
                                $sectionText = null;
                        }
 
+                       if ( $sectionText !== null ) {
+                               $sectionText = new HtmlArmor( $sectionText );
+                       }
+
                        $section = "<span class='searchalttitle'>" .
                                $this->msg( 'search-section' )->rawParams(
-                                       Linker::linkKnown( $sectionTitle, $sectionText ) )->text() .
+                                       $linkRenderer->makeKnownLink( $sectionTitle, $sectionText ) )->text() .
                                "</span>";
                }
 
@@ -971,6 +999,8 @@ class SpecialSearch extends SpecialPage {
                        return '';
                }
 
+               $linkRenderer = $this->getLinkRenderer();
+
                $title = $result->getTitle();
 
                $titleSnippet = $result->getTitleSnippet();
@@ -979,7 +1009,11 @@ class SpecialSearch extends SpecialPage {
                        $titleSnippet = null;
                }
 
-               $link = Linker::linkKnown(
+               if ( $titleSnippet !== null ) {
+                       $titleSnippet = new HtmlArmor( $titleSnippet );
+               }
+
+               $link = $linkRenderer->makeKnownLink(
                        $title,
                        $titleSnippet
                );
@@ -993,9 +1027,13 @@ class SpecialSearch extends SpecialPage {
                                $redirectText = null;
                        }
 
+                       if ( $redirectText !== null ) {
+                               $redirectText = new HtmlArmor( $redirectText );
+                       }
+
                        $redirect = "<span class='searchalttitle'>" .
                                $this->msg( 'search-redirect' )->rawParams(
-                                       Linker::linkKnown( $redirectTitle, $redirectText ) )->text() .
+                                       $linkRenderer->makeKnownLink( $redirectTitle, $redirectText ) )->text() .
                                "</span>";
                }
 
@@ -1013,7 +1051,7 @@ class SpecialSearch extends SpecialPage {
                        }
                        // "more results" link (special page stuff could be localized, but we might not know target lang)
                        $searchTitle = Title::newFromText( $title->getInterwiki() . ":Special:Search" );
-                       $searchLink = Linker::linkKnown(
+                       $searchLink = $linkRenderer->makeKnownLink(
                                $searchTitle,
                                $this->msg( 'search-interwiki-more' )->text(),
                                [],