diff options
Diffstat (limited to 'includes/Namespace.php')
-rw-r--r-- | includes/Namespace.php | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/includes/Namespace.php b/includes/Namespace.php index 3d618e64..e8e7523f 100644 --- a/includes/Namespace.php +++ b/includes/Namespace.php @@ -28,7 +28,7 @@ $wgCanonicalNamespaceNames = array( NS_CATEGORY_TALK => 'Category_talk', ); -if( is_array( $wgExtraNamespaces ) ) { +if( isset( $wgExtraNamespaces ) && is_array( $wgExtraNamespaces ) ) { $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces; } @@ -46,6 +46,13 @@ if( is_array( $wgExtraNamespaces ) ) { class MWNamespace { /** + * These namespaces should always be first-letter capitalized, now and + * forevermore. Historically, they could've probably been lowercased too, + * but some things are just too ingrained now. :) + */ + private static $alwaysCapitalizedNamespaces = array( NS_SPECIAL, NS_USER, NS_MEDIAWIKI ); + + /** * Can pages in the given namespace be moved? * * @param $index Int: namespace index @@ -102,6 +109,15 @@ class MWNamespace { } /** + * Returns whether the specified namespace exists + */ + public static function exists( $index ) { + global $wgCanonicalNamespaceNames; + return isset( $wgCanonicalNamespaceNames[$index] ); + } + + + /** * Returns the canonical (English Wikipedia) name for a given index * * @param $index Int: namespace index @@ -135,7 +151,7 @@ class MWNamespace { if ( array_key_exists( $name, $xNamespaces ) ) { return $xNamespaces[$name]; } else { - return NULL; + return null; } } @@ -146,7 +162,7 @@ class MWNamespace { * @return bool */ public static function canTalk( $index ) { - return $index >= NS_MAIN; + return $index >= NS_MAIN; } /** @@ -182,4 +198,29 @@ class MWNamespace { return !empty( $wgNamespacesWithSubpages[$index] ); } + /** + * Is the namespace first-letter capitalized? + * + * @param $index int Index to check + * @return bool + */ + public static function isCapitalized( $index ) { + global $wgCapitalLinks, $wgCapitalLinkOverrides; + // Turn NS_MEDIA into NS_FILE + $index = $index === NS_MEDIA ? NS_FILE : $index; + + // Make sure to get the subject of our namespace + $index = self::getSubject( $index ); + + // Some namespaces are special and should always be upper case + if ( in_array( $index, self::$alwaysCapitalizedNamespaces ) ) { + return true; + } + if ( isset( $wgCapitalLinkOverrides[ $index ] ) ) { + // $wgCapitalLinkOverrides is explicitly set + return $wgCapitalLinkOverrides[ $index ]; + } + // Default to the global setting + return $wgCapitalLinks; + } } |