summaryrefslogtreecommitdiff
path: root/includes/Namespace.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Namespace.php')
-rw-r--r--includes/Namespace.php73
1 files changed, 68 insertions, 5 deletions
diff --git a/includes/Namespace.php b/includes/Namespace.php
index 292559d0..2e2b8d61 100644
--- a/includes/Namespace.php
+++ b/includes/Namespace.php
@@ -1,6 +1,22 @@
<?php
/**
- * Provide things related to namespaces
+ * Provide things related to namespaces.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
*/
@@ -14,7 +30,6 @@
* Users and translators should not change them
*
*/
-
class MWNamespace {
/**
@@ -33,7 +48,7 @@ class MWNamespace {
* @param $index
* @param $method
*
- * @return true
+ * @return bool
*/
private static function isMethodValidFor( $index, $method ) {
if ( $index < NS_MAIN ) {
@@ -50,7 +65,15 @@ class MWNamespace {
*/
public static function isMovable( $index ) {
global $wgAllowImageMoving;
- return !( $index < NS_MAIN || ( $index == NS_FILE && !$wgAllowImageMoving ) || $index == NS_CATEGORY );
+
+ $result = !( $index < NS_MAIN || ( $index == NS_FILE && !$wgAllowImageMoving ) || $index == NS_CATEGORY );
+
+ /**
+ * @since 1.20
+ */
+ wfRunHooks( 'NamespaceIsMovable', array( $index, &$result ) );
+
+ return $result;
}
/**
@@ -67,6 +90,7 @@ class MWNamespace {
/**
* @see self::isSubject
* @deprecated Please use the more consistently named isSubject (since 1.19)
+ * @return bool
*/
public static function isMain( $index ) {
wfDeprecated( __METHOD__, '1.19' );
@@ -185,7 +209,7 @@ class MWNamespace {
* Returns array of all defined namespaces with their canonical
* (English) names.
*
- * @return \array
+ * @return array
* @since 1.17
*/
public static function getCanonicalNamespaces() {
@@ -315,6 +339,33 @@ class MWNamespace {
return $wgContentNamespaces;
}
}
+
+ /**
+ * List all namespace indices which are considered subject, aka not a talk
+ * or special namespace. See also MWNamespace::isSubject
+ *
+ * @return array of namespace indices
+ */
+ public static function getSubjectNamespaces() {
+ return array_filter(
+ MWNamespace::getValidNamespaces(),
+ 'MWNamespace::isSubject'
+ );
+ }
+
+ /**
+ * List all namespace indices which are considered talks, aka not a subject
+ * or special namespace. See also MWNamespace::isTalk
+ *
+ * @return array of namespace indices
+ */
+ public static function getTalkNamespaces() {
+ return array_filter(
+ MWNamespace::getValidNamespaces(),
+ 'MWNamespace::isTalk'
+ );
+ }
+
/**
* Is the namespace first-letter capitalized?
*
@@ -353,4 +404,16 @@ class MWNamespace {
return $index == NS_USER || $index == NS_USER_TALK;
}
+ /**
+ * It is not possible to use pages from this namespace as template?
+ *
+ * @since 1.20
+ * @param $index int Index to check
+ * @return bool
+ */
+ public static function isNonincludable( $index ) {
+ global $wgNonincludableNamespaces;
+ return $wgNonincludableNamespaces && in_array( $index, $wgNonincludableNamespaces );
+ }
+
}