diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /includes/Namespace.php | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'includes/Namespace.php')
-rw-r--r-- | includes/Namespace.php | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/includes/Namespace.php b/includes/Namespace.php index e8e7523f..47dc3c5f 100644 --- a/includes/Namespace.php +++ b/includes/Namespace.php @@ -28,7 +28,8 @@ $wgCanonicalNamespaceNames = array( NS_CATEGORY_TALK => 'Category_talk', ); -if( isset( $wgExtraNamespaces ) && is_array( $wgExtraNamespaces ) ) { +/// @todo UGLY UGLY +if( is_array( $wgExtraNamespaces ) ) { $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces; } @@ -112,21 +113,40 @@ class MWNamespace { * Returns whether the specified namespace exists */ public static function exists( $index ) { - global $wgCanonicalNamespaceNames; - return isset( $wgCanonicalNamespaceNames[$index] ); + $nslist = self::getCanonicalNamespaces(); + return isset( $nslist[$index] ); } + /** + * Returns array of all defined namespaces with their canonical + * (English) names. + * + * @return \array + * @since 1.17 + */ + public static function getCanonicalNamespaces() { + static $namespaces = null; + if ( $namespaces === null ) { + global $wgExtraNamespaces, $wgCanonicalNamespaceNames; + $namespaces = array( NS_MAIN => '' ) + $wgCanonicalNamespaceNames; + if ( is_array( $wgExtraNamespaces ) ) { + $namespaces += $wgExtraNamespaces; + } + wfRunHooks( 'CanonicalNamespaces', array( &$namespaces ) ); + } + return $namespaces; + } /** - * Returns the canonical (English Wikipedia) name for a given index + * Returns the canonical (English) name for a given index * * @param $index Int: namespace index * @return string or false if no canonical definition. */ public static function getCanonicalName( $index ) { - global $wgCanonicalNamespaceNames; - if( isset( $wgCanonicalNamespaceNames[$index] ) ) { - return $wgCanonicalNamespaceNames[$index]; + $nslist = self::getCanonicalNamespaces(); + if( isset( $nslist[$index] ) ) { + return $nslist[$index]; } else { return false; } @@ -140,11 +160,10 @@ class MWNamespace { * @return int */ public static function getCanonicalIndex( $name ) { - global $wgCanonicalNamespaceNames; static $xNamespaces = false; if ( $xNamespaces === false ) { $xNamespaces = array(); - foreach ( $wgCanonicalNamespaceNames as $i => $text ) { + foreach ( self::getCanonicalNamespaces() as $i => $text ) { $xNamespaces[strtolower($text)] = $i; } } @@ -156,6 +175,25 @@ class MWNamespace { } /** + * Returns an array of the namespaces (by integer id) that exist on the + * wiki. Used primarily by the api in help documentation. + * @return array + */ + public static function getValidNamespaces() { + static $mValidNamespaces = null; + + if ( is_null( $mValidNamespaces ) ) { + foreach ( array_keys( self::getCanonicalNamespaces() ) as $ns ) { + if ( $ns >= 0 ) { + $mValidNamespaces[] = $ns; + } + } + } + + return $mValidNamespaces; + } + + /** * Can this namespace ever have a talk namespace? * * @param $index Int: namespace index |