* Use local context instead of global variables
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Thu, 11 Aug 2011 21:10:30 +0000 (21:10 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Thu, 11 Aug 2011 21:10:30 +0000 (21:10 +0000)
* Call Linker methods statically

includes/specials/SpecialSearch.php

index 9797d24..616f089 100644 (file)
@@ -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 = '<div class="searchdidyoumean">'.wfMsg('search-suggest',$suggestLink).'</div>';
                }
                // 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( '</form>' );
+                       $out->addHTML( $this->formHeader( $term, 0, 0 ) );
+                       $out->addHtml( $this->getProfileForm( $this->profile, $term ) );
+                       $out->addHTML( '</form>' );
                        // 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( "<div class='searchresults'>" );
+               $out->addHtml( Xml::closeElement( 'form' ) );
+               $out->addHtml( "<div class='searchresults'>" );
 
                // 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( "<p class='mw-search-pager-top'>{$prevnext}</p>\n" );
+                       //$out->addHTML( "<p class='mw-search-pager-top'>{$prevnext}</p>\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( "<p class=\"mw-search-nonefound\">\n$1</p>", array( 'search-nonefound', wfEscapeWikiText( $term ) ) );
+                       $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>", array( 'search-nonefound', wfEscapeWikiText( $term ) ) );
                        $this->showCreateLink( $t );
                }
-               $wgOut->addHtml( "</div>" );
+               $out->addHtml( "</div>" );
 
                if( $num || $this->offset ) {
-                       $wgOut->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
+                       $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\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( "<p class=\"mw-search-createlink\">\n$1</p>", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) );
+                       $this->getOutput()->wrapWikiMsg( "<p class=\"mw-search-createlink\">\n$1</p>", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) );
                } else {
                        // preserve the paragraph for margins etc...
-                       $wgOut->addHtml( '<p></p>' );
+                       $this->getOutput()->addHtml( '<p></p>' );
                }
        }
 
@@ -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 "<!-- Broken link in search result -->\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 = "<span class='searchalttitle'>" .
                                wfMsg(
                                        'search-redirect',
-                                       $this->sk->linkKnown(
+                                       Linker::linkKnown(
                                                $redirectTitle,
                                                $redirectText
                                        )
@@ -553,7 +542,7 @@ class SpecialSearch extends SpecialPage {
 
                        $section = "<span class='searchalttitle'>" .
                                wfMsg(
-                                       'search-section', $this->sk->linkKnown(
+                                       'search-section', Linker::linkKnown(
                                                $sectionTitle,
                                                $sectionText
                                        )
@@ -564,13 +553,15 @@ class SpecialSearch extends SpecialPage {
                // format text extract
                $extract = "<div class='searchresult'>".$result->getTextSnippet($terms)."</div>";
 
+               $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 = "<span class='searchalttitle'>" .
                                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' ),