X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FNamespace.php;h=f0992a72d24c613d62004d1bc6ff7693c3abeef0;hb=66de4821dd4923fd6f597468cb327479956d75d4;hp=3831ca08329fc56e015fe686a561ef3044efa8ca;hpb=d9c99a1140cf7dbbb91173c55289b89beee5303e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Namespace.php b/includes/Namespace.php index 3831ca0832..f0992a72d2 100644 --- a/includes/Namespace.php +++ b/includes/Namespace.php @@ -1,52 +1,86 @@ - 'Media', + NS_SPECIAL => 'Special', + NS_TALK => 'Talk', + NS_USER => 'User', + NS_USER_TALK => 'User_talk', + NS_PROJECT => 'Project', + NS_PROJECT_TALK => 'Project_talk', + 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', + NS_HELP_TALK => 'Help_talk', + NS_CATEGORY => 'Category', + NS_CATEGORY_TALK => 'Category_talk', +); -# Real namespaces: -define("NS_MAIN", 0); -define("NS_TALK", 1); -define("NS_USER", 2); -define("NS_USER_TALK", 3); -define("NS_WP", 4); -define("NS_WP_TALK", 5); -define("NS_IMAGE", 6); -define("NS_IMAGE_TALK", 7); -define("NS_MEDIAWIKI", 8); -define("NS_MEDIAWIKI_TALK", 9); +if( defined( 'MEDIAWIKI' ) && is_array( $wgExtraNamespaces ) ) { + $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces; +} +/** + * 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. + * + * These are synonyms for the names given in the language file + * Users and translators should not change them + * + * @package MediaWiki + */ class Namespace { - /* 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; } - - function isMovable( $index ) - { - if ( $index < NS_MAIN || $index > NS_WP_TALK ) { return false; } + /** + * Check if the given namespace might be moved + * @return bool + */ + function isMovable( $index ) { + if ( $index < NS_MAIN || $index == NS_IMAGE || $index == NS_CATEGORY ) { + return false; + } return true; } - function isTalk( $index ) - { - if ( NS_TALK == $index || NS_USER_TALK == $index || NS_WP_TALK == $index || NS_IMAGE_TALK == $index || NS_MEDIAWIKI_TALK == $index ) { - return true; - } - return false; + /** + * Check if the give namespace is a talk page + * @return bool + */ + function isTalk( $index ) { + global $wgExtraNamespaces; + return ( $index == NS_TALK || $index == NS_USER_TALK || + $index == NS_PROJECT_TALK || $index == NS_IMAGE_TALK || + $index == NS_MEDIAWIKI_TALK || $index == NS_TEMPLATE_TALK || + $index == NS_HELP_TALK || $index == NS_CATEGORY_TALK + || ( (isset($wgExtraNamespaces) && $index % 2) ) + ); + } - # Get the talk namespace corresponding to the given index - # - function getTalk( $index ) - { + /** + * Get the talk namespace corresponding to the given index + */ + function getTalk( $index ) { if ( Namespace::isTalk( $index ) ) { return $index; } else { @@ -55,14 +89,42 @@ class Namespace { } } - function getSubject( $index ) - { + function getSubject( $index ) { if ( Namespace::isTalk( $index ) ) { return $index - 1; } else { return $index; } } + + /** + * 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; + } + } } +} ?>