wgNonincludableNamespaces option to disable inclusion for specific namespaces. Helps...
authorDaniel Kinzler <daniel@users.mediawiki.org>
Thu, 15 Feb 2007 01:23:47 +0000 (01:23 +0000)
committerDaniel Kinzler <daniel@users.mediawiki.org>
Thu, 15 Feb 2007 01:23:47 +0000 (01:23 +0000)
includes/DefaultSettings.php
includes/Parser.php

index 40e09f8..fbfd493 100644 (file)
@@ -1038,6 +1038,13 @@ $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' );
 $wgNamespaceProtection = array();
 $wgNamespaceProtection[ NS_MEDIAWIKI ] = array( 'editinterface' );
 
+/**
+* Pages in namespaces in this array can not be used as templates.
+* Elements must be numeric namespace ids.
+* Among other things, this may be useful to enforce read-restrictions
+* which may otherwise be bypassed by using the template machanism.
+*/
+$wgNonincludableNamespaces = array();
 
 /**
  * Number of seconds an account is required to age before
index e975359..7810f1e 100644 (file)
@@ -2887,7 +2887,7 @@ class Parser
         * @private
         */
        function braceSubstitution( $piece ) {
-               global $wgContLang, $wgLang, $wgAllowDisplayTitle;
+               global $wgContLang, $wgLang, $wgAllowDisplayTitle, $wgNonincludableNamespaces;
                $fname = __METHOD__ /*. '-L' . count( $this->mArgStack )*/;
                wfProfileIn( $fname );
                wfProfileIn( __METHOD__.'-setup' );
@@ -3065,6 +3065,9 @@ class Parser
                                                        $isHTML = true;
                                                        $this->disableCache();
                                                }
+                                       } else if ( $wgNonincludableNamespaces && in_array( $title->getNamespace(), $wgNonincludableNamespaces ) ) {
+                                               $found = false; //access denied
+                                               wfDebug( "$fname: template inclusion denied for " . $title->getPrefixedDBkey() );
                                        } else {
                                                $articleContent = $this->fetchTemplate( $title );
                                                if ( $articleContent !== false ) {