Fix bug 2642 : watchdetails message using HTML instead of wiki syntax. Patch by zigge...
[lhc/web/wiklou.git] / includes / Namespace.php
index a0a9374..a7345eb 100644 (file)
@@ -1,80 +1,86 @@
 <?php
-# 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.
+/**
+ * Provide things related to namespaces
+ * @package MediaWiki
+ */
+/**
+ * This is not a valid entry point, perform no further processing unless MEDIAWIKI is defined
+ */
+if( defined( 'MEDIAWIKI' ) ) {
 
-# 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);
-define("NS_WIKIPEDIA", 4);
-define("NS_WP_TALK", 5);
-define("NS_WIKIPEDIA_TALK", 5);
-define("NS_IMAGE", 6);
-define("NS_IMAGE_TALK", 7);
-define("NS_MEDIAWIKI", 8);
-define("NS_MEDIAWIKI_TALK", 9);
-define("NS_TEMPLATE", 10);
-define("NS_TEMPLATE_TALK", 11);
-define("NS_HELP", 12);
-define("NS_HELP_TALK", 13);
-
-# 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",
-       NS_WIKIPEDIA        => "Project",
-       NS_WIKIPEDIA_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"
+/**
+ * Definitions of the NS_ constants are in Defines.php
+ * @private
+ */
+$wgCanonicalNamespaceNames = array(
+       NS_MEDIA            => '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',
 );
 
-class Namespace {
+if( is_array( $wgExtraNamespaces ) ) {
+       $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces;
+}
 
-       /* 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; }
+/**
+ * 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 {
 
-       function isMovable( $index )
-       {
-               if ( $index < NS_MAIN || $index == NS_IMAGE ) { 
+       /**
+        * 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 || NS_TEMPLATE_TALK == $index || NS_HELP_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 {
@@ -83,8 +89,7 @@ class Namespace {
                }
        }
 
-       function getSubject( $index )
-       {
+       function getSubject( $index ) {
                if ( Namespace::isTalk( $index ) ) {
                        return $index - 1;
                } else {
@@ -92,17 +97,19 @@ class Namespace {
                }
        }
 
-       # Returns the canonical (English Wikipedia) name for a given index
-       function &getCanonicalName( $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 )
-       {
+       /**
+        * 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 ) {
@@ -119,4 +126,5 @@ class Namespace {
        }
 }
 
+}
 ?>