From 1eff26d193b61765e688bf6e889437b8f883aab1 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Thu, 11 Aug 2011 21:10:30 +0000 Subject: [PATCH] * Use local context instead of global variables * Call Linker methods statically --- includes/specials/SpecialSearch.php | 182 +++++++++++++--------------- 1 file changed, 86 insertions(+), 96 deletions(-) diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 9797d247fd..616f089a26 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -52,25 +52,26 @@ class SpecialSearch extends SpecialPage { * @param $par String or null */ public function execute( $par ) { - global $wgRequest, $wgUser, $wgOut; - $this->setHeaders(); $this->outputHeader(); - $wgOut->allowClickjacking(); - $wgOut->addModuleStyles( 'mediawiki.special' ); + $out = $this->getOutput(); + $out->allowClickjacking(); + $out->addModuleStyles( 'mediawiki.special' ); // Strip underscores from title parameter; most of the time we'll want // text form here. But don't strip underscores from actual text params! $titleParam = str_replace( '_', ' ', $par ); + $request = $this->getRequest(); + // Fetch the search term - $search = str_replace( "\n", " ", $wgRequest->getText( 'search', $titleParam ) ); + $search = str_replace( "\n", " ", $request->getText( 'search', $titleParam ) ); - $this->load( $wgRequest, $wgUser ); + $this->load(); - if ( $wgRequest->getVal( 'fulltext' ) - || !is_null( $wgRequest->getVal( 'offset' ) ) - || !is_null( $wgRequest->getVal( 'searchx' ) ) ) + if ( $request->getVal( 'fulltext' ) + || !is_null( $request->getVal( 'offset' ) ) + || !is_null( $request->getVal( 'searchx' ) ) ) { $this->showResults( $search ); } else { @@ -80,16 +81,13 @@ class SpecialSearch extends SpecialPage { /** * Set up basic search parameters from the request and user settings. - * Typically you'll pass $wgRequest and $wgUser. - * - * @param $request WebRequest - * @param $user User */ - public function load( &$request, &$user ) { + public function load() { + $request = $this->getRequest(); list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' ); $this->mPrefix = $request->getVal( 'prefix', '' ); - + $user = $this->getUser(); # Extract manually requested namespaces $nslist = $this->powerSearch( $request ); $this->profile = $profile = $request->getVal( 'profile', null ); @@ -122,7 +120,6 @@ class SpecialSearch extends SpecialPage { // Redirects defaults to true, but we don't know whether it was ticked of or just missing $default = $request->getBool( 'profile' ) ? 0 : 1; $this->searchRedirects = $request->getBool( 'redirs', $default ) ? 1 : 0; - $this->sk = $this->getSkin(); $this->didYouMeanHtml = ''; # html of did you mean... link $this->fulltext = $request->getVal('fulltext'); } @@ -133,7 +130,6 @@ class SpecialSearch extends SpecialPage { * @param $term String */ public function goResult( $term ) { - global $wgOut; $this->setupPage( $term ); # Try to go to page as entered. $t = Title::newFromText( $term ); @@ -150,7 +146,7 @@ class SpecialSearch extends SpecialPage { } if( !is_null( $t ) ) { - $wgOut->redirect( $t->getFullURL() ); + $this->getOutput()->redirect( $t->getFullURL() ); return; } # No match, generate an edit URL @@ -162,7 +158,7 @@ class SpecialSearch extends SpecialPage { # If the feature is enabled, go straight to the edit page if( $wgGoToEdit ) { - $wgOut->redirect( $t->getFullURL( array( 'action' => 'edit' ) ) ); + $this->getOutput()->redirect( $t->getFullURL( array( 'action' => 'edit' ) ) ); return; } } @@ -173,11 +169,9 @@ class SpecialSearch extends SpecialPage { * @param $term String */ public function showResults( $term ) { - global $wgOut, $wgDisableTextSearch, $wgContLang, $wgScript; + global $wgDisableTextSearch, $wgSearchForwardUrl, $wgContLang, $wgScript; wfProfileIn( __METHOD__ ); - $sk = $this->getSkin(); - $search = $this->getSearchEngine(); $search->setLimitOffset( $this->limit, $this->offset ); $search->setNamespaces( $this->namespaces ); @@ -190,25 +184,25 @@ class SpecialSearch extends SpecialPage { $this->setupPage( $term ); - if( $wgDisableTextSearch ) { - global $wgSearchForwardUrl; - if( $wgSearchForwardUrl ) { + $out = $this->getOutput(); + + if ( $wgDisableTextSearch ) { + if ( $wgSearchForwardUrl ) { $url = str_replace( '$1', urlencode( $term ), $wgSearchForwardUrl ); - $wgOut->redirect( $url ); - wfProfileOut( __METHOD__ ); - return; + $out->redirect( $url ); + } else { + $out->addHTML( + Xml::openElement( 'fieldset' ) . + Xml::element( 'legend', null, wfMsg( 'search-external' ) ) . + Xml::element( 'p', array( 'class' => 'mw-searchdisabled' ), wfMsg( 'searchdisabled' ) ) . + wfMsg( 'googlesearch', + htmlspecialchars( $term ), + htmlspecialchars( 'UTF-8' ), + htmlspecialchars( wfMsg( 'searchbutton' ) ) + ) . + Xml::closeElement( 'fieldset' ) + ); } - $wgOut->addHTML( - Xml::openElement( 'fieldset' ) . - Xml::element( 'legend', null, wfMsg( 'search-external' ) ) . - Xml::element( 'p', array( 'class' => 'mw-searchdisabled' ), wfMsg( 'searchdisabled' ) ) . - wfMsg( 'googlesearch', - htmlspecialchars( $term ), - htmlspecialchars( 'UTF-8' ), - htmlspecialchars( wfMsg( 'searchbutton' ) ) - ) . - Xml::closeElement( 'fieldset' ) - ); wfProfileOut( __METHOD__ ); return; } @@ -242,7 +236,7 @@ class SpecialSearch extends SpecialPage { if( $suggestionSnippet == '' ) $suggestionSnippet = null; - $suggestLink = $sk->linkKnown( + $suggestLink = Linker::linkKnown( $st, $suggestionSnippet, array(), @@ -252,7 +246,7 @@ class SpecialSearch extends SpecialPage { $this->didYouMeanHtml = '
'.wfMsg('search-suggest',$suggestLink).'
'; } // start rendering the page - $wgOut->addHtml( + $out->addHtml( Xml::openElement( 'form', array( @@ -262,7 +256,7 @@ class SpecialSearch extends SpecialPage { ) ) ); - $wgOut->addHtml( + $out->addHtml( Xml::openElement( 'table', array( 'id'=>'mw-search-top-table', 'border'=>0, 'cellpadding'=>0, 'cellspacing'=>0 ) ) . Xml::openElement( 'tr' ) . Xml::openElement( 'td' ) . "\n" . @@ -274,16 +268,16 @@ class SpecialSearch extends SpecialPage { // Sometimes the search engine knows there are too many hits if( $titleMatches instanceof SearchResultTooMany ) { - $wgOut->wrapWikiMsg( "==$1==\n", 'toomanymatches' ); + $out->wrapWikiMsg( "==$1==\n", 'toomanymatches' ); wfProfileOut( __METHOD__ ); return; } $filePrefix = $wgContLang->getFormattedNsText(NS_FILE).':'; if( trim( $term ) === '' || $filePrefix === trim( $term ) ) { - $wgOut->addHTML( $this->formHeader( $term, 0, 0 ) ); - $wgOut->addHtml( $this->getProfileForm( $this->profile, $term ) ); - $wgOut->addHTML( '' ); + $out->addHTML( $this->formHeader( $term, 0, 0 ) ); + $out->addHtml( $this->getProfileForm( $this->profile, $term ) ); + $out->addHTML( '' ); // Empty query -- straight view of search form wfProfileOut( __METHOD__ ); return; @@ -309,12 +303,12 @@ class SpecialSearch extends SpecialPage { $totalRes += $textMatches->getTotalHits(); // show number of results and current offset - $wgOut->addHTML( $this->formHeader( $term, $num, $totalRes ) ); - $wgOut->addHtml( $this->getProfileForm( $this->profile, $term ) ); + $out->addHTML( $this->formHeader( $term, $num, $totalRes ) ); + $out->addHtml( $this->getProfileForm( $this->profile, $term ) ); - $wgOut->addHtml( Xml::closeElement( 'form' ) ); - $wgOut->addHtml( "
" ); + $out->addHtml( Xml::closeElement( 'form' ) ); + $out->addHtml( "
" ); // prev/next links if( $num || $this->offset ) { @@ -325,17 +319,17 @@ class SpecialSearch extends SpecialPage { wfArrayToCGI( $this->powerSearchOptions(), array( 'search' => $term ) ), max( $titleMatchesNum, $textMatchesNum ) < $this->limit ); - //$wgOut->addHTML( "

{$prevnext}

\n" ); + //$out->addHTML( "

{$prevnext}

\n" ); wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) ); } else { wfRunHooks( 'SpecialSearchNoResults', array( $term ) ); } - $wgOut->parserOptions()->setEditSection( false ); + $out->parserOptions()->setEditSection( false ); if( $titleMatches ) { if( $numTitleMatches > 0 ) { - $wgOut->wrapWikiMsg( "==$1==\n", 'titlematches' ); - $wgOut->addHTML( $this->showMatches( $titleMatches ) ); + $out->wrapWikiMsg( "==$1==\n", 'titlematches' ); + $out->addHTML( $this->showMatches( $titleMatches ) ); } $titleMatches->free(); } @@ -343,37 +337,35 @@ class SpecialSearch extends SpecialPage { // output appropriate heading if( $numTextMatches > 0 && $numTitleMatches > 0 ) { // if no title matches the heading is redundant - $wgOut->wrapWikiMsg( "==$1==\n", 'textmatches' ); + $out->wrapWikiMsg( "==$1==\n", 'textmatches' ); } elseif( $totalRes == 0 ) { # Don't show the 'no text matches' if we received title matches - # $wgOut->wrapWikiMsg( "==$1==\n", 'notextmatches' ); + # $out->wrapWikiMsg( "==$1==\n", 'notextmatches' ); } // show interwiki results if any if( $textMatches->hasInterwikiResults() ) { - $wgOut->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults(), $term ) ); + $out->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults(), $term ) ); } // show results if( $numTextMatches > 0 ) { - $wgOut->addHTML( $this->showMatches( $textMatches ) ); + $out->addHTML( $this->showMatches( $textMatches ) ); } $textMatches->free(); } if( $num === 0 ) { - $wgOut->wrapWikiMsg( "

\n$1

", array( 'search-nonefound', wfEscapeWikiText( $term ) ) ); + $out->wrapWikiMsg( "

\n$1

", array( 'search-nonefound', wfEscapeWikiText( $term ) ) ); $this->showCreateLink( $t ); } - $wgOut->addHtml( "
" ); + $out->addHtml( "
" ); if( $num || $this->offset ) { - $wgOut->addHTML( "

{$prevnext}

\n" ); + $out->addHTML( "

{$prevnext}

\n" ); } wfProfileOut( __METHOD__ ); } protected function showCreateLink( $t ) { - global $wgOut; - // show direct page/create link if applicable // Check DBkey !== '' in case of fragment link only. $messageName = null; @@ -387,10 +379,10 @@ class SpecialSearch extends SpecialPage { } } if( $messageName ) { - $wgOut->wrapWikiMsg( "

\n$1

", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) ); + $this->getOutput()->wrapWikiMsg( "

\n$1

", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) ); } else { // preserve the paragraph for margins etc... - $wgOut->addHtml( '

' ); + $this->getOutput()->addHtml( '

' ); } } @@ -398,16 +390,15 @@ class SpecialSearch extends SpecialPage { * */ protected function setupPage( $term ) { - global $wgOut; - # Should advanced UI be used? $this->searchAdvanced = ($this->profile === 'advanced'); + $out = $this->getOutput(); if( strval( $term ) !== '' ) { - $wgOut->setPageTitle( wfMsg( 'searchresults') ); - $wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term ) ) ); + $out->setPageTitle( wfMsg( 'searchresults') ); + $out->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term ) ) ); } // add javascript specific to special:search - $wgOut->addModules( 'mediawiki.special.search' ); + $out->addModules( 'mediawiki.special.search' ); } /** @@ -481,7 +472,6 @@ class SpecialSearch extends SpecialPage { * @param $terms Array: terms to highlight */ protected function showHit( $result, $terms ) { - global $wgLang; wfProfileIn( __METHOD__ ); if( $result->isBrokenTitle() ) { @@ -489,7 +479,6 @@ class SpecialSearch extends SpecialPage { return "\n"; } - $sk = $this->getSkin(); $t = $result->getTitle(); $titleSnippet = $result->getTitleSnippet($terms); @@ -502,7 +491,7 @@ class SpecialSearch extends SpecialPage { wfRunHooks( 'ShowSearchHitTitle', array( &$link_t, &$titleSnippet, $result, $terms, $this ) ); - $link = $this->sk->linkKnown( + $link = Linker::linkKnown( $link_t, $titleSnippet ); @@ -537,7 +526,7 @@ class SpecialSearch extends SpecialPage { $redirect = "" . wfMsg( 'search-redirect', - $this->sk->linkKnown( + Linker::linkKnown( $redirectTitle, $redirectText ) @@ -553,7 +542,7 @@ class SpecialSearch extends SpecialPage { $section = "" . wfMsg( - 'search-section', $this->sk->linkKnown( + 'search-section', Linker::linkKnown( $sectionTitle, $sectionText ) @@ -564,13 +553,15 @@ class SpecialSearch extends SpecialPage { // format text extract $extract = "
".$result->getTextSnippet($terms)."
"; + $lang = $this->getLang(); + // format score if( is_null( $result->getScore() ) ) { // Search engine doesn't report scoring info $score = ''; } else { $percent = sprintf( '%2.1f', $result->getScore() * 100 ); - $score = wfMsg( 'search-result-score', $wgLang->formatNum( $percent ) ) + $score = wfMsg( 'search-result-score', $lang->formatNum( $percent ) ) . ' - '; } @@ -581,8 +572,8 @@ class SpecialSearch extends SpecialPage { $size = wfMsgExt( 'search-result-size', array( 'parsemag', 'escape' ), - $wgLang->formatSize( $byteSize ), - $wgLang->formatNum( $wordCount ) + $lang->formatSize( $byteSize ), + $lang->formatNum( $wordCount ) ); if( $t->getNamespace() == NS_CATEGORY ) { @@ -590,13 +581,13 @@ class SpecialSearch extends SpecialPage { $size = wfMsgExt( 'search-result-category-size', array( 'parsemag', 'escape' ), - $wgLang->formatNum( $cat->getPageCount() ), - $wgLang->formatNum( $cat->getSubcatCount() ), - $wgLang->formatNum( $cat->getFileCount() ) + $lang->formatNum( $cat->getPageCount() ), + $lang->formatNum( $cat->getSubcatCount() ), + $lang->formatNum( $cat->getFileCount() ) ); } - $date = $wgLang->timeanddate( $timestamp ); + $date = $lang->timeanddate( $timestamp ); // link to related articles if supported $related = ''; @@ -610,7 +601,7 @@ class SpecialSearch extends SpecialPage { ) ); - $related = ' -- ' . $sk->linkKnown( + $related = ' -- ' . Linker::linkKnown( $st, wfMsg('search-relatedarticle'), array(), @@ -716,7 +707,7 @@ class SpecialSearch extends SpecialPage { if( $titleSnippet == '' ) $titleSnippet = null; - $link = $this->sk->linkKnown( + $link = Linker::linkKnown( $t, $titleSnippet ); @@ -732,7 +723,7 @@ class SpecialSearch extends SpecialPage { $redirect = "" . wfMsg( 'search-redirect', - $this->sk->linkKnown( + Linker::linkKnown( $redirectTitle, $redirectText ) @@ -754,7 +745,7 @@ class SpecialSearch extends SpecialPage { } // "more results" link (special page stuff could be localized, but we might not know target lang) $searchTitle = Title::newFromText($t->getInterwiki().":Special:Search"); - $searchLink = $this->sk->linkKnown( + $searchLink = Linker::linkKnown( $searchTitle, wfMsg('search-interwiki-more'), array(), @@ -930,8 +921,6 @@ class SpecialSearch extends SpecialPage { } protected function formHeader( $term, $resultsShown, $totalNum ) { - global $wgLang; - $out = Xml::openElement('div', array( 'class' => 'mw-search-formheader' ) ); $bareterm = $term; @@ -941,6 +930,7 @@ class SpecialSearch extends SpecialPage { } $profiles = $this->getSearchProfiles(); + $lang = $this->getLang(); // Outputs XML for Search Types $out .= Xml::openElement( 'div', array( 'class' => 'search-types' ) ); @@ -952,7 +942,7 @@ class SpecialSearch extends SpecialPage { $profile['parameters']['profile'] = $id; $tooltipParam = isset( $profile['namespace-messages'] ) ? - $wgLang->commaList( $profile['namespace-messages'] ) : null; + $lang->commaList( $profile['namespace-messages'] ) : null; $out .= Xml::tags( 'li', array( @@ -974,19 +964,19 @@ class SpecialSearch extends SpecialPage { if ( $resultsShown > 0 ) { if ( $totalNum > 0 ){ $top = wfMsgExt( 'showingresultsheader', array( 'parseinline' ), - $wgLang->formatNum( $this->offset + 1 ), - $wgLang->formatNum( $this->offset + $resultsShown ), - $wgLang->formatNum( $totalNum ), + $lang->formatNum( $this->offset + 1 ), + $lang->formatNum( $this->offset + $resultsShown ), + $lang->formatNum( $totalNum ), wfEscapeWikiText( $term ), - $wgLang->formatNum( $resultsShown ) + $lang->formatNum( $resultsShown ) ); } elseif ( $resultsShown >= $this->limit ) { $top = wfShowingResults( $this->offset, $this->limit ); } else { $top = wfMsgExt( 'showingresultsnum', array( 'parseinline' ), - $wgLang->formatNum( $this->limit ), - $wgLang->formatNum( $this->offset + 1 ), - $wgLang->formatNum( $resultsShown ) + $lang->formatNum( $this->limit ), + $lang->formatNum( $this->offset + 1 ), + $lang->formatNum( $resultsShown ) ); } $out .= Xml::tags( 'div', array( 'class' => 'results-info' ), -- 2.20.1