From 9299bab032a85c1a421436da04a595b79f2b9d6c Mon Sep 17 00:00:00 2001 From: Liangent Date: Fri, 13 Apr 2012 18:08:45 +0800 Subject: [PATCH] Stop expanding search term in of the search results page When entering a search term such as {{SITENAME}} on Special:Search, the <title> was generated with template expansion. This patch prevents transformation by using search term as rawParams of the 'searchresults-title' and 'pagetitle' messages. Change-Id: Ief0bdd10ad882ebfaeefd11bf4217e70dd922d9d --- includes/specials/SpecialSearch.php | 4 ++- .../includes/specials/SpecialSearchTest.php | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 3ae0b838c7..6c33bb8040 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -449,7 +449,9 @@ class SpecialSearch extends SpecialPage { $out = $this->getOutput(); if( strval( $term ) !== '' ) { $out->setPageTitle( $this->msg( 'searchresults' ) ); - $out->setHTMLTitle( $this->msg( 'pagetitle', $this->msg( 'searchresults-title', $term )->plain() ) ); + $out->setHTMLTitle( $this->msg( 'pagetitle' )->rawParams( + $this->msg( 'searchresults-title' )->rawParams( $term )->text() + ) ); } // add javascript specific to special:search $out->addModules( 'mediawiki.special.search' ); diff --git a/tests/phpunit/includes/specials/SpecialSearchTest.php b/tests/phpunit/includes/specials/SpecialSearchTest.php index 3be92d5e26..fed97ad6a0 100644 --- a/tests/phpunit/includes/specials/SpecialSearchTest.php +++ b/tests/phpunit/includes/specials/SpecialSearchTest.php @@ -107,5 +107,38 @@ class SpecialSearchTest extends MediaWikiTestCase { } return $u; } + + /** + * Verify we do not expand search term in <title> on search result page + * https://gerrit.wikimedia.org/r/4841 + */ + function testSearchTermIsNotExpanded() { + + # Initialize [[Special::Search]] + $search = new SpecialSearch(); + $search->getContext()->setTitle( Title::newFromText('Special:Search' ) ); + $search->load(); + + # Simulate a user searching for a given term + $term = '{{SITENAME}}'; + $search->showResults( $term ); + + # Lookup the HTML page title set for that page + $pageTitle = $search + ->getContext() + ->getOutput() + ->getHTMLTitle(); + + # Craft the expected, plain, text: + $aPlainSearchTerm = + wfMessage( 'searchresults-title', $term ) + ->plain(); + + # Compare :-] + $this->assertStringStartsWith( $aPlainSearchTerm, + $pageTitle, + "Search term should not be expanded in Special:Search <title>" + ); + } } -- 2.20.1