2003-04-14 23:10:40 +00:00
|
|
|
<?
|
|
|
|
|
# See skin.doc
|
|
|
|
|
|
|
|
|
|
# These are the INTERNAL names, which get mapped
|
|
|
|
|
# directly to class names. For display purposes, the
|
|
|
|
|
# Language class has internationalized names
|
|
|
|
|
#
|
|
|
|
|
/* private */ $wgValidSkinNames = array(
|
|
|
|
|
"Standard", "Nostalgia", "CologneBlue"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
class RecentChangesClass {
|
|
|
|
|
var $secureName , $displayName , $link , $namespace ;
|
|
|
|
|
var $oldid , $diffid , $timestamp , $curlink , $lastlink , $usertalklink , $versionlink ;
|
|
|
|
|
var $usercomment , $userlink ;
|
|
|
|
|
var $isminor , $isnew , $watched , $islog ;
|
|
|
|
|
} ;
|
|
|
|
|
|
|
|
|
|
class Skin {
|
|
|
|
|
|
|
|
|
|
/* private */ var $lastdate, $lastline;
|
|
|
|
|
|
|
|
|
|
var $rc_cache ; # Cache for Enhanced Recent Changes
|
|
|
|
|
var $rccc ; # Recent Changes Cache Counter for visibility toggle
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Skin()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSkinNames()
|
|
|
|
|
{
|
|
|
|
|
global $wgValidSkinNames;
|
|
|
|
|
return $wgValidSkinNames;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getStylesheet()
|
|
|
|
|
{
|
|
|
|
|
return "wikistandard.css";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function qbSetting()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isQuickbarSupressed() ) { return 0; }
|
|
|
|
|
$q = $wgUser->getOption( "quickbar" );
|
|
|
|
|
if ( "" == $q ) { $q = 0; }
|
|
|
|
|
return $q;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function initPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgStyleSheetPath;
|
|
|
|
|
wfProfileIn( "Skin::initPage" );
|
|
|
|
|
|
|
|
|
|
$wgOut->addLink( "shortcut icon", "", "/favicon.ico" );
|
|
|
|
|
if ( $wgOut->isPrintable() ) { $ss = "wikiprintable.css"; }
|
|
|
|
|
else { $ss = $this->getStylesheet(); }
|
|
|
|
|
$wgOut->addLink( "stylesheet", "", "{$wgStyleSheetPath}/{$ss}" );
|
|
|
|
|
wfProfileOut();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getHeadScripts() {
|
|
|
|
|
$r = "
|
|
|
|
|
<SCRIPT TYPE=\"text/javascript\">
|
|
|
|
|
function toggleVisibility( _levelId, _otherId, _linkId) {
|
|
|
|
|
var thisLevel = document.getElementById( _levelId );
|
|
|
|
|
var otherLevel = document.getElementById( _otherId );
|
|
|
|
|
var linkLevel = document.getElementById( _linkId );
|
|
|
|
|
if ( thisLevel.style.display == 'none' ) {
|
|
|
|
|
thisLevel.style.display = 'block';
|
|
|
|
|
otherLevel.style.display = 'none';
|
|
|
|
|
linkLevel.style.display = 'inline';
|
|
|
|
|
} else {
|
|
|
|
|
thisLevel.style.display = 'none';
|
|
|
|
|
otherLevel.style.display = 'inline';
|
|
|
|
|
linkLevel.style.display = 'none';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</SCRIPT>
|
|
|
|
|
" ;
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getUserStyles()
|
|
|
|
|
{
|
|
|
|
|
$s = "<style type='text/css' media='screen'><!--\n";
|
|
|
|
|
$s .= $this->doGetUserStyles();
|
|
|
|
|
$s .= "//--></style>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doGetUserStyles()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser;
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( 1 == $wgUser->getOption( "underline" ) ) {
|
|
|
|
|
$s .= "a.stub, a.new, a.internal, a.external { " .
|
|
|
|
|
"text-decoration: underline; }\n";
|
|
|
|
|
} else {
|
|
|
|
|
$s .= "a.stub, a.new, a.internal, a.external { " .
|
|
|
|
|
"text-decoration: none; }\n";
|
|
|
|
|
}
|
|
|
|
|
if ( 1 == $wgUser->getOption( "highlightbroken" ) ) {
|
|
|
|
|
$s .= "a.new { color: #CC2200; }\n" .
|
|
|
|
|
"#quickbar a.new { color: CC2200; }\n";
|
|
|
|
|
}
|
|
|
|
|
if ( 1 == $wgUser->getOption( "justify" ) ) {
|
|
|
|
|
$s .= "#article { text-align: justify; }\n";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getBodyOptions()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgTitle, $wgNamespaceBackgrounds, $wgOut, $oldid, $redirect, $diff,$action;
|
|
|
|
|
|
|
|
|
|
if ( 0 != $wgTitle->getNamespace() ) {
|
|
|
|
|
$a = array( "bgcolor" => "#FFFFDD" );
|
|
|
|
|
}
|
|
|
|
|
else $a = array( "bgcolor" => "#FFFFFF" );
|
|
|
|
|
if($wgOut->isArticle() && $wgUser->getOption("editondblclick")
|
|
|
|
|
&&
|
|
|
|
|
(!$wgTitle->isProtected() || $wgUser->isSysop())
|
|
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
$n = $wgTitle->getPrefixedURL();
|
|
|
|
|
$t = wfMsg( "editthispage" );
|
|
|
|
|
$oid = $red = "";
|
|
|
|
|
if ( $redirect ) { $red = "&redirect={$redirect}"; }
|
|
|
|
|
if ( $oldid && ! isset( $diff ) ) {
|
|
|
|
|
$oid = "&oldid={$oldid}";
|
|
|
|
|
}
|
|
|
|
|
$s = wfLocalUrlE($n,"action=edit{$oid}{$red}");
|
|
|
|
|
$s = "document.location = \"" .$s ."\";";
|
|
|
|
|
$a += array ("ondblclick" => $s);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if($action=="edit") { # set focus in edit box
|
|
|
|
|
$a += array("onLoad"=>"document.editform.wpTextbox1.focus()");
|
|
|
|
|
}
|
|
|
|
|
return $a;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getExternalLinkAttributes( $link, $text )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgLang;
|
|
|
|
|
|
|
|
|
|
$link = urldecode( $link );
|
|
|
|
|
$link = $wgLang->checkTitleEncoding( $link );
|
|
|
|
|
$link = str_replace( "_", " ", $link );
|
|
|
|
|
$link = wfEscapeHTML( $link );
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) { $r = " class='printable'"; }
|
|
|
|
|
else { $r = " class='external'"; }
|
|
|
|
|
|
|
|
|
|
if ( 1 == $wgUser->getOption( "hover" ) ) {
|
|
|
|
|
$r .= " title=\"{$link}\"";
|
|
|
|
|
}
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getInternalLinkAttributes( $link, $text, $broken = false )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut;
|
|
|
|
|
|
|
|
|
|
$link = urldecode( $link );
|
|
|
|
|
$link = str_replace( "_", " ", $link );
|
|
|
|
|
$link = wfEscapeHTML( $link );
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) { $r = " class='printable'"; }
|
|
|
|
|
else if ( $broken == "stub" ) { $r = " class='stub'"; }
|
|
|
|
|
else if ( $broken == "yes" ) { $r = " class='new'"; }
|
|
|
|
|
else { $r = " class='internal'"; }
|
|
|
|
|
|
|
|
|
|
if ( 1 == $wgUser->getOption( "hover" ) ) {
|
|
|
|
|
$r .= " title=\"{$link}\"";
|
|
|
|
|
}
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getLogo()
|
|
|
|
|
{
|
|
|
|
|
global $wgLogo;
|
|
|
|
|
return $wgLogo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# This will be called immediately after the <body> tag. Split into
|
|
|
|
|
# two functions to make it easier to subclass.
|
|
|
|
|
#
|
|
|
|
|
function beforeContent()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$s = $this->pageTitle() . $this->pageSubtitle() . "\n";
|
|
|
|
|
$s .= "\n<div class='bodytext'>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
return $this->doBeforeContent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doBeforeContent()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle;
|
|
|
|
|
wfProfileIn( "Skin::doBeforeContent" );
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
$qb = $this->qbSetting();
|
|
|
|
|
|
|
|
|
|
if( $langlinks = $this->otherLanguages() ) {
|
|
|
|
|
$rows = 2;
|
|
|
|
|
$borderhack = "";
|
|
|
|
|
} else {
|
|
|
|
|
$rows = 1;
|
|
|
|
|
$langlinks = false;
|
|
|
|
|
$borderhack = "class='top'";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$s .= "\n<div id='content'>\n<div id='topbar'>" .
|
|
|
|
|
"<table width='98%' border=0 cellspacing=0><tr>";
|
|
|
|
|
|
|
|
|
|
if ( 0 == $qb ) {
|
|
|
|
|
$s .= "<td class='top' align=left valign=top rowspan='{$rows}'>" .
|
|
|
|
|
$this->logoText() . "</td>";
|
|
|
|
|
} else if ( 1 == $qb || 3 == $qb ) { # Left
|
|
|
|
|
$s .= $this->getQuickbarCompensator( $rows );
|
|
|
|
|
}
|
|
|
|
|
$s .= "<td {$borderhack} align=left valign=top>";
|
|
|
|
|
|
|
|
|
|
$s .= $this->topLinks() ;
|
|
|
|
|
$s .= "<p class='subtitle'>" . $this->pageTitleLinks();
|
|
|
|
|
|
|
|
|
|
$s .= "</td>\n<td {$borderhack} valign=top align=right nowrap>";
|
|
|
|
|
$s .= $this->nameAndLogin();
|
|
|
|
|
$s .= "\n<br>" . $this->searchForm() . "</td>";
|
|
|
|
|
|
|
|
|
|
if ( $langlinks ) {
|
|
|
|
|
$s .= "</tr>\n<tr><td class='top' colspan=\"2\">$langlinks</td>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( 2 == $qb ) { # Right
|
|
|
|
|
$s .= $this->getQuickbarCompensator( $rows );
|
|
|
|
|
}
|
|
|
|
|
$s .= "</tr></table>\n</div>\n";
|
|
|
|
|
$s .= "\n<div id='article'>";
|
|
|
|
|
|
|
|
|
|
$s .= $this->pageTitle();
|
|
|
|
|
$s .= $this->pageSubtitle() . "\n<p>";
|
|
|
|
|
wfProfileOut();
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getQuickbarCompensator( $rows = 1 )
|
|
|
|
|
{
|
|
|
|
|
return "<td width='152' rowspan='{$rows}'> </td>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# This gets called immediately before the </body> tag.
|
|
|
|
|
#
|
|
|
|
|
function afterContent()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgServer, $HTTP_SERVER_VARS;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$s = "\n</div>\n";
|
|
|
|
|
|
|
|
|
|
$u = $wgServer . $HTTP_SERVER_VARS['REQUEST_URI'];
|
|
|
|
|
$u = preg_replace( "/[?&]printable=yes/", "", $u );
|
|
|
|
|
$rf = str_replace( "$1", $u, wfMsg( "retrievedfrom" ) );
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isArticle() ) {
|
|
|
|
|
$lm = "<br>" . $this->lastModified();
|
|
|
|
|
} else { $lm = ""; }
|
|
|
|
|
|
|
|
|
|
$s .= "<p><em>{$rf}{$lm}</em>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
return $this->doAfterContent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doAfterContent()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut;
|
|
|
|
|
wfProfileIn( "Skin::doAfterContent" );
|
|
|
|
|
|
|
|
|
|
$s = "\n</div><br clear=all>\n";
|
|
|
|
|
|
|
|
|
|
$s .= "\n<div id='footer'>";
|
|
|
|
|
$s .= "<table width='98%' border=0 cellspacing=0><tr>";
|
|
|
|
|
|
|
|
|
|
$qb = $this->qbSetting();
|
|
|
|
|
if ( 1 == $qb || 3 == $qb ) { # Left
|
|
|
|
|
$s .= $this->getQuickbarCompensator();
|
|
|
|
|
}
|
|
|
|
|
$s .= "<td class='bottom' align=left valign=top>";
|
|
|
|
|
|
|
|
|
|
$s .= $this->bottomLinks();
|
|
|
|
|
$s .= "\n<br>" . $this->mainPageLink()
|
|
|
|
|
. " | " . $this->aboutLink()
|
|
|
|
|
. " | " . $this->specialLink( "recentchanges" )
|
|
|
|
|
. " | " . $this->searchForm()
|
|
|
|
|
. "<br>" . $this->pageStats();
|
|
|
|
|
|
|
|
|
|
$s .= "</td>";
|
|
|
|
|
if ( 2 == $qb ) { # Right
|
|
|
|
|
$s .= $this->getQuickbarCompensator();
|
|
|
|
|
}
|
|
|
|
|
$s .= "</tr></table>\n</div>\n</div>\n";
|
|
|
|
|
|
|
|
|
|
if ( 0 != $qb ) { $s .= $this->quickBar(); }
|
|
|
|
|
wfProfileOut();
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageTitleLinks()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $oldid, $action, $diff, $wgUser, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->printableLink();
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isArticle() ) {
|
|
|
|
|
if ( $wgTitle->getNamespace() == Namespace::getImage() ) {
|
|
|
|
|
$name = $wgTitle->getDBkey();
|
|
|
|
|
$link = wfEscapeHTML( wfImageUrl( $name ) );
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $name );
|
|
|
|
|
$s .= " | <a href=\"{$link}\"{$style}>{$name}</a>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( "history" == $action || isset( $diff ) || isset( $oldid ) ) {
|
|
|
|
|
$s .= " | " . $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "currentrev" ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $wgUser->getNewtalk() ) {
|
|
|
|
|
# do not show "You have new messages" text when we are viewing our
|
|
|
|
|
# own talk page
|
|
|
|
|
|
|
|
|
|
if(!(strcmp($wgTitle->getText(),$wgUser->getName()) == 0 &&
|
|
|
|
|
$wgTitle->getNamespace()==Namespace::getTalk(Namespace::getUser()))) {
|
|
|
|
|
$n =$wgUser->getName();
|
|
|
|
|
$tl = $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
|
|
|
|
|
wfMsg("newmessageslink") );
|
|
|
|
|
$s.=" | <strong>". str_replace( "$1", $tl, wfMsg("newmessages") ) . "</strong>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function printableLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $oldid, $action;
|
|
|
|
|
|
|
|
|
|
if ( "history" == $action ) { $q = "action=history&"; }
|
|
|
|
|
else { $q = ""; }
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
WfMsg( "printableversion" ), "{$q}printable=yes" );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageTitle()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle;
|
|
|
|
|
|
|
|
|
|
$s = "<h1 class='pagetitle'>" . $wgOut->getPageTitle() . "</h1>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageSubtitle()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut,$wgTitle,$wgNamespacesWithSubpages;
|
|
|
|
|
|
|
|
|
|
$sub = $wgOut->getSubtitle();
|
|
|
|
|
if ( "" == $sub ) { $sub = wfMsg( "fromwikipedia" ); }
|
|
|
|
|
if($wgOut->isArticle() && $wgNamespacesWithSubpages[$wgTitle->getNamespace()]) {
|
|
|
|
|
$ptext=$wgTitle->getPrefixedText();
|
|
|
|
|
if(preg_match("/\//",$ptext)) {
|
|
|
|
|
$sub.="</p><p class='subpages'>";
|
|
|
|
|
$links=explode("/",$ptext);
|
|
|
|
|
$c=0;
|
|
|
|
|
$growinglink="";
|
|
|
|
|
foreach($links as $link) {
|
|
|
|
|
$c++;
|
|
|
|
|
if ($c<count($links)) {
|
|
|
|
|
$growinglink.=$link;
|
|
|
|
|
$getlink=$this->makeLink($growinglink,$link);
|
|
|
|
|
if(preg_match("/class='new'/i",$getlink)) { break; } # this is a hack, but it saves time
|
|
|
|
|
if ($c>1) {
|
|
|
|
|
$sub .= " | ";
|
|
|
|
|
} else {
|
|
|
|
|
$sub .="< ";
|
|
|
|
|
}
|
|
|
|
|
$sub .= $getlink;
|
|
|
|
|
$growinglink.="/";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$s = "<p class='subtitle'>{$sub}\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function nameAndLogin()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$li = $wgLang->specialPage( "Userlogin" );
|
|
|
|
|
$lo = $wgLang->specialPage( "Userlogout" );
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( 0 == $wgUser->getID() ) {
|
|
|
|
|
$n = getenv( "REMOTE_ADDR" );
|
|
|
|
|
$rt = $wgTitle->getPrefixedURL();
|
|
|
|
|
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
|
|
|
|
|
$q = "";
|
|
|
|
|
} else { $q = "returnto={$rt}"; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$tl = $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
|
|
|
|
|
$wgLang->getNsText( Namespace::getTalk( 0 ) ) );
|
|
|
|
|
|
|
|
|
|
$s .= $n . " (".$tl.")" . "\n<br>" . $this->makeKnownLink( $li,
|
|
|
|
|
wfMsg( "login" ), $q );
|
|
|
|
|
|
|
|
|
|
$tl = " ({$tl})";
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$n = $wgUser->getName();
|
|
|
|
|
$rt = $wgTitle->getPrefixedURL();
|
|
|
|
|
$tl = $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
|
|
|
|
|
$wgLang->getNsText( Namespace::getTalk( 0 ) ) );
|
|
|
|
|
|
|
|
|
|
$tl = " ({$tl})";
|
|
|
|
|
|
|
|
|
|
$s .= $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br>" .
|
|
|
|
|
$this->makeKnownLink( $lo, wfMsg( "logout" ),
|
|
|
|
|
"returnto={$rt}" ) . " | " .
|
|
|
|
|
$this->specialLink( "preferences" );
|
|
|
|
|
}
|
|
|
|
|
$s .= " | " . $this->makeKnownLink( wfMsg( "helppage" ),
|
|
|
|
|
wfMsg( "help" ) );
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function searchForm()
|
|
|
|
|
{
|
|
|
|
|
global $search;
|
2003-05-14 21:23:46 +00:00
|
|
|
|
|
|
|
|
$s = "<form name='search' class='inline' method=get action=\""
|
2003-04-14 23:10:40 +00:00
|
|
|
. wfLocalUrl( "" ) . "\">"
|
|
|
|
|
. "<input type=text name=\"search\" size=19 value=\""
|
|
|
|
|
. htmlspecialchars(substr($search,0,256)) . "\">\n"
|
2003-05-14 21:23:46 +00:00
|
|
|
. "<input type=submit name=\"go\" value=\"" . wfMsg ("go") . "\"> "
|
|
|
|
|
. "<input type=submit value=\"" . wfMsg ("search") . "\"></form>";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function topLinks()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut;
|
|
|
|
|
$sep = " |\n";
|
|
|
|
|
|
|
|
|
|
$s = $this->mainPageLink() . $sep
|
|
|
|
|
. $this->specialLink( "recentchanges" );
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isArticle() ) {
|
|
|
|
|
$s .= $sep . $this->editThisPage()
|
|
|
|
|
. $sep . $this->historyLink();
|
|
|
|
|
}
|
|
|
|
|
$s .= $sep . $this->specialPagesList();
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function bottomLinks()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser, $wgTitle;
|
|
|
|
|
$sep = " |\n";
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( $wgOut->isArticle() ) {
|
|
|
|
|
$s .= "<strong>" . $this->editThisPage() . "</strong>";
|
|
|
|
|
if ( 0 != $wgUser->getID() ) {
|
|
|
|
|
$s .= $sep . $this->watchThisPage();
|
|
|
|
|
}
|
|
|
|
|
$s .= $sep . $this->talkLink()
|
|
|
|
|
. $sep . $this->historyLink()
|
|
|
|
|
. $sep . $this->whatLinksHere()
|
|
|
|
|
. $sep . $this->watchPageLinksLink();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getNamespace() == Namespace::getUser()
|
|
|
|
|
|| $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser()) )
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
$id=User::idFromName($wgTitle->getText());
|
|
|
|
|
$ip=User::isIP($wgTitle->getText());
|
|
|
|
|
|
|
|
|
|
if($id || $ip) { # both anons and non-anons have contri list
|
|
|
|
|
$s .= $sep . $this->userContribsLink();
|
|
|
|
|
}
|
|
|
|
|
if ( 0 != $wgUser->getID() ) { # show only to signed in users
|
|
|
|
|
if($id) { # can only email non-anons
|
|
|
|
|
$s .= $sep . $this->emailUserLink();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() && $wgTitle->getArticleId() ) {
|
|
|
|
|
$s .= "\n<br>" . $this->deleteThisPage() .
|
|
|
|
|
$sep . $this->protectThisPage() .
|
|
|
|
|
$sep . $this->moveThisPage();
|
|
|
|
|
}
|
|
|
|
|
$s .= "<br>\n" . $this->otherLanguages();
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageStats()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgLang, $wgArticle;
|
2003-05-14 08:42:47 +00:00
|
|
|
global $oldid, $diff, $wgDisableCounters;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
if ( ! $wgOut->isArticle() ) { return ""; }
|
|
|
|
|
if ( isset( $oldid ) || isset( $diff ) ) { return ""; }
|
|
|
|
|
if ( 0 == $wgArticle->getID() ) { return ""; }
|
|
|
|
|
|
2003-05-14 08:42:47 +00:00
|
|
|
if ( $wgDisableCounters ) {
|
2003-05-01 00:19:49 +00:00
|
|
|
$s = "";
|
|
|
|
|
} else {
|
|
|
|
|
$count = $wgArticle->getCount();
|
|
|
|
|
$s = str_replace( "$1", $count, wfMsg( "viewcount" ) );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->lastModified();
|
2003-05-01 00:19:49 +00:00
|
|
|
$s .= " " . wfMsg( "gnunote" );
|
2003-04-14 23:10:40 +00:00
|
|
|
return "<span id='pagestats'>{$s}</span>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function lastModified()
|
|
|
|
|
{
|
|
|
|
|
global $wgLang, $wgArticle;
|
|
|
|
|
|
|
|
|
|
$d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
|
|
|
|
|
$s = " " . str_replace( "$1", $d, wfMsg( "lastmodified" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function logoText( $align = "" )
|
|
|
|
|
{
|
|
|
|
|
if ( "" != $align ) { $a = " align='{$align}'"; }
|
|
|
|
|
else { $a = ""; }
|
|
|
|
|
|
|
|
|
|
$mp = wfMsg( "mainpage" );
|
|
|
|
|
$s = "<a href=\"" . wfLocalUrlE( $mp ) . "\"><img{$a} border=0 src=\""
|
|
|
|
|
. $this->getLogo() . "\" alt=\"" . "[{$mp}]\"></a>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function quickBar()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $wgUser, $action, $wgLang;
|
|
|
|
|
global $wpPreview;
|
|
|
|
|
wfProfileIn( "Skin::quickBar" );
|
|
|
|
|
|
|
|
|
|
$s = "\n<div id='quickbar'>";
|
|
|
|
|
$s .= "\n" . $this->logoText() . "\n<hr>";
|
|
|
|
|
|
|
|
|
|
$sep = "\n<br>";
|
|
|
|
|
$s .= $this->mainPageLink()
|
|
|
|
|
. $sep . $this->specialLink( "recentchanges" )
|
|
|
|
|
. $sep . $this->specialLink( "randompage" );
|
|
|
|
|
if ($wgUser->getID()) {
|
|
|
|
|
$s.= $sep . $this->specialLink( "watchlist" ) ;
|
|
|
|
|
$s .= $sep .$this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
wfMsg( "mycontris" ), "target=" . wfUrlencode($wgUser->getName() ) );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// only show watchlist link if logged in
|
|
|
|
|
if ( wfMsg ( "currentevents" ) != "-" ) $s .= $sep . $this->makeKnownLink( wfMsg( "currentevents" ), "" ) ;
|
|
|
|
|
$s .= "\n<hr>";
|
|
|
|
|
$articleExists = $wgTitle->getArticleId();
|
|
|
|
|
if ( $wgOut->isArticle() || $action =="edit" || $action =="history" || $wpPreview) {
|
|
|
|
|
|
|
|
|
|
if($wgOut->isArticle()) {
|
|
|
|
|
$s .= "<strong>" . $this->editThisPage() . "</strong>";
|
|
|
|
|
} else { # backlink to the article in edit or history mode
|
|
|
|
|
|
|
|
|
|
if($articleExists){ # no backlink if no article
|
|
|
|
|
$tns=$wgTitle->getNamespace();
|
|
|
|
|
switch($tns) {
|
|
|
|
|
case 0:
|
|
|
|
|
$text = wfMsg("articlepage");
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$text = wfMsg("userpage");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
$text = wfMsg("wikipediapage");
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
$text = wfMsg("imagepage");
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$text= wfMsg("articlepage");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$link = $wgTitle->getText();
|
|
|
|
|
if ($nstext = $wgLang->getNsText($tns) ) { # add namespace if necessary
|
|
|
|
|
$link = $nstext . ":" . $link ;
|
|
|
|
|
}
|
|
|
|
|
$s .= $this->makeLink($link, $text );
|
|
|
|
|
} elseif( $wgTitle->getNamespace() != Namespace::getSpecial() ) {
|
|
|
|
|
# we just throw in a "New page" text to tell the user that he's in edit mode,
|
|
|
|
|
# and to avoid messing with the separator that is prepended to the next item
|
|
|
|
|
$s .= "<strong>" . wfMsg("newpage") . "</strong>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
watching could cause problems in edit mode:
|
|
|
|
|
if user edits article, then loads "watch this article" in background and then saves
|
|
|
|
|
article with "Watch this article" checkbox disabled, the article is transparently
|
|
|
|
|
unwatched. Therefore we do not show the "Watch this page" link in edit mode
|
|
|
|
|
*/
|
|
|
|
|
if ( 0 != $wgUser->getID() && $articleExists) {
|
|
|
|
|
if($action!="edit" && $action!="history" &&
|
|
|
|
|
$action != "submit" )
|
|
|
|
|
{$s .= $sep . $this->watchThisPage(); }
|
|
|
|
|
if ( $wgTitle->userCanEdit() ) $s .= $sep . $this->moveThisPage();
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() and $articleExists ) {
|
|
|
|
|
$s .= $sep . $this->deleteThisPage() .
|
|
|
|
|
$sep . $this->protectThisPage();
|
|
|
|
|
}
|
|
|
|
|
$s .= $sep . $this->talkLink();
|
|
|
|
|
if ($articleExists && $action !="history") { $s .= $sep . $this->historyLink();}
|
|
|
|
|
$s.=$sep . $this->whatLinksHere();
|
|
|
|
|
|
|
|
|
|
if($wgOut->isArticle()) {
|
|
|
|
|
$s .= $sep . $this->watchPageLinksLink();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( Namespace::getUser() == $wgTitle->getNamespace()
|
|
|
|
|
|| $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser())
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
$id=User::idFromName($wgTitle->getText());
|
|
|
|
|
$ip=User::isIP($wgTitle->getText());
|
|
|
|
|
|
|
|
|
|
if($id||$ip) {
|
|
|
|
|
$s .= $sep . $this->userContribsLink();
|
|
|
|
|
}
|
|
|
|
|
if ( 0 != $wgUser->getID() ) {
|
|
|
|
|
if($id) { # can only email real users
|
|
|
|
|
$s .= $sep . $this->emailUserLink();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$s .= "\n<hr>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( 0 != $wgUser->getID() ) {
|
|
|
|
|
$s .= $this->specialLink( "upload" ) . $sep;
|
|
|
|
|
}
|
|
|
|
|
$s .= $this->specialLink( "specialpages" )
|
|
|
|
|
. $sep . $this->bugReportsLink();
|
|
|
|
|
|
|
|
|
|
$s .= "\n</div>\n";
|
|
|
|
|
wfProfileOut();
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function specialPagesList()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgLang, $wgServer, $wgRedirectScript;
|
|
|
|
|
$a = array();
|
|
|
|
|
|
|
|
|
|
$validSP = $wgLang->getValidSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $validSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc;
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() )
|
|
|
|
|
{
|
|
|
|
|
$sysopSP = $wgLang->getSysopSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $sysopSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isDeveloper() )
|
|
|
|
|
{
|
|
|
|
|
$devSP = $wgLang->getDeveloperSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $devSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$go = wfMsg( "go" );
|
|
|
|
|
$sp = wfMsg( "specialpages" );
|
|
|
|
|
$spp = $wgLang->specialPage( "Specialpages" );
|
|
|
|
|
|
|
|
|
|
$s = "<form id=\"specialpages\" method=\"get\" class=\"inline\" " .
|
|
|
|
|
"action=\"{$wgServer}{$wgRedirectScript}\">\n";
|
|
|
|
|
$s .= "<select name=\"wpDropdown\">\n";
|
|
|
|
|
$s .= "<option value=\"{$spp}\">{$sp}</option>\n";
|
|
|
|
|
|
|
|
|
|
foreach ( $a as $name => $desc ) {
|
|
|
|
|
$p = $wgLang->specialPage( $name );
|
|
|
|
|
$s .= "<option value=\"{$p}\">{$desc}</option>\n";
|
|
|
|
|
}
|
|
|
|
|
$s .= "</select>\n";
|
|
|
|
|
$s .= "<input type=submit value=\"{$go}\" name=redirect>\n";
|
|
|
|
|
$s .= "</form>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function mainPageLink()
|
|
|
|
|
{
|
|
|
|
|
$mp = wfMsg( "mainpage" );
|
|
|
|
|
$s = $this->makeKnownLink( $mp, $mp );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function copyrightLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "copyrightpage" ),
|
|
|
|
|
wfMsg( "copyrightpagename" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function aboutLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "aboutpage" ),
|
|
|
|
|
wfMsg( "aboutwikipedia" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function editThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $oldid, $redirect, $diff;
|
|
|
|
|
|
|
|
|
|
if ( ! $wgOut->isArticle() || $diff ) {
|
|
|
|
|
$s = wfMsg( "protectedpage" );
|
|
|
|
|
} else if ( $wgTitle->userCanEdit() ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
$t = wfMsg( "editthispage" );
|
|
|
|
|
$oid = $red = "";
|
|
|
|
|
|
|
|
|
|
if ( $redirect ) { $red = "&redirect={$redirect}"; }
|
|
|
|
|
if ( $oldid && ! isset( $diff ) ) {
|
|
|
|
|
$oid = "&oldid={$oldid}";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, "action=edit{$oid}{$red}" );
|
|
|
|
|
} else {
|
|
|
|
|
$s = wfMsg( "protectedpage" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function deleteThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
$t = wfMsg( "deletethispage" );
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, "action=delete" );
|
|
|
|
|
} else {
|
|
|
|
|
$s = wfMsg( "error" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function protectThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->isProtected() ) {
|
|
|
|
|
$t = wfMsg( "unprotectthispage" );
|
|
|
|
|
$q = "action=unprotect";
|
|
|
|
|
} else {
|
|
|
|
|
$t = wfMsg( "protectthispage" );
|
|
|
|
|
$q = "action=protect";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, $q );
|
|
|
|
|
} else {
|
|
|
|
|
$s = wfMsg( "error" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function watchThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isArticle() && ( ! $diff ) ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->userIsWatching() ) {
|
|
|
|
|
$t = wfMsg( "unwatchthispage" );
|
|
|
|
|
$q = "action=unwatch";
|
|
|
|
|
} else {
|
|
|
|
|
$t = wfMsg( "watchthispage" );
|
|
|
|
|
$q = "action=watch";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, $q );
|
|
|
|
|
} else {
|
|
|
|
|
$s = wfMsg( "notanarticle" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function moveThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->userCanEdit() ) {
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Movepage" ),
|
|
|
|
|
wfMsg( "movethispage" ), "target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
} // no message if page is protected - would be redundant
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function historyLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "history" ), "action=history" );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function whatLinksHere()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Whatlinkshere" ),
|
|
|
|
|
wfMsg( "whatlinkshere" ), "target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function userContribsLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
wfMsg( "contributions" ), "target=" . $wgTitle->getURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function emailUserLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Emailuser" ),
|
|
|
|
|
wfMsg( "emailuser" ), "target=" . $wgTitle->getURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function watchPageLinksLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
if ( ! $wgOut->isArticle() ) {
|
|
|
|
|
$s = "(" . wfMsg( "notanarticle" ) . ")";
|
|
|
|
|
} else {
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Recentchangeslinked" ), wfMsg( "recentchangeslinked" ),
|
|
|
|
|
"target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function otherLanguages()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgLang, $wgTitle , $wgUseNewInterlanguage ;
|
|
|
|
|
|
|
|
|
|
$a = $wgOut->getLanguageLinks();
|
|
|
|
|
if ( 0 == count( $a ) ) {
|
|
|
|
|
if ( !$wgUseNewInterlanguage ) return "";
|
|
|
|
|
$ns = $wgLang->getNsIndex ( $wgTitle->getNamespace () ) ;
|
|
|
|
|
if ( $ns != 0 AND $ns != 1 ) return "" ;
|
|
|
|
|
$pn = "Intl" ;
|
|
|
|
|
$x = "mode=addlink&xt=".$wgTitle->getDBkey() ;
|
|
|
|
|
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
|
|
|
|
|
wfMsg( "intl" ) , $x );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( !$wgUseNewInterlanguage ) {
|
|
|
|
|
$s = wfMsg( "otherlanguages" ) . ": ";
|
|
|
|
|
} else {
|
|
|
|
|
global $wgLanguageCode ;
|
|
|
|
|
$x = "mode=zoom&xt=".$wgTitle->getDBkey() ;
|
|
|
|
|
$x .= "&xl=".$wgLanguageCode ;
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Intl" ),
|
|
|
|
|
wfMsg( "otherlanguages" ) , $x ) . ": " ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$first = true;
|
|
|
|
|
foreach( $a as $l ) {
|
|
|
|
|
if ( ! $first ) { $s .= " | "; }
|
|
|
|
|
$first = false;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $l );
|
|
|
|
|
$url = $nt->getFullURL();
|
|
|
|
|
$text = $wgLang->getLanguageName( $nt->getInterwiki() );
|
|
|
|
|
|
|
|
|
|
if ( "" == $text ) { $text = $l; }
|
|
|
|
|
$style = $this->getExternalLinkAttributes( $l, $text );
|
|
|
|
|
$s .= "<a href=\"{$url}\"{$style}>{$text}</a>";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function bugReportsLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "bugreportspage" ),
|
|
|
|
|
wfMsg( "bugreports" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function dateLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgLinkCache;
|
|
|
|
|
$t1 = Title::newFromText( date( "F j" ) );
|
|
|
|
|
$t2 = Title::newFromText( date( "Y" ) );
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$id = $t1->getArticleID();
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
if ( 0 == $id ) {
|
|
|
|
|
$s = $this->makeBrokenLink( $t1->getText() );
|
|
|
|
|
} else {
|
|
|
|
|
$s = $this->makeKnownLink( $t1->getText() );
|
|
|
|
|
}
|
|
|
|
|
$s .= ", ";
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$id = $t2->getArticleID();
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
if ( 0 == $id ) {
|
|
|
|
|
$s .= $this->makeBrokenLink( $t2->getText() );
|
|
|
|
|
} else {
|
|
|
|
|
$s .= $this->makeKnownLink( $t2->getText() );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function talkLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgLang, $wgTitle, $wgLinkCache;
|
|
|
|
|
|
|
|
|
|
$tns = $wgTitle->getNamespace();
|
|
|
|
|
if ( -1 == $tns ) { return ""; }
|
|
|
|
|
|
|
|
|
|
$pn = $wgTitle->getText();
|
|
|
|
|
$tp = wfMsg( "talkpage" );
|
|
|
|
|
if ( Namespace::isTalk( $tns ) ) {
|
|
|
|
|
$lns = Namespace::getSubject( $tns );
|
|
|
|
|
switch($tns) {
|
|
|
|
|
case 1:
|
|
|
|
|
$text = wfMsg("articlepage");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$text = wfMsg("userpage");
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
$text = wfMsg("wikipediapage");
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
$text = wfMsg("imagepage");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$text= wfMsg("articlepage");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$lns = Namespace::getTalk( $tns );
|
|
|
|
|
$text=$tp;
|
|
|
|
|
}
|
|
|
|
|
$n = $wgLang->getNsText( $lns );
|
|
|
|
|
if ( "" == $n ) { $link = $pn; }
|
|
|
|
|
else { $link = "{$n}:{$pn}"; }
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$s = $this->makeLink( $link, $text );
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# After all the page content is transformed into HTML, it makes
|
|
|
|
|
# a final pass through here for things like table backgrounds.
|
|
|
|
|
#
|
|
|
|
|
function transformContent( $text )
|
|
|
|
|
{
|
|
|
|
|
return $text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Note: This function MUST call getArticleID() on the link,
|
|
|
|
|
# otherwise the cache won't get updated properly. See LINKCACHE.DOC.
|
|
|
|
|
#
|
|
|
|
|
function makeLink( $title, $text= "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
|
|
|
|
|
if ( $nt->isExternal() ) {
|
|
|
|
|
$u = $nt->getFullURL();
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getExternalLinkAttributes( $link, $text );
|
|
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( "/^([a-z]+)(.*)$$/sD", $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
|
|
|
|
}
|
|
|
|
|
if ( 0 == $nt->getNamespace() && "" == $nt->getText() ) {
|
|
|
|
|
return $this->makeKnownLink( $title, $text, $query, $trail );
|
|
|
|
|
}
|
|
|
|
|
if ( ( -1 == $nt->getNamespace() ) ||
|
|
|
|
|
( Namespace::getImage() == $nt->getNamespace() ) ) {
|
|
|
|
|
return $this->makeKnownLink( $title, $text, $query, $trail );
|
|
|
|
|
}
|
|
|
|
|
$aid = $nt->getArticleID() ;
|
|
|
|
|
if ( 0 == $aid ) {
|
|
|
|
|
return $this->makeBrokenLink( $title, $text, $query, $trail );
|
|
|
|
|
} else {
|
|
|
|
|
$threshold = $wgUser->getOption("stubthreshold") ;
|
|
|
|
|
if ( $threshold > 0 ) {
|
|
|
|
|
$res = wfQuery ( "SELECT HIGH_PRIORITY length(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'" ) ;
|
|
|
|
|
|
|
|
|
|
if ( wfNumRows( $res ) > 0 ) {
|
|
|
|
|
$s = wfFetchObject( $res );
|
|
|
|
|
$size = $s->x;
|
|
|
|
|
if ( $s->cur_is_redirect OR $s->cur_namespace != 0 )
|
|
|
|
|
$size = $threshold*2 ; # Really big
|
|
|
|
|
wfFreeResult( $res );
|
|
|
|
|
} else $size = $threshold*2 ; # Really big
|
|
|
|
|
} else $size = 1 ;
|
|
|
|
|
|
|
|
|
|
if ( $size < $threshold )
|
|
|
|
|
return $this->makeStubLink( $title, $text, $query, $trail );
|
|
|
|
|
return $this->makeKnownLink( $title, $text, $query, $trail );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeKnownLink( $title, $text = "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
|
|
|
|
|
if ( "" == $link ) {
|
|
|
|
|
$u = "";
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getFragment(); }
|
|
|
|
|
} else {
|
|
|
|
|
$u = wfLocalUrlE( $link, $query );
|
|
|
|
|
}
|
|
|
|
|
if ( "" != $nt->getFragment() ) {
|
|
|
|
|
$u .= "#" . wfEscapeHTML( $nt->getFragment() );
|
|
|
|
|
}
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $text );
|
|
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$r = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeBrokenLink( $title, $text = "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
|
|
|
|
|
if ( "" == $query ) { $q = "action=edit"; }
|
|
|
|
|
else { $q = "action=edit&{$query}"; }
|
|
|
|
|
$u = wfLocalUrlE( $link, $q );
|
|
|
|
|
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $text, "yes" );
|
|
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgOut->isPrintable() ||
|
|
|
|
|
( 1 == $wgUser->getOption( "highlightbroken" ) ) ) {
|
|
|
|
|
$s = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
|
|
|
|
} else {
|
|
|
|
|
$s = "{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeStubLink( $title, $text = "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
|
|
|
|
|
$u = wfLocalUrlE( $link, $query );
|
|
|
|
|
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $text, "stub" );
|
|
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgOut->isPrintable() ||
|
|
|
|
|
( 1 == $wgUser->getOption( "highlightbroken" ) ) ) {
|
|
|
|
|
$s = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
|
|
|
|
} else {
|
|
|
|
|
$s = "{$text}{$inside}<a href=\"{$u}\"{$style}>!</a>{$trail}";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function fnamePart( $url )
|
|
|
|
|
{
|
|
|
|
|
$basename = strrchr( $url, "/" );
|
|
|
|
|
if ( false === $basename ) { $basename = $url; }
|
|
|
|
|
else { $basename = substr( $basename, 1 ); }
|
|
|
|
|
return wfEscapeHTML( $basename );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeImage( $url, $alt = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut;
|
|
|
|
|
|
|
|
|
|
if ( "" == $alt ) { $alt = $this->fnamePart( $url ); }
|
|
|
|
|
$s = "<img src=\"{$url}\" alt=\"{$alt}\">";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeImageLink( $name, $url, $alt = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $wgLang->getNsText(
|
|
|
|
|
Namespace::getImage() ) . ":{$name}" );
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
if ( "" == $alt ) { $alt = $name; }
|
|
|
|
|
|
|
|
|
|
$u = wfLocalUrlE( $link );
|
|
|
|
|
$s = "<a href=\"{$u}\" class='image' title=\"{$alt}\">" .
|
|
|
|
|
"<img border=0 src=\"{$url}\" alt=\"{$alt}\"></a>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeMediaLink( $name, $url, $alt = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle;
|
|
|
|
|
|
|
|
|
|
if ( "" == $alt ) { $alt = $name; }
|
|
|
|
|
$u = wfEscapeHTML( $url );
|
|
|
|
|
$s = "<a href=\"{$u}\" class='media' title=\"{$alt}\">{$alt}</a>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function specialLink( $name, $key = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgLang;
|
|
|
|
|
|
|
|
|
|
if ( "" == $key ) { $key = strtolower( $name ); }
|
|
|
|
|
$pn = $wgLang->ucfirst( $name );
|
|
|
|
|
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
|
|
|
|
|
wfMsg( $key ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Called by history lists and recent changes
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
function beginRecentChangesList()
|
|
|
|
|
{
|
|
|
|
|
$rc_cache = array() ;
|
|
|
|
|
$rccc = 0 ;
|
|
|
|
|
$this->lastdate = "";
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function beginHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$this->lastdate = $this->lastline = "";
|
|
|
|
|
$s = "\n<p>" . wfMsg( "histlegend" ) . "\n<ul>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function beginImageHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$s = "\n<h2>" . wfMsg( "imghistory" ) . "</h2>\n" .
|
|
|
|
|
"<p>" . wfMsg( "imghistlegend" ) . "\n<ul>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function endRecentChangesList()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->recentChangesBlock() ;
|
|
|
|
|
$s .= "</ul>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function endHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$last = wfMsg( "last" );
|
|
|
|
|
|
|
|
|
|
$s = preg_replace( "/!OLDID![0-9]+!/", $last, $this->lastline );
|
|
|
|
|
$s .= "</ul>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function endImageHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$s = "</ul>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function historyLine( $ts, $u, $ut, $ns, $ttl, $oid, $c, $isminor )
|
|
|
|
|
{
|
|
|
|
|
global $wgLang;
|
|
|
|
|
|
|
|
|
|
$artname = Title::makeName( $ns, $ttl );
|
|
|
|
|
$last = wfMsg( "last" );
|
|
|
|
|
$cur = wfMsg( "cur" );
|
|
|
|
|
$cr = wfMsg( "currentrev" );
|
|
|
|
|
|
|
|
|
|
if ( $oid && $this->lastline ) {
|
|
|
|
|
$ret = preg_replace( "/!OLDID!([0-9]+)!/", $this->makeKnownLink(
|
|
|
|
|
$artname, $last, "diff=\\1&oldid={$oid}" ), $this->lastline );
|
|
|
|
|
} else {
|
|
|
|
|
$ret = "";
|
|
|
|
|
}
|
|
|
|
|
$dt = $wgLang->timeanddate( $ts, true );
|
|
|
|
|
|
|
|
|
|
if ( $oid ) { $q = "oldid={$oid}"; }
|
|
|
|
|
else { $q = ""; }
|
|
|
|
|
$link = $this->makeKnownLink( $artname, $dt, $q );
|
|
|
|
|
|
|
|
|
|
if ( 0 == $u ) {
|
|
|
|
|
$ul = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
$ut, "target=" . $ut );
|
|
|
|
|
} else { $ul = $this->makeLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$ut}", $ut ); }
|
|
|
|
|
|
|
|
|
|
$s = "<li>";
|
|
|
|
|
if ( $oid ) {
|
|
|
|
|
$curlink = $this->makeKnownLink( $artname, $cur,
|
|
|
|
|
"diff=0&oldid={$oid}" );
|
|
|
|
|
} else {
|
|
|
|
|
$curlink = $cur;
|
|
|
|
|
}
|
|
|
|
|
$s .= "({$curlink}) (!OLDID!{$oid}!) . .";
|
|
|
|
|
|
|
|
|
|
$M = wfMsg( "minoreditletter" );
|
|
|
|
|
if ( $isminor ) { $s .= " <strong>{$M}</strong>"; }
|
|
|
|
|
$s .= " {$link} . . {$ul}";
|
|
|
|
|
|
|
|
|
|
if ( "" != $c && "*" != $c ) { $s .= " <em>(" . wfEscapeHTML($c) . ")</em>"; }
|
|
|
|
|
$s .= "</li>\n";
|
|
|
|
|
|
|
|
|
|
$this->lastline = $s;
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesBlockLine ( $y ) {
|
|
|
|
|
global $wgUploadPath ;
|
|
|
|
|
|
|
|
|
|
$M = wfMsg( "minoreditletter" );
|
|
|
|
|
$N = wfMsg( "newpageletter" );
|
|
|
|
|
$r = "" ;
|
|
|
|
|
$r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 border=0>" ;
|
|
|
|
|
$r .= "<tt>" ;
|
|
|
|
|
if ( $y->isnew ) $r .= $N ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
if ( $y->isminor ) $r .= $M ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
$r .= " ".$y->timestamp." " ;
|
|
|
|
|
$r .= "</tt>" ;
|
|
|
|
|
$link = $y->link ;
|
|
|
|
|
if ( $y->watched ) $link = "<strong>{$link}</strong>" ;
|
|
|
|
|
$r .= $link ;
|
|
|
|
|
|
|
|
|
|
$r .= " (" ;
|
|
|
|
|
$r .= $y->curlink ;
|
|
|
|
|
$r .= "; " ;
|
|
|
|
|
$r .= $this->makeKnownLink( $y->secureName, wfMsg( "hist" ), "action=history" );
|
|
|
|
|
|
|
|
|
|
$r .= ") . . ".$y->userlink ;
|
|
|
|
|
$r .= $y->usertalklink ;
|
|
|
|
|
if ( $y->usercomment != "" )
|
|
|
|
|
$r .= " <em>(".wfEscapeHTML($y->usercomment).")</em>" ;
|
|
|
|
|
$r .= "<br>\n" ;
|
|
|
|
|
return $r ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesBlockGroup ( $y ) {
|
|
|
|
|
global $wgUploadPath ;
|
|
|
|
|
|
|
|
|
|
$r = "" ;
|
|
|
|
|
$M = wfMsg( "minoreditletter" );
|
|
|
|
|
$N = wfMsg( "newpageletter" );
|
|
|
|
|
$isnew = false ;
|
|
|
|
|
$userlinks = array () ;
|
|
|
|
|
foreach ( $y AS $x ) {
|
|
|
|
|
$oldid = $x->diffid ;
|
|
|
|
|
if ( $x->isnew ) $isnew = true ;
|
|
|
|
|
$u = $x->userlink ;
|
|
|
|
|
if ( !isset ( $userlinks[$u] ) ) $userlinks[$u] = 0 ;
|
|
|
|
|
$userlinks[$u]++ ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
krsort ( $userlinks ) ;
|
|
|
|
|
asort ( $userlinks ) ;
|
|
|
|
|
$users = array () ;
|
|
|
|
|
$u = array_keys ( $userlinks ) ;
|
|
|
|
|
foreach ( $u as $x ) {
|
|
|
|
|
$z = $x ;
|
|
|
|
|
if ( $userlinks[$x] > 1 ) $z .= " ({$userlinks[$x]}×)" ;
|
|
|
|
|
array_push ( $users , $z ) ;
|
|
|
|
|
}
|
|
|
|
|
$users = " <font size='-1'>[".implode("; ",$users)."]</font>" ;
|
|
|
|
|
|
|
|
|
|
$e = $y ;
|
|
|
|
|
$e = array_shift ( $e ) ;
|
|
|
|
|
|
|
|
|
|
# Arrow
|
|
|
|
|
$rci = "RCI{$this->rccc}" ;
|
|
|
|
|
$rcl = "RCL{$this->rccc}" ;
|
|
|
|
|
$rcm = "RCM{$this->rccc}" ;
|
|
|
|
|
$tl = "<a href='javascript:toggleVisibility(\"{$rci}\",\"{$rcm}\",\"{$rcl}\")'>" ;
|
|
|
|
|
$tl .= "<span id='{$rcm}'><img src='{$wgUploadPath}/Arr_r.png' width=12 height=12 border=0></span>" ;
|
|
|
|
|
$tl .= "<span id='{$rcl}' style='display:none'><img src='{$wgUploadPath}/Arr_d.png' width=12 height=12 border=0></span>" ;
|
|
|
|
|
$tl .= "</a>" ;
|
|
|
|
|
$r .= $tl ;
|
|
|
|
|
|
|
|
|
|
# Main line
|
|
|
|
|
$r .= "<tt>" ;
|
|
|
|
|
if ( $isnew ) $r .= $N ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
$r .= " " ; # Minor
|
|
|
|
|
$r .= " ".$e->timestamp." " ;
|
|
|
|
|
$r .= "</tt>" ;
|
|
|
|
|
|
|
|
|
|
$link = $e->link ;
|
|
|
|
|
if ( $e->watched ) $link = "<strong>{$link}</strong>" ;
|
|
|
|
|
$r .= $link ;
|
|
|
|
|
|
|
|
|
|
if ( !$e->islog ) {
|
|
|
|
|
$r .= " (".count($y)." " ;
|
|
|
|
|
if ( $isnew ) $r .= wfMsg("changes");
|
|
|
|
|
else $r .= $this->makeKnownLink( $e->secureName , wfMsg("changes") , "diff=0&oldid=".$oldid ) ;
|
|
|
|
|
$r .= "; " ;
|
|
|
|
|
$r .= $this->makeKnownLink( $e->secureName, wfMsg( "history" ), "action=history" );
|
|
|
|
|
$r .= ")" ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$r .= $users ;
|
|
|
|
|
$r .= "<br>\n" ;
|
|
|
|
|
|
|
|
|
|
# Sub-entries
|
|
|
|
|
$r .= "<div id='{$rci}' style='display:none'>" ;
|
|
|
|
|
foreach ( $y AS $x )
|
|
|
|
|
{
|
|
|
|
|
$r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 border=0>";
|
|
|
|
|
$r .= "<tt> " ;
|
|
|
|
|
if ( $x->isnew ) $r .= $N ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
if ( $x->isminor ) $r .= $M ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
$r .= "</tt>" ;
|
|
|
|
|
|
|
|
|
|
$o = "" ;
|
|
|
|
|
if ( $x->oldid != 0 ) $o = "oldid=".$x->oldid ;
|
|
|
|
|
if ( $x->islog ) $link = $x->timestamp ;
|
|
|
|
|
else $link = $this->makeKnownLink( $x->secureName, $x->timestamp , $o ) ;
|
|
|
|
|
$link = "<tt>{$link}</tt>" ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$r .= $link ;
|
|
|
|
|
$r .= " (" ;
|
|
|
|
|
$r .= $x->curlink ;
|
|
|
|
|
$r .= "; " ;
|
|
|
|
|
$r .= $x->lastlink ;
|
|
|
|
|
$r .= ") . . ".$x->userlink ;
|
|
|
|
|
$r .= $x->usertalklink ;
|
|
|
|
|
if ( $x->usercomment != "" )
|
|
|
|
|
$r .= " <em>(".wfEscapeHTML($x->usercomment).")</em>" ;
|
|
|
|
|
$r .= "<br>\n" ;
|
|
|
|
|
}
|
|
|
|
|
$r .= "</div>\n" ;
|
|
|
|
|
|
|
|
|
|
$this->rccc++ ;
|
|
|
|
|
return $r ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesBlock ()
|
|
|
|
|
{
|
|
|
|
|
global $wgUploadPath ;
|
|
|
|
|
if ( count ( $this->rc_cache ) == 0 ) return "" ;
|
|
|
|
|
$k = array_keys ( $this->rc_cache ) ;
|
|
|
|
|
foreach ( $k AS $x )
|
|
|
|
|
{
|
|
|
|
|
$y = $this->rc_cache[$x] ;
|
|
|
|
|
if ( count ( $y ) < 2 ) {
|
|
|
|
|
$r .= $this->recentChangesBlockLine ( array_shift ( $y ) ) ;
|
|
|
|
|
} else {
|
|
|
|
|
$r .= $this->recentChangesBlockGroup ( $y ) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "<div align=left>{$r}</div>" ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesLine( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser ;
|
|
|
|
|
$usenew = $wgUser->getOption( "usenewrc" );
|
|
|
|
|
if ( $usenew )
|
|
|
|
|
$r = $this->recentChangesLineNew ( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched , $oldid , $diffid ) ;
|
|
|
|
|
else
|
|
|
|
|
$r = $this->recentChangesLineOld ( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched , $oldid , $diffid ) ;
|
|
|
|
|
return $r ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesLineOld( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0, $diffid = 0 )
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang, $wgUser;
|
|
|
|
|
|
|
|
|
|
$d = $wgLang->date( $ts, true);
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( $d != $this->lastdate ) {
|
|
|
|
|
if ( "" != $this->lastdate ) { $s .= "</ul>\n"; }
|
|
|
|
|
$s .= "<h4>{$d}</h4>\n<ul>";
|
|
|
|
|
$this->lastdate = $d;
|
|
|
|
|
}
|
|
|
|
|
$h = $wgLang->time( $ts, true );
|
|
|
|
|
$t = Title::makeName( $ns, $ttl );
|
|
|
|
|
$clink = $this->makeKnownLink( $t , "" );
|
|
|
|
|
$nt = Title::newFromText( $t );
|
|
|
|
|
|
|
|
|
|
if ( $watched ) {
|
|
|
|
|
$clink = "<strong>{$clink}</strong>";
|
|
|
|
|
}
|
|
|
|
|
$hlink = $this->makeKnownLink( $t, wfMsg( "hist" ), "action=history" );
|
|
|
|
|
if ( $isnew || $nt->isLog() ) {
|
|
|
|
|
$dlink = wfMsg( "diff" );
|
|
|
|
|
} else {
|
|
|
|
|
$dlink = $this->makeKnownLink( $t, wfMsg( "diff" ),
|
|
|
|
|
"diff={$oldid}&oldid={$diffid}" ); # Finagle's law
|
|
|
|
|
}
|
|
|
|
|
if ( 0 == $u ) {
|
|
|
|
|
$ul = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
$ut, "target=" . $ut );
|
|
|
|
|
} else { $ul = $this->makeLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$ut}", $ut ); }
|
|
|
|
|
|
|
|
|
|
$utns=$wgLang->getNsText(Namespace::getTalk(Namespace::getUser()));
|
|
|
|
|
$talkname=$wgLang->getNsText(Namespace::getTalk(0)); # use the shorter name
|
|
|
|
|
$utl= $this->makeLink($utns . ":{$ut}", $talkname );
|
|
|
|
|
$cr = wfMsg( "currentrev" );
|
|
|
|
|
|
|
|
|
|
$s .= "<li> ({$dlink}) ({$hlink}) . .";
|
|
|
|
|
$M = wfMsg( "minoreditletter" );
|
|
|
|
|
$N = wfMsg( "newpageletter" );
|
|
|
|
|
if ( $isminor ) { $s .= " <strong>{$M}</strong>"; }
|
|
|
|
|
if ( $isnew ) { $s .= "<strong>{$N}</strong>"; }
|
|
|
|
|
$s .= " {$clink}; {$h} . . {$ul}";
|
|
|
|
|
|
|
|
|
|
$blink="";
|
|
|
|
|
if ( ( 0 == $u ) && $wgUser->isSysop() ) {
|
|
|
|
|
$blink = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Blockip" ), wfMsg( "blocklink" ), "ip={$ut}" );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if(!$blink) {
|
|
|
|
|
$utl = "({$utl})";
|
|
|
|
|
} else {
|
|
|
|
|
$utl = "({$utl} | {$blink})";
|
|
|
|
|
}
|
|
|
|
|
$s.=" {$utl}";
|
|
|
|
|
|
|
|
|
|
if ( "" != $c && "*" != $c ) {
|
|
|
|
|
$s .= " <em>(" . wfEscapeHTML( $c ) . ")</em>";
|
|
|
|
|
}
|
|
|
|
|
$s .= "</li>\n";
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function recentChangesLineNew( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang, $wgUser;
|
|
|
|
|
|
|
|
|
|
$rc = new RecentChangesClass ;
|
|
|
|
|
|
|
|
|
|
$d = $wgLang->date( $ts, true);
|
|
|
|
|
$s = "";
|
|
|
|
|
$ret = "" ;
|
|
|
|
|
if ( $d != $this->lastdate ) {
|
|
|
|
|
$ret = $this->recentChangesBlock () ;
|
|
|
|
|
$this->rc_cache = array() ;
|
|
|
|
|
$ret .= "<h4>{$d}</h4>\n";
|
|
|
|
|
$this->lastdate = $d;
|
|
|
|
|
}
|
|
|
|
|
$h = $wgLang->time( $ts, true );
|
|
|
|
|
$t = Title::makeName( $ns, $ttl );
|
|
|
|
|
$clink = $this->makeKnownLink( $t, "" ) ;
|
|
|
|
|
if ( $oldid == 0 ) $c2link = $clink ;
|
|
|
|
|
else $c2link = $this->makeKnownLink( $t, "" , "oldid={$oldid}" );
|
|
|
|
|
$nt = Title::newFromText( $t );
|
|
|
|
|
|
|
|
|
|
$rc->timestamp = $h ;
|
|
|
|
|
$rc->oldid = $oldid ;
|
|
|
|
|
$rc->diffid = $diffid ;
|
|
|
|
|
$rc->watched = $watched ;
|
|
|
|
|
$rc->isnew = $isnew ;
|
|
|
|
|
$rc->isminor = $isminor ;
|
|
|
|
|
$rc->secureName = $t ;
|
|
|
|
|
$rc->displayName = $nt ;
|
|
|
|
|
$rc->link = $clink ;
|
|
|
|
|
$rc->usercomment = $c ;
|
|
|
|
|
$rc->islog = $nt->isLog() ;
|
|
|
|
|
|
|
|
|
|
if ( ( $isnew && $oldid == 0 ) || $nt->isLog() ) {
|
|
|
|
|
$dlink = wfMsg( "cur" );
|
|
|
|
|
} else {
|
|
|
|
|
$dlink = $this->makeKnownLink( $t, wfMsg( "cur" ),
|
|
|
|
|
"diff=0&oldid={$oldid}" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $diffid == 0 || $nt->isLog() ) {
|
|
|
|
|
$plink = wfMsg( "last" );
|
|
|
|
|
} else {
|
|
|
|
|
$plink = $this->makeKnownLink( $t, wfMsg( "last" ),
|
|
|
|
|
"diff={$oldid}&oldid={$diffid}" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( 0 == $u ) {
|
|
|
|
|
$ul = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
$ut, "target=" . $ut );
|
|
|
|
|
} else { $ul = $this->makeLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$ut}", $ut ); }
|
|
|
|
|
|
|
|
|
|
$rc->userlink = $ul ;
|
|
|
|
|
$rc->lastlink = $plink ;
|
|
|
|
|
$rc->curlink = $dlink ;
|
|
|
|
|
|
|
|
|
|
$utns=$wgLang->getNsText(Namespace::getTalk(Namespace::getUser()));
|
|
|
|
|
$talkname=$wgLang->getNsText(Namespace::getTalk(0)); # use the shorter name
|
|
|
|
|
$utl= $this->makeLink($utns . ":{$ut}", $talkname );
|
|
|
|
|
|
|
|
|
|
if ( ( 0 == $u ) && $wgUser->isSysop() ) {
|
|
|
|
|
$blink = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Blockip" ), wfMsg( "blocklink" ), "ip={$ut}" );
|
|
|
|
|
$rc->usertalklink= " ({$utl} | {$blink})";
|
|
|
|
|
} else {
|
|
|
|
|
$rc->usertalklink=" ({$utl})";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( !isset ( $this->rc_cache[$t] ) ) $this->rc_cache[$t] = array() ;
|
|
|
|
|
array_push ( $this->rc_cache[$t] , $rc ) ;
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function imageHistoryLine( $iscur, $ts, $img, $u, $ut, $size, $c )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgLang, $wgTitle;
|
|
|
|
|
|
|
|
|
|
$dt = $wgLang->timeanddate( $ts, true );
|
|
|
|
|
$del = wfMsg( "deleteimg" );
|
|
|
|
|
$cur = wfMsg( "cur" );
|
|
|
|
|
|
|
|
|
|
if ( $iscur ) {
|
|
|
|
|
$url = wfImageUrl( $img );
|
|
|
|
|
$rlink = $cur;
|
|
|
|
|
if ( $wgUser->isSysop() ) {
|
|
|
|
|
$link = wfLocalUrlE( "", "image=" . $wgTitle->getURL() .
|
|
|
|
|
"&action=delete" );
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $del );
|
|
|
|
|
|
|
|
|
|
$dlink = "<a href=\"{$link}\"{$style}>{$del}</a>";
|
|
|
|
|
} else {
|
|
|
|
|
$dlink = $del;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$url = wfEscapeHTML( wfImageArchiveUrl( $img ) );
|
|
|
|
|
if( $wgUser->getID() != 0 ) {
|
|
|
|
|
$rlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "revertimg" ), "action=revert&oldimage=" .
|
|
|
|
|
urlencode( $img ) );
|
|
|
|
|
$dlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
$del, "action=delete&oldimage=" . urlencode( $img ) );
|
|
|
|
|
} else {
|
|
|
|
|
# Having live active links for non-logged in users
|
|
|
|
|
# means that bots and spiders crawling our site can
|
|
|
|
|
# inadvertently change content. Baaaad idea.
|
|
|
|
|
$rlink = wfMsg( "revertimg" );
|
|
|
|
|
$dlink = $del;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( 0 == $u ) { $ul = $ut; }
|
|
|
|
|
else { $ul = $this->makeLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$ut}", $ut ); }
|
|
|
|
|
|
|
|
|
|
$nb = str_replace( "$1", $size, wfMsg( "nbytes" ) );
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $url, $dt );
|
|
|
|
|
|
|
|
|
|
$s = "<li> ({$dlink}) ({$rlink}) <a href=\"{$url}\"{$style}>{$dt}</a>"
|
|
|
|
|
. " . . {$ul} ({$nb})";
|
|
|
|
|
|
|
|
|
|
if ( "" != $c && "*" != $c ) {
|
|
|
|
|
$s .= " <em>(" . wfEscapeHTML( $c ) . ")</em>";
|
|
|
|
|
}
|
|
|
|
|
$s .= "</li>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
include_once( "SkinStandard.php" );
|
|
|
|
|
include_once( "SkinNostalgia.php" );
|
|
|
|
|
include_once( "SkinCologneBlue.php" );
|
|
|
|
|
|
|
|
|
|
?>
|