Issue:DPL allows transclusion of non-transcludable namespaces

From FollowTheScore
Jump to: navigation, search
Description: DPL allows transclusion of non-transcludable namespaces
Extension / Version: DPL   /   1.6.4
Type / Status: Bug   /   open

Problem

On our wiki, we have some non-transcludable namespaces (which are also locked down by user). However, when using DPL, I can do something like:

 <DPL>
   namespace=SecuredNamespace
   include=*
   format=,<H3>[[%PAGE%|%TITLE%]]</H3>,<BR>,
 </DPL>

to get all the contents of that namespace. Yikes!

As a note, these are namespaces that have been placed into the standard $wgNonincludableNamespaces array, and as such, should be available to DPL.

Reply

Yes, the current version of DPL does not care about the $wgNonincludableNamespaces array. If you or someone else came up with a patch for the DPL source code which does the job I would certainly make that part of the next release.

Gero 21:06, 27 March 2008 (CET)
Any hints as to whereto look in the code? I can certainly look at it. Ooom 21:09, 27 March 2008 (CET)
Actually, it turned out to be fairly easy to fix. Below are the changes I made (called out) in a larger context. It is around line 2680 in DynamicPageList2.php Ooom 21:26, 27 March 2008 (CET)
        // page_id=rev_page (if revision table required)
        $sSqlWhere .= $sSqlCond_page_rev;
    
        // count(all categories) <= max no of categories
        $sSqlWhere .= $sSqlCond_MaxCat;
        
        
        ///////////////////////////////JMS Changes
        if(is_array($wgNonincludableNamespaces) && array_count_values($wgNonincludableNamespaces) > 0)
        {
	        $sSqlWhere .= ' AND ' .$sPageTable.'.page_namespace not in (' . implode(',', $wgNonincludableNamespaces) . ')';
        }
        ///////////////////////////////End JMS Change
        
        
        // page_id=pl.pl_from (if pagelinks table required)
        $sSqlWhere .= $sSqlCond_page_pl;