* @param $index
* @param $method
*
+ * @throws MWException
* @return bool
*/
private static function isMethodValidFor( $index, $method ) {
* Returns array of all defined namespaces with their canonical
* (English) names.
*
+ * @param bool $rebuild rebuild namespace list (default = false). Used for testing.
+ *
* @return array
* @since 1.17
*/
- public static function getCanonicalNamespaces() {
+ public static function getCanonicalNamespaces( $rebuild = false ) {
static $namespaces = null;
- if ( $namespaces === null ) {
+ if ( $namespaces === null || $rebuild ) {
global $wgExtraNamespaces, $wgCanonicalNamespaceNames;
$namespaces = array( NS_MAIN => '' ) + $wgCanonicalNamespaceNames;
if ( is_array( $wgExtraNamespaces ) ) {
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?
*