From: Brion Vibber Date: Mon, 21 Feb 2005 11:28:07 +0000 (+0000) Subject: Remove some cruft from skins... sooooo much cruft yet to go X-Git-Tag: 1.5.0alpha1~708 X-Git-Url: https://git.cyclocoop.org/%28%28?a=commitdiff_plain;h=ca38c848f8bcd23ada908003d4cda7edea6a6cce;p=lhc%2Fweb%2Fwiklou.git Remove some cruft from skins... sooooo much cruft yet to go --- diff --git a/includes/Parser.php b/includes/Parser.php index 70a0bc1e2a..f04c37140e 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -1108,7 +1108,10 @@ class Parser $useLinkPrefixExtension = $wgContLang->linkPrefixExtension(); - $nottalk = !Namespace::isTalk( $this->mTitle->getNamespace() ); + if( is_null( $this->mTitle ) ) { + wfDebugDieBacktrace( 'nooo' ); + } + $nottalk = !$this->mTitle->isTalkPage(); if ( $useLinkPrefixExtension ) { if ( preg_match( $e2, $s, $m ) ) { diff --git a/includes/Skin.php b/includes/Skin.php index bcd204859d..7bc87883cd 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -399,7 +399,7 @@ class Skin extends Linker { #if( !$wgOut->isArticle() ) return ''; $t = implode ( ' | ' , $wgOut->mCategoryLinks ) ; - $s = $this->makeKnownLink( 'Special:Categories', + $s = $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Categories' ), wfMsg( 'categories' ), 'article=' . urlencode( $wgTitle->getPrefixedDBkey() ) ) . ': ' . $t; @@ -508,7 +508,7 @@ class Skin extends Linker { } } if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) { - $s .= ' | ' . $this->makeKnownLink( $wgTitle->getPrefixedText(), + $s .= ' | ' . $this->makeKnownLinkObj( $wgTitle, wfMsg( 'currentrev' ) ); } @@ -518,9 +518,7 @@ class Skin extends Linker { if(!(strcmp($wgTitle->getText(),$wgUser->getName()) == 0 && $wgTitle->getNamespace()==Namespace::getTalk(Namespace::getUser()))) { - $n =$wgUser->getName(); - $tl = $this->makeKnownLink( $wgContLang->getNsText( - Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}", + $tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(), wfMsg('newmessageslink') ); $s.= ' | '. wfMsg( 'newmessages', $tl ) . ''; # disable caching @@ -633,9 +631,8 @@ class Skin extends Linker { if( $wgShowIPinHeader && isset( $_COOKIE[ini_get('session.name')] ) ) { $n = $wgIP; - $tl = $this->makeKnownLink( $wgContLang->getNsText( - Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}", - $wgContLang->getNsText( Namespace::getTalk( 0 ) ) ); + $tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(), + $wgContLang->getNsText( NS_TALK ) ); $s .= $n . ' ('.$tl.')'; } else { @@ -647,20 +644,20 @@ class Skin extends Linker { $q = ''; } else { $q = "returnto={$rt}"; } - $s .= "\n
" . $this->makeKnownLink( $li, - wfMsg( 'login' ), $q ); + $s .= "\n
" . $this->makeKnownLinkObj( + Title::makeTitle( NS_SPECIAL, 'Userlogin' ), + wfMsg( 'login' ), $q ); } else { $n = $wgUser->getName(); $rt = $wgTitle->getPrefixedURL(); - $tl = $this->makeKnownLink( $wgContLang->getNsText( - Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}", - $wgContLang->getNsText( Namespace::getTalk( 0 ) ) ); + $tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(), + $wgContLang->getNsText( NS_TALK ) ); $tl = " ({$tl})"; - $s .= $this->makeKnownLink( $wgContLang->getNsText( - Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}
" . - $this->makeKnownLink( $lo, wfMsg( 'logout' ), + $s .= $this->makeKnownLinkObj( $wgUser->getUserPage(), + $n ) . "{$tl}
" . + $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Userlogout' ), wfMsg( 'logout' ), "returnto={$rt}" ) . ' | ' . $this->specialLink( 'preferences' ); } @@ -976,11 +973,9 @@ class Skin extends Linker { if ( ! $wgOut->isArticleRelated() ) { $s = wfMsg( 'protectedpage' ); } else { - $n = $wgTitle->getPrefixedText(); if ( $wgTitle->userCanEdit() ) { $t = wfMsg( 'editthispage' ); } else { - #$t = wfMsg( "protectedpage" ); $t = wfMsg( 'viewsource' ); } $oid = $red = ''; @@ -989,7 +984,7 @@ class Skin extends Linker { if ( $oldid && ! isset( $diff ) ) { $oid = '&oldid='.$oldid; } - $s = $this->makeKnownLink( $n, $t, "action=edit{$oid}{$red}" ); + $s = $this->makeKnownLinkObj( $wgTitle, $t, "action=edit{$oid}{$red}" ); } return $s; } @@ -999,10 +994,9 @@ class Skin extends Linker { $diff = $wgRequest->getVal( 'diff' ); if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed('delete') ) { - $n = $wgTitle->getPrefixedText(); $t = wfMsg( 'deletethispage' ); - $s = $this->makeKnownLink( $n, $t, 'action=delete' ); + $s = $this->makeKnownLinkObj( $wgTitle, $t, 'action=delete' ); } else { $s = ''; } @@ -1014,8 +1008,6 @@ class Skin extends Linker { $diff = $wgRequest->getVal( 'diff' ); if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed('protect') ) { - $n = $wgTitle->getPrefixedText(); - if ( $wgTitle->isProtected() ) { $t = wfMsg( 'unprotectthispage' ); $q = 'action=unprotect'; @@ -1023,7 +1015,7 @@ class Skin extends Linker { $t = wfMsg( 'protectthispage' ); $q = 'action=protect'; } - $s = $this->makeKnownLink( $n, $t, $q ); + $s = $this->makeKnownLinkObj( $wgTitle, $t, $q ); } else { $s = ''; } @@ -1034,8 +1026,6 @@ class Skin extends Linker { global $wgUser, $wgOut, $wgTitle; if ( $wgOut->isArticleRelated() ) { - $n = $wgTitle->getPrefixedText(); - if ( $wgTitle->userIsWatching() ) { $t = wfMsg( 'unwatchthispage' ); $q = 'action=unwatch'; @@ -1043,7 +1033,7 @@ class Skin extends Linker { $t = wfMsg( 'watchthispage' ); $q = 'action=watch'; } - $s = $this->makeKnownLink( $n, $t, $q ); + $s = $this->makeKnownLinkObj( $wgTitle, $t, $q ); } else { $s = wfMsg( 'notanarticle' ); } @@ -1051,10 +1041,10 @@ class Skin extends Linker { } function moveThisPage() { - global $wgTitle, $wgContLang; + global $wgTitle; if ( $wgTitle->userCanMove() ) { - return $this->makeKnownLink( $wgContLang->specialPage( 'Movepage' ), + return $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Movepage' ), wfMsg( 'movethispage' ), 'target=' . $wgTitle->getPrefixedURL() ); } else { // no message if page is protected - would be redundant @@ -1065,25 +1055,22 @@ class Skin extends Linker { function historyLink() { global $wgTitle; - $s = $this->makeKnownLink( $wgTitle->getPrefixedText(), + return $this->makeKnownLinkObj( $wgTitle, wfMsg( 'history' ), 'action=history' ); - return $s; } function whatLinksHere() { - global $wgTitle, $wgContLang; + global $wgTitle; - $s = $this->makeKnownLink( $wgContLang->specialPage( 'Whatlinkshere' ), + return $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Whatlinkshere' ), wfMsg( 'whatlinkshere' ), 'target=' . $wgTitle->getPrefixedURL() ); - return $s; } function userContribsLink() { - global $wgTitle, $wgContLang; + global $wgTitle; - $s = $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ), + return $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Contributions' ), wfMsg( 'contributions' ), 'target=' . $wgTitle->getPartialURL() ); - return $s; } function showEmailUser( $id ) { @@ -1098,49 +1085,31 @@ class Skin extends Linker { } function emailUserLink() { - global $wgTitle, $wgContLang; + global $wgTitle; - $s = $this->makeKnownLink( $wgContLang->specialPage( 'Emailuser' ), + return $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Emailuser' ), wfMsg( 'emailuser' ), 'target=' . $wgTitle->getPartialURL() ); - return $s; } function watchPageLinksLink() { - global $wgOut, $wgTitle, $wgContLang; + global $wgOut, $wgTitle; if ( ! $wgOut->isArticleRelated() ) { - $s = '(' . wfMsg( 'notanarticle' ) . ')'; + return '(' . wfMsg( 'notanarticle' ) . ')'; } else { - $s = $this->makeKnownLink( $wgContLang->specialPage( + return $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Recentchangeslinked' ), wfMsg( 'recentchangeslinked' ), 'target=' . $wgTitle->getPrefixedURL() ); } - return $s; } function otherLanguages() { - global $wgOut, $wgContLang, $wgTitle, $wgUseNewInterlanguage; + global $wgOut, $wgContLang, $wgTitle; $a = $wgOut->getLanguageLinks(); if ( 0 == count( $a ) ) { - if ( !$wgUseNewInterlanguage ) return ''; - $ns = $wgContLang->getNsIndex ( $wgTitle->getNamespace () ) ; - if ( $ns != NS_MAIN AND $ns != NS_TALK ) return '' ; - $pn = 'Intl' ; - $x = 'mode=addlink&xt='.$wgTitle->getDBkey() ; - return $this->makeKnownLink( $wgContLang->specialPage( $pn ), - wfMsg( 'intl' ) , $x ); - } - - if ( !$wgUseNewInterlanguage ) { - $s = wfMsg( 'otherlanguages' ) . ': '; - } else { - global $wgContLanguageCode ; - $x = 'mode=zoom&xt='.$wgTitle->getDBkey() ; - $x .= '&xl='.$wgContLanguageCode ; - $s = $this->makeKnownLink( $wgContLang->specialPage( 'Intl' ), - wfMsg( 'otherlanguages' ) , $x ) . ': ' ; - } + return ''; + } $s = wfMsg( 'otherlanguages' ) . ': '; $first = true; @@ -1150,7 +1119,7 @@ class Skin extends Linker { $first = false; $nt = Title::newFromText( $l ); - $url = $nt->getFullURL(); + $url = $nt->escapeFullURL(); $text = $wgContLang->getLanguageName( $nt->getInterwiki() ); if ( '' == $text ) { $text = $l; } @@ -1196,42 +1165,38 @@ class Skin extends Linker { } function talkLink() { - global $wgContLang, $wgTitle, $wgLinkCache; + global $wgTitle, $wgLinkCache; - $tns = $wgTitle->getNamespace(); - if ( -1 == $tns ) { return ''; } + if ( NS_SPECIAL == $wgTitle->getNamespace() ) { + # No discussion links for special pages + return ''; + } - $pn = $wgTitle->getText(); - $tp = wfMsg( 'talkpage' ); - if ( Namespace::isTalk( $tns ) ) { - $lns = Namespace::getSubject( $tns ); - switch($tns) { - case 1: + if( $wgTitle->isTalkPage() ) { + $link = $wgTitle->getSubjectPage(); + switch( $link->getNamespace() ) { + case NS_MAIN: $text = wfMsg('articlepage'); break; - case 3: + case NS_USER: $text = wfMsg('userpage'); break; - case 5: + case NS_PROJECT: $text = wfMsg('wikipediapage'); break; - case 7: + case NS_IMAGE: $text = wfMsg('imagepage'); break; - default: + default: $text= wfMsg('articlepage'); } } else { - - $lns = Namespace::getTalk( $tns ); - $text=$tp; + $link = $wgTitle->getTalkPage(); + $text = wfMsg( 'talkpage' ); } - $n = $wgContLang->getNsText( $lns ); - if ( '' == $n ) { $link = $pn; } - else { $link = $n.':'.$pn; } $wgLinkCache->suspend(); - $s = $this->makeLink( $link, $text ); + $s = $this->makeLinkObj( $link, $text ); $wgLinkCache->resume(); return $s; @@ -1240,49 +1205,25 @@ class Skin extends Linker { function commentLink() { global $wgContLang, $wgTitle, $wgLinkCache; - $tns = $wgTitle->getNamespace(); - if ( -1 == $tns ) { return ''; } - - $lns = ( Namespace::isTalk( $tns ) ) ? $tns : Namespace::getTalk( $tns ); - - # assert Namespace::isTalk( $lns ) - - $n = $wgContLang->getNsText( $lns ); - $pn = $wgTitle->getText(); - - $link = $n.':'.$pn; - - $wgLinkCache->suspend(); - $s = $this->makeKnownLink($link, wfMsg('postcomment'), 'action=edit§ion=new'); - $wgLinkCache->resume(); - - return $s; + if ( $wgTitle->getNamespace() == NS_SPECIAL ) { + return ''; + } + return $this->makeKnownLinkObj( $wgTitle->getTalkPage(), + wfMsg( 'postcomment' ), 'action=edit§ion=new' ); } /* these are used extensively in SkinPHPTal, but also some other places */ /*static*/ function makeSpecialUrl( $name, $urlaction='' ) { $title = Title::makeTitle( NS_SPECIAL, $name ); - $this->checkTitle($title, $name); - return $title->getLocalURL( $urlaction ); - } - /*static*/ function makeTalkUrl ( $name, $urlaction='' ) { - $title = Title::newFromText( $name ); - $title = $title->getTalkPage(); - $this->checkTitle($title, $name); - return $title->getLocalURL( $urlaction ); - } - /*static*/ function makeArticleUrl ( $name, $urlaction='' ) { - $title = Title::newFromText( $name ); - $this->checkTitle($title, $name); - $title= $title->getSubjectPage(); - $this->checkTitle($title, $name); return $title->getLocalURL( $urlaction ); } + /*static*/ function makeI18nUrl ( $name, $urlaction='' ) { $title = Title::newFromText( wfMsgForContent($name) ); $this->checkTitle($title, $name); return $title->getLocalURL( $urlaction ); } + /*static*/ function makeUrl ( $name, $urlaction='' ) { $title = Title::newFromText( $name ); $this->checkTitle($title, $name); @@ -1315,32 +1256,6 @@ class Skin extends Linker { 'exists' => $title->getArticleID() != 0?true:false ); } - /*static*/ function makeTalkUrlDetails ( $name, $urlaction='' ) { - $title = Title::newFromText( $name ); - $title = $title->getTalkPage(); - $this->checkTitle($title, $name); - return array( - 'href' => $title->getLocalURL( $urlaction ), - 'exists' => $title->getArticleID() != 0?true:false - ); - } - /*static*/ function makeArticleUrlDetails ( $name, $urlaction='' ) { - $title = Title::newFromText( $name ); - $title= $title->getSubjectPage(); - $this->checkTitle($title, $name); - return array( - 'href' => $title->getLocalURL( $urlaction ), - 'exists' => $title->getArticleID() != 0?true:false - ); - } - /*static*/ function makeI18nUrlDetails ( $name, $urlaction='' ) { - $title = Title::newFromText( wfMsgForContent($name) ); - $this->checkTitle($title, $name); - return array( - 'href' => $title->getLocalURL( $urlaction ), - 'exists' => $title->getArticleID() != 0?true:false - ); - } # make sure we have some title to operate on /*static*/ function checkTitle ( &$title, &$name ) { diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 2e89518cb6..d6fa7137d2 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -157,6 +157,10 @@ class SkinTemplate extends Skin { wfProfileIn( "$fname-init" ); $this->initPage( $out ); + + $this->mTitle = $wgTitle; + $this->mUser =& $wgUser; + $tpl =& $this->setupTemplate( $this->template, 'skins' ); #if ( $wgUseDatabaseMessages ) { // uncomment this to fall back to GetText @@ -165,10 +169,10 @@ class SkinTemplate extends Skin { wfProfileOut( "$fname-init" ); wfProfileIn( "$fname-stuff" ); - $this->thispage = $wgTitle->getPrefixedDbKey(); - $this->thisurl = $wgTitle->getPrefixedURL(); + $this->thispage = $this->mTitle->getPrefixedDbKey(); + $this->thisurl = $this->mTitle->getPrefixedURL(); $this->loggedin = $wgUser->getID() != 0; - $this->iscontent = ($wgTitle->getNamespace() != Namespace::getSpecial() ); + $this->iscontent = ($this->mTitle->getNamespace() != Namespace::getSpecial() ); $this->iseditable = ($this->iscontent and !($action == 'edit' or $action == 'submit')); $this->username = $wgUser->getName(); $this->userpage = $wgContLang->getNsText( Namespace::getUser() ) . ":" . $wgUser->getName(); @@ -177,7 +181,7 @@ class SkinTemplate extends Skin { $this->usercss = $this->userjs = $this->userjsprev = false; $this->setupUserCss(); $this->setupUserJs(); - $this->titletxt = $wgTitle->getPrefixedText(); + $this->titletxt = $this->mTitle->getPrefixedText(); wfProfileOut( "$fname-stuff" ); wfProfileIn( "$fname-stuff2" ); @@ -219,13 +223,13 @@ class SkinTemplate extends Skin { $tpl->setRef( 'skinname', $this->skinname ); $tpl->setRef( 'stylename', $this->stylename ); $tpl->setRef( 'loggedin', $this->loggedin ); - $tpl->set('nsclass', 'ns-'.$wgTitle->getNamespace()); - $tpl->set('notspecialpage', $wgTitle->getNamespace() != NS_SPECIAL); + $tpl->set('nsclass', 'ns-'.$this->mTitle->getNamespace()); + $tpl->set('notspecialpage', $this->mTitle->getNamespace() != NS_SPECIAL); /* XXX currently unused, might get useful later - $tpl->set( "editable", ($wgTitle->getNamespace() != NS_SPECIAL ) ); - $tpl->set( "exists", $wgTitle->getArticleID() != 0 ); - $tpl->set( "watch", $wgTitle->userIsWatching() ? "unwatch" : "watch" ); - $tpl->set( "protect", count($wgTitle->isProtected()) ? "unprotect" : "protect" ); + $tpl->set( "editable", ($this->mTitle->getNamespace() != NS_SPECIAL ) ); + $tpl->set( "exists", $this->mTitle->getArticleID() != 0 ); + $tpl->set( "watch", $this->mTitle->userIsWatching() ? "unwatch" : "watch" ); + $tpl->set( "protect", count($this->mTitle->isProtected()) ? "unprotect" : "protect" ); $tpl->set( "helppage", wfMsg('helppage')); */ $tpl->set( 'searchaction', $this->escapeSearchLink() ); @@ -253,15 +257,14 @@ class SkinTemplate extends Skin { $tpl->set('jsvarurl', false); } if( $wgUser->getNewtalk() ) { - $usertitle = Title::newFromText( $this->userpage ); + $usertitle = $this->mUser->getUserPage(); $usertalktitle = $usertitle->getTalkPage(); - if($usertalktitle->getPrefixedDbKey() != $this->thispage){ - + if( !$usertalktitle->equals( $this->mTitle ) ) { $ntl = wfMsg( 'newmessages', - $this->makeKnownLink( - $wgContLang->getNsText( Namespace::getTalk( Namespace::getUser() ) ) - . ':' . $this->username, - wfMsg('newmessageslink') ) + $this->makeKnownLinkObj( + $usertalktitle, + wfMsg('newmessageslink') + ) ); # Disable Cache $wgOut->setSquidMaxage(0); @@ -289,8 +292,8 @@ class SkinTemplate extends Skin { $dbr =& wfGetDB( DB_SLAVE ); extract( $dbr->tableNames( 'watchlist' ) ); $sql = "SELECT COUNT(*) AS n FROM $watchlist - WHERE wl_title='" . $dbr->strencode($wgTitle->getDBKey()) . - "' AND wl_namespace=" . $wgTitle->getNamespace() ; + WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBKey()) . + "' AND wl_namespace=" . $this->mTitle->getNamespace() ; $res = $dbr->query( $sql, 'SkinPHPTal::outputPage'); $x = $dbr->fetchObject( $res ); $numberofwatchingusers = $x->n; @@ -463,6 +466,21 @@ class SkinTemplate extends Skin { return $personal_urls; } + + function tabAction( &$title, $message, $selected, $query='', $checkEdit=false ) { + $classes = array(); + if( $selected ) { + $classes[] = 'selected'; + } + if( $checkEdit && $title->getArticleId() == 0 ) { + $classes[] = 'new'; + } + return array( + 'class' => implode( ' ', $classes ), + 'text' => wfMsg( $message ), + 'href' => $title->getLocalUrl( $query ) ); + } + /** * an array of edit links by default used for the tabs * @return array @@ -473,7 +491,7 @@ class SkinTemplate extends Skin { $fname = 'SkinTemplate::buildContentActionUrls'; wfProfileIn( $fname ); - global $wgTitle, $wgUser, $wgRequest; + global $wgUser, $wgRequest; $action = $wgRequest->getText( 'action' ); $section = $wgRequest->getText( 'section' ); $oldid = $wgRequest->getVal( 'oldid' ); @@ -483,52 +501,34 @@ class SkinTemplate extends Skin { if( $this->iscontent ) { $nskey = $this->getNameSpaceKey(); - $is_active = !Namespace::isTalk( $wgTitle->getNamespace()) ; - - $subjectTitle = $wgTitle->getSubjectPage(); - if( $subjectTitle->getArticleId() != 0 ) { - $class = ($is_active) ? 'selected' : false; - } else { - $class = ($is_active) ? 'selected new' : 'new'; - } - $content_actions[$nskey] = array('class' => $class, - 'text' => wfMsg($nskey), - 'href' => $this->makeArticleUrl($this->thispage)); - - /* set up the classes for the talk link */ - wfProfileIn( "$fname-talk" ); - $talk_class = (Namespace::isTalk( $wgTitle->getNamespace()) ? 'selected' : false); - $talktitle = $wgTitle->getTalkPage(); - if( $talktitle->getArticleId() != 0 ) { - $content_actions['talk'] = array( - 'class' => $talk_class, - 'text' => wfMsg('talk'), - 'href' => $talktitle->getLocalUrl() - ); - } else { - $content_actions['talk'] = array( - 'class' => $talk_class ? $talk_class.' new' : 'new', - 'text' => wfMsg('talk'), - 'href' => $talktitle->getLocalUrl( 'action=edit' ) - ); - } - wfProfileOut( "$fname-talk" ); - + $content_actions[$nskey] = $this->tabAction( + $this->mTitle->getSubjectPage(), + $nskey, + !$this->mTitle->isTalkPage() ); + + $content_actions['talk'] = $this->tabAction( + $this->mTitle->getTalkPage(), + 'talk', + $this->mTitle->isTalkPage(), + '', + true); + wfProfileIn( "$fname-edit" ); - if ( $wgTitle->userCanEdit() ) { + if ( $this->mTitle->userCanEdit() ) { $oid = ( $oldid && ! isset( $diff ) ) ? '&oldid='.IntVal( $oldid ) : false; - $istalk = ( Namespace::isTalk( $wgTitle->getNamespace()) ); + $istalk = $this->mTitle->isTalkPage(); $istalkclass = $istalk?' istalk':''; $content_actions['edit'] = array( 'class' => ((($action == 'edit' or $action == 'submit') and $section != 'new') ? 'selected' : '').$istalkclass, 'text' => wfMsg('edit'), - 'href' => $wgTitle->getLocalUrl( 'action=edit'.$oid ) + 'href' => $this->mTitle->getLocalUrl( 'action=edit'.$oid ) ); + if ( $istalk ) { $content_actions['addsection'] = array( 'class' => $section == 'new'?'selected':false, 'text' => wfMsg('addsection'), - 'href' => $wgTitle->getLocalUrl( 'action=edit§ion=new' ) + 'href' => $this->mTitle->getLocalUrl( 'action=edit§ion=new' ) ); } } else { @@ -536,44 +536,33 @@ class SkinTemplate extends Skin { $content_actions['viewsource'] = array( 'class' => ($action == 'edit') ? 'selected' : false, 'text' => wfMsg('viewsource'), - 'href' => $wgTitle->getLocalUrl( 'action=edit'.$oid ) + 'href' => $this->mTitle->getLocalUrl( 'action=edit'.$oid ) ); } wfProfileOut( "$fname-edit" ); wfProfileIn( "$fname-live" ); - if ( $wgTitle->getArticleId() ) { + if ( $this->mTitle->getArticleId() ) { $content_actions['history'] = array( 'class' => ($action == 'history') ? 'selected' : false, 'text' => wfMsg('history_short'), - 'href' => $wgTitle->getLocalUrl( 'action=history') + 'href' => $this->mTitle->getLocalUrl( 'action=history') ); - # XXX: is there a rollback action anywhere or is it planned? - # Don't recall where i got this from... - /*if( $wgUser->getNewtalk() ) { - $content_actions['rollback'] = array('class' => ($action == 'rollback') ? 'selected' : false, - 'text' => wfMsg('rollback_short'), - 'href' => $this->makeUrl($this->thispage, 'action=rollback'), - 'ttip' => wfMsg('tooltip-rollback'), - 'akey' => wfMsg('accesskey-rollback')); - } - */ - if($wgUser->isAllowed('protect')){ - if(!$wgTitle->isProtected()){ + if(!$this->mTitle->isProtected()){ $content_actions['protect'] = array( 'class' => ($action == 'protect') ? 'selected' : false, 'text' => wfMsg('protect'), - 'href' => $wgTitle->getLocalUrl( 'action=protect' ) + 'href' => $this->mTitle->getLocalUrl( 'action=protect' ) ); } else { $content_actions['unprotect'] = array( 'class' => ($action == 'unprotect') ? 'selected' : false, 'text' => wfMsg('unprotect'), - 'href' => $wgTitle->getLocalUrl( 'action=unprotect' ) + 'href' => $this->mTitle->getLocalUrl( 'action=unprotect' ) ); } } @@ -581,13 +570,13 @@ class SkinTemplate extends Skin { $content_actions['delete'] = array( 'class' => ($action == 'delete') ? 'selected' : false, 'text' => wfMsg('delete'), - 'href' => $wgTitle->getLocalUrl( 'action=delete' ) + 'href' => $this->mTitle->getLocalUrl( 'action=delete' ) ); } if ( $wgUser->getID() != 0 ) { - if ( $wgTitle->userCanMove()) { + if ( $this->mTitle->userCanMove()) { $content_actions['move'] = array( - 'class' => ($wgTitle->getDbKey() == 'Movepage' and $wgTitle->getNamespace == Namespace::getSpecial()) ? 'selected' : false, + 'class' => ($this->mTitle->getDbKey() == 'Movepage' and $this->mTitle->getNamespace == Namespace::getSpecial()) ? 'selected' : false, 'text' => wfMsg('move'), 'href' => $this->makeSpecialUrl('Movepage', 'target='. urlencode( $this->thispage ) ) ); @@ -596,7 +585,7 @@ class SkinTemplate extends Skin { } else { //article doesn't exist or is deleted if($wgUser->isAllowed('delete')){ - if( $n = $wgTitle->isDeleted() ) { + if( $n = $this->mTitle->isDeleted() ) { $content_actions['undelete'] = array( 'class' => false, 'text' => wfMsg( "undelete_short", $n ), @@ -608,17 +597,17 @@ class SkinTemplate extends Skin { wfProfileOut( "$fname-live" ); if ( $wgUser->getID() != 0 and $action != 'submit' ) { - if( !$wgTitle->userIsWatching()) { + if( !$this->mTitle->userIsWatching()) { $content_actions['watch'] = array( 'class' => ($action == 'watch' or $action == 'unwatch') ? 'selected' : false, 'text' => wfMsg('watch'), - 'href' => $wgTitle->getLocalUrl( 'action=watch' ) + 'href' => $this->mTitle->getLocalUrl( 'action=watch' ) ); } else { $content_actions['unwatch'] = array( 'class' => ($action == 'unwatch' or $action == 'watch') ? 'selected' : false, 'text' => wfMsg('unwatch'), - 'href' => $wgTitle->getLocalUrl( 'action=unwatch' ) + 'href' => $this->mTitle->getLocalUrl( 'action=unwatch' ) ); } } @@ -650,7 +639,7 @@ class SkinTemplate extends Skin { $content_actions['varlang-' . $vcount] = array( 'class' => $selected, 'text' => $varname, - 'href' => $wgTitle->getLocalUrl( $actstr . 'variant=' . $code ) + 'href' => $this->mTitle->getLocalUrl( $actstr . 'variant=' . $code ) ); $vcount ++; } @@ -699,7 +688,7 @@ class SkinTemplate extends Skin { $fname = 'SkinTemplate::buildNavUrls'; wfProfileIn( $fname ); - global $wgTitle, $wgUser, $wgRequest; + global $wgUser, $wgRequest; global $wgSiteSupportPage, $wgDisableUploads; $action = $wgRequest->getText( 'action' ); @@ -723,14 +712,14 @@ class SkinTemplate extends Skin { } $nav_urls['specialpages'] = array('href' => $this->makeSpecialUrl('Specialpages')); - if( $wgTitle->getNamespace() != NS_SPECIAL) { + if( $this->mTitle->getNamespace() != NS_SPECIAL) { $nav_urls['whatlinkshere'] = array('href' => $this->makeSpecialUrl('Whatlinkshere', 'target='.urlencode( $this->thispage))); $nav_urls['recentchangeslinked'] = array('href' => $this->makeSpecialUrl('Recentchangeslinked', 'target='.urlencode( $this->thispage))); } - if( $wgTitle->getNamespace() == NS_USER || $wgTitle->getNamespace() == NS_USER_TALK ) { - $id = User::idFromName($wgTitle->getText()); - $ip = User::isIP($wgTitle->getText()); + if( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) { + $id = User::idFromName($this->mTitle->getText()); + $ip = User::isIP($this->mTitle->getText()); } else { $id = 0; $ip = false; @@ -738,7 +727,7 @@ class SkinTemplate extends Skin { if($id || $ip) { # both anons and non-anons have contri list $nav_urls['contributions'] = array( - 'href' => $this->makeSpecialUrl('Contributions', "target=" . $wgTitle->getPartialURL() ) + 'href' => $this->makeSpecialUrl('Contributions', "target=" . $this->mTitle->getPartialURL() ) ); } else { $nav_urls['contributions'] = false; @@ -746,7 +735,7 @@ class SkinTemplate extends Skin { $nav_urls['emailuser'] = false; if( $this->showEmailUser( $id ) ) { $nav_urls['emailuser'] = array( - 'href' => $this->makeSpecialUrl('Emailuser', "target=" . $wgTitle->getPartialURL() ) + 'href' => $this->makeSpecialUrl('Emailuser', "target=" . $this->mTitle->getPartialURL() ) ); } wfProfileOut( $fname ); @@ -759,8 +748,7 @@ class SkinTemplate extends Skin { * @private */ function getNameSpaceKey () { - global $wgTitle; - switch ($wgTitle->getNamespace()) { + switch ($this->mTitle->getNamespace()) { case NS_MAIN: case NS_TALK: return 'nstab-main'; @@ -801,7 +789,7 @@ class SkinTemplate extends Skin { $fname = 'SkinTemplate::setupUserCss'; wfProfileIn( $fname ); - global $wgRequest, $wgTitle, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser; + global $wgRequest, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser; $sitecss = ''; $usercss = ''; @@ -813,7 +801,7 @@ class SkinTemplate extends Skin { $action = $wgRequest->getText('action'); # if we're previewing the CSS page, use it - if( $wgTitle->isCssSubpage() and $this->userCanPreview( $action ) ) { + if( $this->mTitle->isCssSubpage() and $this->userCanPreview( $action ) ) { $siteargs = "&smaxage=0&maxage=0"; $usercss = $wgRequest->getText('wpTextbox1'); } else { @@ -848,11 +836,11 @@ class SkinTemplate extends Skin { $fname = 'SkinTemplate::setupUserJs'; wfProfileIn( $fname ); - global $wgRequest, $wgTitle, $wgAllowUserJs; + global $wgRequest, $wgAllowUserJs; $action = $wgRequest->getText('action'); if( $wgAllowUserJs && $this->loggedin ) { - if( $wgTitle->isJsSubpage() and $this->userCanPreview( $action ) ) { + if( $this->mTitle->isJsSubpage() and $this->userCanPreview( $action ) ) { # XXX: additional security check/prompt? $this->userjsprev = '/*getText('wpTextbox1') . ' /*]]>*/'; } else { diff --git a/includes/Title.php b/includes/Title.php index 64f5cf29cc..329a36255f 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -102,6 +102,10 @@ class Title { $fname = 'Title::newFromText'; wfProfileIn( $fname ); + if( is_object( $text ) ) { + wfDebugDieBacktrace( 'Title::newFromText given an object' ); + } + /** * Wiki pages often contain multiple links to the same page. * Title normalization and parsing can become expensive on @@ -870,6 +874,15 @@ class Title { } return false; } + + /** + * Is this a talk page of some sort? + * @return bool + * @access public + */ + function isTalkPage() { + return Namespace::isTalk( $this->getNamespace() ); + } /** * Is this a .css or .js subpage of a user page? @@ -1886,6 +1899,18 @@ class Title { 'rev_page=' . IntVal( $this->getArticleId() ) . ' AND rev_id>' . IntVal( $revision ) . ' ORDER BY rev_id' ); } + + /** + * Compare with another title. + * + * @param Title $title + * @return bool + */ + function equals( &$title ) { + return $this->getInterwiki() == $title->getInterwiki() + && $this->getNamespace() == $title->getNamespace() + && $this->getDbkey() == $title->getDbkey(); + } } ?> \ No newline at end of file diff --git a/includes/User.php b/includes/User.php index 81f8130cb6..bcb89344ba 100644 --- a/includes/User.php +++ b/includes/User.php @@ -1148,9 +1148,26 @@ class User { return wfSetVar( $this->mDataLoaded, $loaded ); } + /** + * Get this user's personal page title. + * + * @return Title + * @access public + */ function getUserPage() { return Title::makeTitle( NS_USER, $this->mName ); } + + /** + * Get this user's talk page title. + * + * @return Title + * @access public + */ + function getTalkPage() { + $title = $this->getUserPage(); + return $title->getTalkPage(); + } /** * @static