2004-02-18 02:15:00 +00:00
|
|
|
<?php
|
2003-04-14 23:10:40 +00:00
|
|
|
# This is a utility class with only static functions
|
|
|
|
|
# for dealing with namespaces that encodes all the
|
|
|
|
|
# "magic" behaviors of them based on index. The textual
|
|
|
|
|
# names of the namespaces are handled by Language.php.
|
|
|
|
|
|
2003-11-15 12:53:17 +00:00
|
|
|
# Virtual namespaces; these don't appear in the page database:
|
|
|
|
|
define("NS_MEDIA", -2);
|
|
|
|
|
define("NS_SPECIAL", -1);
|
|
|
|
|
|
|
|
|
|
# Real namespaces:
|
|
|
|
|
define("NS_MAIN", 0);
|
|
|
|
|
define("NS_TALK", 1);
|
|
|
|
|
define("NS_USER", 2);
|
|
|
|
|
define("NS_USER_TALK", 3);
|
|
|
|
|
define("NS_WP", 4);
|
2004-03-20 15:03:26 +00:00
|
|
|
define("NS_WIKIPEDIA", 4);
|
2003-11-15 12:53:17 +00:00
|
|
|
define("NS_WP_TALK", 5);
|
2004-03-20 15:03:26 +00:00
|
|
|
define("NS_WIKIPEDIA_TALK", 5);
|
2003-11-15 12:53:17 +00:00
|
|
|
define("NS_IMAGE", 6);
|
|
|
|
|
define("NS_IMAGE_TALK", 7);
|
|
|
|
|
define("NS_MEDIAWIKI", 8);
|
|
|
|
|
define("NS_MEDIAWIKI_TALK", 9);
|
2004-03-06 01:49:16 +00:00
|
|
|
define("NS_TEMPLATE", 10);
|
|
|
|
|
define("NS_TEMPLATE_TALK", 11);
|
2004-03-22 05:34:41 +00:00
|
|
|
define("NS_HELP", 12);
|
|
|
|
|
define("NS_HELP_TALK", 13);
|
2004-04-20 20:42:07 +00:00
|
|
|
define("NS_CATEGORY", 14);
|
|
|
|
|
define("NS_CATEGORY_TALK", 15);
|
2004-03-06 01:49:16 +00:00
|
|
|
|
2004-04-05 10:38:40 +00:00
|
|
|
# These are synonyms for the names given in the language file
|
|
|
|
|
# Users and translators should not change them
|
|
|
|
|
/* private */ $wgCanonicalNamespaceNames = array(
|
|
|
|
|
NS_MEDIA => "Media",
|
|
|
|
|
NS_SPECIAL => "Special",
|
|
|
|
|
NS_TALK => "Talk",
|
|
|
|
|
NS_USER => "User",
|
|
|
|
|
NS_USER_TALK => "User_talk",
|
2004-04-09 15:21:05 +00:00
|
|
|
NS_WIKIPEDIA => "Project",
|
|
|
|
|
NS_WIKIPEDIA_TALK => "Project_talk",
|
2004-04-05 10:38:40 +00:00
|
|
|
NS_IMAGE => "Image",
|
|
|
|
|
NS_IMAGE_TALK => "Image_talk",
|
|
|
|
|
NS_MEDIAWIKI => "MediaWiki",
|
|
|
|
|
NS_MEDIAWIKI_TALK => "MediaWiki_talk",
|
|
|
|
|
NS_TEMPLATE => "Template",
|
|
|
|
|
NS_TEMPLATE_TALK => "Template_talk",
|
|
|
|
|
NS_HELP => "Help",
|
2004-04-20 20:42:07 +00:00
|
|
|
NS_HELP_TALK => "Help_talk",
|
|
|
|
|
NS_CATEGORY => "Category",
|
|
|
|
|
NS_CATEGORY_TALK => "Category_talk"
|
2004-04-05 10:38:40 +00:00
|
|
|
);
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
class Namespace {
|
|
|
|
|
|
2003-11-15 12:53:17 +00:00
|
|
|
/* These functions are deprecated */
|
|
|
|
|
function getSpecial() { return NS_SPECIAL; }
|
|
|
|
|
function getUser() { return NS_USER; }
|
|
|
|
|
function getWikipedia() { return NS_WP; }
|
|
|
|
|
function getImage() { return NS_IMAGE; }
|
|
|
|
|
function getMedia() { return NS_MEDIA; }
|
2004-04-20 21:30:59 +00:00
|
|
|
function getCategory() { return NS_CATEGORY; }
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
function isMovable( $index )
|
|
|
|
|
{
|
2004-04-25 01:01:38 +00:00
|
|
|
if ( $index < NS_MAIN || $index == NS_IMAGE || $index == NS_CATEGORY ) {
|
2003-12-14 14:29:35 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isTalk( $index )
|
|
|
|
|
{
|
2004-04-20 21:30:59 +00:00
|
|
|
if ( NS_TALK == $index || NS_USER_TALK == $index || NS_WP_TALK
|
|
|
|
|
== $index || NS_IMAGE_TALK == $index || NS_MEDIAWIKI_TALK == $index ||
|
|
|
|
|
NS_TEMPLATE_TALK == $index || NS_HELP_TALK == $index ||
|
2004-04-20 21:33:03 +00:00
|
|
|
NS_CATEGORY_TALK == $index ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Get the talk namespace corresponding to the given index
|
|
|
|
|
#
|
|
|
|
|
function getTalk( $index )
|
|
|
|
|
{
|
|
|
|
|
if ( Namespace::isTalk( $index ) ) {
|
|
|
|
|
return $index;
|
|
|
|
|
} else {
|
2003-11-15 12:53:17 +00:00
|
|
|
# FIXME
|
2003-04-14 23:10:40 +00:00
|
|
|
return $index + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSubject( $index )
|
|
|
|
|
{
|
|
|
|
|
if ( Namespace::isTalk( $index ) ) {
|
|
|
|
|
return $index - 1;
|
|
|
|
|
} else {
|
|
|
|
|
return $index;
|
|
|
|
|
}
|
|
|
|
|
}
|
2004-04-05 10:38:40 +00:00
|
|
|
|
|
|
|
|
# Returns the canonical (English Wikipedia) name for a given index
|
|
|
|
|
function &getCanonicalName( $index )
|
|
|
|
|
{
|
|
|
|
|
global $wgCanonicalNamespaceNames;
|
|
|
|
|
return $wgCanonicalNamespaceNames[$index];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Returns the index for a given canonical name, or NULL
|
|
|
|
|
# The input *must* be converted to lower case first
|
|
|
|
|
function &getCanonicalIndex( $name )
|
|
|
|
|
{
|
|
|
|
|
global $wgCanonicalNamespaceNames;
|
|
|
|
|
static $xNamespaces = false;
|
|
|
|
|
if ( $xNamespaces === false ) {
|
|
|
|
|
$xNamespaces = array();
|
|
|
|
|
foreach ( $wgCanonicalNamespaceNames as $i => $text ) {
|
|
|
|
|
$xNamespaces[strtolower($text)] = $i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( array_key_exists( $name, $xNamespaces ) ) {
|
|
|
|
|
return $xNamespaces[$name];
|
|
|
|
|
} else {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|