* Factorise calls to getTitle() and getSkin()
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Mon, 10 Oct 2011 18:05:59 +0000 (18:05 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Mon, 10 Oct 2011 18:05:59 +0000 (18:05 +0000)
* Use Linker::linkKnown() instead of link() where possible
* Escape some messages that are escaped in other usages
* Use Title::isSpecial() instead of checking that getPrefixedDBkey() is equals to $wgContLang->specialPage()

includes/SkinLegacy.php

index c11b089..1d043ed 100644 (file)
@@ -190,11 +190,13 @@ class LegacyTemplate extends BaseTemplate {
                        return '';
                }
 
-               if ( !$wgOut->isArticle() || !$this->getSkin()->getTitle()->exists() ) {
+               $title = $this->getSkin()->getTitle();
+
+               if ( !$wgOut->isArticle() || !$title->exists() ) {
                        return '';
                }
 
-               $article = new Article( $this->getSkin()->getTitle(), 0 );
+               $article = new Article( $title, 0 );
 
                $s = '';
 
@@ -218,8 +220,8 @@ class LegacyTemplate extends BaseTemplate {
                                'watchlist',
                                array( 'COUNT(*) AS n' ),
                                array(
-                                       'wl_title' => $dbr->strencode( $this->getSkin()->getTitle()->getDBkey() ),
-                                       'wl_namespace' => $this->getSkin()->getTitle()->getNamespace()
+                                       'wl_title' => $dbr->strencode( $title->getDBkey() ),
+                                       'wl_namespace' => $title->getNamespace()
                                ),
                                __METHOD__
                        );
@@ -285,7 +287,7 @@ class LegacyTemplate extends BaseTemplate {
                                }
                                $s = $wgLang->pipeList( array(
                                        $s,
-                                       '<a href="' . $this->getSkin()->getTitle()->escapeLocalURL( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>'
+                                       '<a href="' . $title->escapeLocalURL( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>'
                                ) );
                        }
                }
@@ -342,12 +344,14 @@ class LegacyTemplate extends BaseTemplate {
                                $element[] = $this->trackbackLink();
                        }
 
+                       $title = $this->getSkin()->getTitle();
+
                        if (
-                               $this->getSkin()->getTitle()->getNamespace() == NS_USER ||
-                               $this->getSkin()->getTitle()->getNamespace() == NS_USER_TALK
+                               $title->getNamespace() == NS_USER ||
+                               $title->getNamespace() == NS_USER_TALK
                        ) {
-                               $id = User::idFromName( $this->getSkin()->getTitle()->getText() );
-                               $ip = User::isIP( $this->getSkin()->getTitle()->getText() );
+                               $id = User::idFromName( $title->getText() );
+                               $ip = User::isIP( $title->getText() );
 
                                # Both anons and non-anons have contributions list
                                if ( $id || $ip ) {
@@ -361,7 +365,7 @@ class LegacyTemplate extends BaseTemplate {
 
                        $s = implode( $element, $sep );
 
-                       if ( $this->getSkin()->getTitle()->getArticleId() ) {
+                       if ( $title->getArticleId() ) {
                                $s .= "\n<br />";
 
                                // Delete/protect/move links for privileged users
@@ -451,23 +455,26 @@ class LegacyTemplate extends BaseTemplate {
                $diff = $wgRequest->getVal( 'diff' );
                $action = $wgRequest->getText( 'action' );
 
+               $skin = $this->getSkin();
+               $title = $skin->getTitle();
+
                $s[] = $this->printableLink();
-               $disclaimer = $this->getSkin()->disclaimerLink(); # may be empty
+               $disclaimer = $skin->disclaimerLink(); # may be empty
 
                if ( $disclaimer ) {
                        $s[] = $disclaimer;
                }
 
-               $privacy = $this->getSkin()->privacyLink(); # may be empty too
+               $privacy = $skin->privacyLink(); # may be empty too
 
                if ( $privacy ) {
                        $s[] = $privacy;
                }
 
                if ( $wgOut->isArticleRelated() ) {
-                       if ( $this->getSkin()->getTitle()->getNamespace() == NS_FILE ) {
-                               $name = $this->getSkin()->getTitle()->getDBkey();
-                               $image = wfFindFile( $this->getSkin()->getTitle() );
+                       if ( $title->getNamespace() == NS_FILE ) {
+                               $name = $title->getDBkey();
+                               $image = wfFindFile( $title );
 
                                if ( $image ) {
                                        $link = htmlspecialchars( $image->getURL() );
@@ -478,33 +485,28 @@ class LegacyTemplate extends BaseTemplate {
                }
 
                if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
-                       $s[] .= Linker::link(
-                                       $this->getSkin()->getTitle(),
-                                       wfMsg( 'currentrev' ),
-                                       array(),
-                                       array(),
-                                       array( 'known', 'noclasses' )
+                       $s[] .= Linker::linkKnown(
+                                       $title,
+                                       wfMsg( 'currentrev' )
                        );
                }
 
                if ( $wgUser->getNewtalk() ) {
                        # do not show "You have new messages" text when we are viewing our
                        # own talk page
-                       if ( !$this->getSkin()->getTitle()->equals( $wgUser->getTalkPage() ) ) {
-                               $tl = Linker::link(
+                       if ( !$title->equals( $wgUser->getTalkPage() ) ) {
+                               $tl = Linker::linkKnown(
                                        $wgUser->getTalkPage(),
                                        wfMsgHtml( 'newmessageslink' ),
                                        array(),
-                                       array( 'redirect' => 'no' ),
-                                       array( 'known', 'noclasses' )
+                                       array( 'redirect' => 'no' )
                                );
 
-                               $dl = Linker::link(
+                               $dl = Linker::linkKnown(
                                        $wgUser->getTalkPage(),
                                        wfMsgHtml( 'newmessagesdifflink' ),
                                        array(),
-                                       array( 'diff' => 'cur' ),
-                                       array( 'known', 'noclasses' )
+                                       array( 'diff' => 'cur' )
                                );
                                $s[] = '<strong>' . wfMsg( 'youhavenewmessages', $tl, $dl ) . '</strong>';
                                # disable caching
@@ -513,7 +515,7 @@ class LegacyTemplate extends BaseTemplate {
                        }
                }
 
-               $undelete = $this->getSkin()->getUndeleteLink();
+               $undelete = $skin->getUndeleteLink();
 
                if ( !empty( $undelete ) ) {
                        $s[] = $undelete;
@@ -583,20 +585,20 @@ class LegacyTemplate extends BaseTemplate {
                if ( !$wgOut->isArticleRelated() ) {
                        $s = wfMsg( 'protectedpage' );
                } else {
-                       if ( $this->getSkin()->getTitle()->quickUserCan( 'edit' ) && $this->getSkin()->getTitle()->exists() ) {
+                       $title = $this->getSkin()->getTitle();
+                       if ( $title->quickUserCan( 'edit' ) && $title->exists() ) {
                                $t = wfMsg( 'editthispage' );
-                       } elseif ( $this->getSkin()->getTitle()->quickUserCan( 'create' ) && !$this->getSkin()->getTitle()->exists() ) {
+                       } elseif ( $title->quickUserCan( 'create' ) && !$title->exists() ) {
                                $t = wfMsg( 'create-this-page' );
                        } else {
                                $t = wfMsg( 'viewsource' );
                        }
 
-                       $s = Linker::link(
-                               $this->getSkin()->getTitle(),
+                       $s = Linker::linkKnown(
+                               $title,
                                $t,
                                array(),
-                               $this->getSkin()->editUrlOptions(),
-                               array( 'known', 'noclasses' )
+                               $this->getSkin()->editUrlOptions()
                        );
                }
 
@@ -607,16 +609,16 @@ class LegacyTemplate extends BaseTemplate {
                global $wgUser, $wgRequest;
 
                $diff = $wgRequest->getVal( 'diff' );
+               $title = $this->getSkin()->getTitle();
 
-               if ( $this->getSkin()->getTitle()->getArticleId() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
+               if ( $title->getArticleId() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
                        $t = wfMsg( 'deletethispage' );
 
-                       $s = Linker::link(
-                               $this->getSkin()->getTitle(),
+                       $s = Linker::linkKnown(
+                               $title,
                                $t,
                                array(),
-                               array( 'action' => 'delete' ),
-                               array( 'known', 'noclasses' )
+                               array( 'action' => 'delete' )
                        );
                } else {
                        $s = '';
@@ -629,9 +631,10 @@ class LegacyTemplate extends BaseTemplate {
                global $wgUser, $wgRequest;
 
                $diff = $wgRequest->getVal( 'diff' );
+               $title = $this->getSkin()->getTitle();
 
-               if ( $this->getSkin()->getTitle()->getArticleId() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) ) {
-                       if ( $this->getSkin()->getTitle()->isProtected() ) {
+               if ( $title->getArticleId() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) ) {
+                       if ( $title->isProtected() ) {
                                $text = wfMsg( 'unprotectthispage' );
                                $query = array( 'action' => 'unprotect' );
                        } else {
@@ -639,12 +642,11 @@ class LegacyTemplate extends BaseTemplate {
                                $query = array( 'action' => 'protect' );
                        }
 
-                       $s = Linker::link(
-                               $this->getSkin()->getTitle(),
+                       $s = Linker::linkKnown(
+                               $title,
                                $text,
                                array(),
-                               $query,
-                               array( 'known', 'noclasses' )
+                               $query
                        );
                } else {
                        $s = '';
@@ -677,12 +679,11 @@ class LegacyTemplate extends BaseTemplate {
                                $id = 'mw-watch-link' . $this->mWatchLinkNum;
                        }
 
-                       $s = Linker::link(
+                       $s = Linker::linkKnown(
                                $title,
                                $text,
                                array( 'id' => $id ),
-                               $query,
-                               array( 'known', 'noclasses' )
+                               $query
                        );
                } else {
                        $s = wfMsg( 'notanarticle' );
@@ -693,12 +694,11 @@ class LegacyTemplate extends BaseTemplate {
 
        function moveThisPage() {
                if ( $this->getSkin()->getTitle()->quickUserCan( 'move' ) ) {
-                       return Linker::link(
+                       return Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Movepage' ),
                                wfMsg( 'movethispage' ),
                                array(),
-                               array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() ),
-                               array( 'known', 'noclasses' )
+                               array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() )
                        );
                } else {
                        // no message if page is protected - would be redundant
@@ -716,32 +716,23 @@ class LegacyTemplate extends BaseTemplate {
        }
 
        function whatLinksHere() {
-               return Linker::link(
+               return Linker::linkKnown(
                        SpecialPage::getTitleFor( 'Whatlinkshere', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
-                       wfMsgHtml( 'whatlinkshere' ),
-                       array(),
-                       array(),
-                       array( 'known', 'noclasses' )
+                       wfMsgHtml( 'whatlinkshere' )
                );
        }
 
        function userContribsLink() {
-               return Linker::link(
+               return Linker::linkKnown(
                        SpecialPage::getTitleFor( 'Contributions', $this->getSkin()->getTitle()->getDBkey() ),
-                       wfMsgHtml( 'contributions' ),
-                       array(),
-                       array(),
-                       array( 'known', 'noclasses' )
+                       wfMsgHtml( 'contributions' )
                );
        }
 
        function emailUserLink() {
-               return Linker::link(
+               return Linker::linkKnown(
                        SpecialPage::getTitleFor( 'Emailuser', $this->getSkin()->getTitle()->getDBkey() ),
-                       wfMsg( 'emailuser' ),
-                       array(),
-                       array(),
-                       array( 'known', 'noclasses' )
+                       wfMsgHtml( 'emailuser' )
                );
        }
 
@@ -751,12 +742,9 @@ class LegacyTemplate extends BaseTemplate {
                if ( !$wgOut->isArticleRelated() ) {
                        return '(' . wfMsg( 'notanarticle' ) . ')';
                } else {
-                       return Linker::link(
+                       return Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Recentchangeslinked', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
-                               wfMsg( 'recentchangeslinked-toolbox' ),
-                               array(),
-                               array(),
-                               array( 'known', 'noclasses' )
+                               wfMsgHtml( 'recentchangeslinked-toolbox' )
                        );
                }
        }
@@ -767,15 +755,16 @@ class LegacyTemplate extends BaseTemplate {
        }
 
        function talkLink() {
-               if ( NS_SPECIAL == $this->getSkin()->getTitle()->getNamespace() ) {
+               $title = $this->getSkin()->getTitle();
+               if ( NS_SPECIAL == $title->getNamespace() ) {
                        # No discussion links for special pages
                        return '';
                }
 
                $linkOptions = array();
 
-               if ( $this->getSkin()->getTitle()->isTalkPage() ) {
-                       $link = $this->getSkin()->getTitle()->getSubjectPage();
+               if ( $title->isTalkPage() ) {
+                       $link = $title->getSubjectPage();
                        switch( $link->getNamespace() ) {
                                case NS_MAIN:
                                        $text = wfMsg( 'articlepage' );
@@ -808,7 +797,7 @@ class LegacyTemplate extends BaseTemplate {
                                        $text = wfMsg( 'articlepage' );
                        }
                } else {
-                       $link = $this->getSkin()->getTitle()->getTalkPage();
+                       $link = $title->getTalkPage();
                        $text = wfMsg( 'talkpage' );
                }
 
@@ -820,30 +809,26 @@ class LegacyTemplate extends BaseTemplate {
        function commentLink() {
                global $wgOut;
 
-               if ( $this->getSkin()->getTitle()->getNamespace() == NS_SPECIAL ) {
+               $title = $this->getSkin()->getTitle();
+               if ( $title->getNamespace() == NS_SPECIAL ) {
                        return '';
                }
 
                # __NEWSECTIONLINK___ changes behaviour here
                # If it is present, the link points to this page, otherwise
                # it points to the talk page
-               if ( $this->getSkin()->getTitle()->isTalkPage() ) {
-                       $title = $this->getSkin()->getTitle();
-               } elseif ( $wgOut->showNewSectionLink() ) {
-                       $title = $this->getSkin()->getTitle();
-               } else {
-                       $title = $this->getSkin()->getTitle()->getTalkPage();
+               if ( !$title->isTalkPage() && !$wgOut->showNewSectionLink() ) {
+                       $title = $title->getTalkPage();
                }
 
-               return Linker::link(
+               return Linker::linkKnown(
                        $title,
                        wfMsg( 'postcomment' ),
                        array(),
                        array(
                                'action' => 'edit',
                                'section' => 'new'
-                       ),
-                       array( 'known', 'noclasses' )
+                       )
                );
        }
 
@@ -854,21 +839,17 @@ class LegacyTemplate extends BaseTemplate {
                        # Using an empty class attribute to avoid automatic setting of "external" class
                        return Linker::makeExternalLink( $wgUploadNavigationUrl, wfMsgHtml( 'upload' ), false, null, array( 'class' => '' ) );
                } else {
-                       return Linker::link(
+                       return Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Upload' ),
-                               wfMsgHtml( 'upload' ),
-                               array(),
-                               array(),
-                               array( 'known', 'noclasses' )
+                               wfMsgHtml( 'upload' )
                        );
                }
        }
 
        function nameAndLogin() {
-               global $wgUser, $wgLang, $wgRequest, $wgContLang;
-
-               $logoutPage = $wgContLang->specialPage( 'Userlogout' );
+               global $wgUser, $wgLang, $wgRequest;
 
+               $returnTo = $this->getSkin()->getTitle();
                $ret = '';
 
                if ( $wgUser->isAnon() ) {
@@ -883,11 +864,10 @@ class LegacyTemplate extends BaseTemplate {
                                $ret .= wfMsg( 'notloggedin' );
                        }
 
-                       $returnTo = $this->getSkin()->getTitle()->getPrefixedDBkey();
                        $query = array();
 
-                       if ( $logoutPage != $returnTo ) {
-                               $query['returnto'] = $returnTo;
+                       if ( !$returnTo->isSpecial( 'Userlogout' ) ) {
+                               $query['returnto'] = $returnTo->getPrefixedDBkey();
                        }
 
                        $loginlink = $wgUser->isAllowed( 'createaccount' )
@@ -898,7 +878,6 @@ class LegacyTemplate extends BaseTemplate {
                                wfMsg( $loginlink ), array(), $query
                        );
                } else {
-                       $returnTo = $this->getSkin()->getTitle()->getPrefixedDBkey();
                        $talkLink = Linker::link( $wgUser->getTalkPage(),
                                $wgLang->getNsText( NS_TALK ) );
 
@@ -908,7 +887,7 @@ class LegacyTemplate extends BaseTemplate {
                        $ret .= $wgLang->pipeList( array(
                                Linker::link(
                                        SpecialPage::getTitleFor( 'Userlogout' ), wfMsg( 'logout' ),
-                                       array(), array( 'returnto' => $returnTo )
+                                       array(), array( 'returnto' => $returnTo->getPrefixedDBkey() )
                                ),
                                Linker::specialLink( 'Preferences' ),
                        ) );