Help:DPL Manual/Authors and History

DynamicPageList3
See Extension:DynamicPageList3 at the MediaWiki wiki.

DPL3 is an update/revamp of the legacy DPL and DPL2 extensions. It is written and maintained by Curse/Gamepedia staffer Alexia E. Smith, partially built on the legacy DPL/DPL2 code, which was developed by:


 * Algorithmix
 * Dangerville
 * IlyaHaykinson
 * Theaitetos
 * Unendlich

DynamicPagelist2 vs. DynamicPageList

 * The following is an old explanation, taken from the original DPL manual at http://semeb.com/dpldemo/index.php?title=DPL:Version_History. It is retained here only for posterity. Notes below about plans for the future of DPL have likely been abandoned.

There was a basic version of this extension some time ago. Later it was enhanced by many new features and the name was changed to DynamicPageList2. The new version was no longer downward compatible. At the same time the name of the original extension was changed to 'Intersection' (but the documentation kept talking of DynamicPageList and the tag name still was &lt;DynamicPageList&gt;).

Some time later another bunch of features had been added. And the name was changed back to DynamicPageList (which was thought to be 'free').

Meanwhile some new features had also been added to 'Intersection' and recently 'Intersection' requested its original name back - which caused a real lot of confusion regarding the naming.

Currently (as of June 2009) the status is as follows:


 * Some wikimedia websites like wikinews use the old version. They call it 'Intersection' or 'DynamicPageList'. Its tag is &lt;DynamicPageList&gt; and the sources are in the mediawiki SVN under the path name 'DynamicPageList'.


 * Some other websites switched to DynamicPageList2 - a version which is commonly considered to be obsolete by now. They may want to change to DPL as it is 95% downward compatible with DPL2.


 * Quite a lot of websites use DPL now, i.e. the extension distributed on this website. They call it DPL or DynamicPageList. It uses the tag &lt;dpl&gt; and in addition offers the parser function . The source is available at the extensions Mediawiki page.

There is an opinion which says that running DPL on a major public website would introduce the risk that people write queries which consume a lot of resources. And apart from there is the problem of incompatibilities between 'Intersection' and DPL.

It is time to put an end to this mess.


 * A large effort was recently put into DPL to make it functionally 100% downward compatible with 'Intersection'. Missing commands were added and the semantics of some existing commands were slightly altered. For details read the chapter on.


 * A concept of functional restrictions was introduced which allows it to configure DPL with different levels of functionality. The lowest level corresponds exactly to 'Intersection' as of today.


 * An advanced caching concept was introduced which makes it possible to save the result of DPL queries independent from the rest of a page. This means that this DPL cache even survives edit actions of the page containing the DPL invocation - as long as the DPL statement itself is not changed.

So, in the near future, there will only be one extension named DynamicPageList(DPL) which unites all previous branches.

Main Authors / Contacts

 * Algorithmix
 * Dangerville (no longer maintains the extension)
 * IlyaHaykinson (no longer maintains the extension)
 * Unendlich (EMail: fabian@xover.htu.tuwien.ac.at) (no longer maintains the extension)

Early versions
You can find the early parts (before 0.92) of DPL history on metawiki:
 * DynamicPageList (1)
 * DynamicPageList (DE)
 * DynamicPageList (de)
 * DynamicPageList (2)

Version 1.9.0
So there is no longer a need to install the VariablesExtension. You just have to use #dplvar instead of #var.
 * new parser function : some DPL applications rely on the possibility to access variables. The code for this feature was part of an extended version of the VariablesExtension. This code has been redesigned and incorporated into DPL.

So there is no longer a need to install the StringFunctions extension. You just have to use #dplreplace instead of #replace.
 * new parser function : some DPL applications rely on the possibility to use regular expressions. The code for this feature was part of an extended version of the StringFunctions. This code has been redesigned and incorporated into DPL.


 * change message mechanism: DPL was using a deprecated way to access the message cache. Now it uses the modern way.


 * minor bugfix in : when using the {template¦surrogate} with different namespaces for the template and the surrogate a problem could occur


 * changed : Now geturlargs will accept all variables form the command line, not only varaibales starting with DPL_

Version 1.8.9

 * improvement of : field size depends on value


 * : Underscores in template names are now treated like spaces


 * new command : allows short circuit evaluation if the execution of a query shall depend on a condition (this avoid useless computation effort)


 * setting execandexit to true will prevent the parser cache from being disabled by successive settings of allowcachedresults


 * option  in : gives DPL access to arbitrary URL command line variables


 * new command : auto-adjusts some DPL parameters based on previous execution


 * performance inprovement: SQL will only calculate the total number of results if %TOTALPAGES% is used in the resultsheader


 * when searching for template calls in : the localized word for "Template:" may preceed the template´s name


 * ignore empty argument list in command: it proved to be more convenient if DPL ignores an empty argument list; in previous releases an empty argument list was used to search for articles in NO category. Now you have to use the special word _none_ to list articles with NO category assignment


 * syntax: we now use : (colon) and whitespace for separation of field names


 * %CATLIST% : is now available as a local variable in phantom templates


 * %IMAGE% : is now translated to the image plus hashpath if used within a tablerow statement


 * truncating wikitext: The function which truncates wiki text in an include statement was improved (logic to check balance of tags)


 * bug fix in replacing %SECTION%: in an include link %SECTION% was not correctly replaced when in combination with regular expressions for section titles


 * new command


 * : accept @ as a synonym for # in the include statement, @@ will match regular expressions


 * : SYNTAX CHANGE: an arbitrary number of regexp can now precede all other information: [regex1~regex2~regex3~number linkText]


 * %CATLIST% : is now available in


 * : '-' can be used as a dummy parameter now (for including columns with content not derived from the include statement)


 * : allow alternate syntax for surrogate template {tpl|surrogate}; thus an alternate namespace for surrogate templates can be specified


 * multiple : mutliple statements are now logically connected by AND; (%PAGESEL%) refers to the FIRST statement only


 * multiple : mutliple statements are now logically connected by AND


 * new parser function: #dplnum


 * accepts a % sign; in this case it will use SQL-LIKE syntax; (avoiding to misinterpret %xx as a hex char definition)


 * new variable %EDITSUMMARY%

Version 1.8.8

 * various bugfixes and improvements of : we now only produce a preview and use the standard wiki page for saving the change. Thus we can make sure that all permissions are checked, update conflicts are recognized etc.


 * bugfix in : articles that do not match are no longer shown (previously they appeared as "empty entries" in the result list


 * deleterules: does basically the same permission checking as the deletion dialogue now.

Version 1.8.7

 * option : You can now set the default value for this option in LocalSettings. Setting it to 'all' will suppress all back-references to page links created by a DPL statement.


 * enhanced: new sub-commands like 'parameter', 'format', 'value', 'optional', 'afterparm', 'legend', 'tooltip', 'table', 'editform', 'action', 'hidden', 'submit', 'commit' etc. See the documentation. updaterules can now produce a screen form to modify template values.


 * title> and title> : these commands now exclude equality; this is better suited for pag flipping. Uquality test can be enforced if argument starts with an equals sign.


 * tuning: DPL loads its modules dynamically now. This means less overhead for all pages which do not contain a DPL statement.


 * added %DPL_findTitle%: this makes it easier to combine page flipping and searching


 * uppercase translation for arguments: The first letter of %DPL_fromTitle%, %DPL_toTitle%, %DPL_findTitle% will automatically be translated to uppercase for convenience


 * enhanced syntax for include: a regexp pattern can be added to eliminates matching text portions


 * space conversion: space characters are converted to underscores in all category (regexp) commands


 * bugfix: there was a complicated problem with the new parser which lead to UNIQ-QINU-sequences appearing from time to time in combinations with the dplcache. This has been fixed. It requires a (minor) change of a mediawiki component (LinkHolderAray.php)


 * bug fix in category statement: when expanding PAGENAME mediawiki inserts 'html entities' for special characters. the & contained in these entities was mis-interpreted as a logical AND.

Version 1.8.6

 * bugfix in ordermethod: changing the default sort order to 'titlewithoutnamespace' showed that this option led to invalid SQL statements in some cases. This was corrected. Sorting result pages by title without namespace is now the default behaviour of DPL. If you prefer the old way, just add 'ordermethod=title' to your query. Note that the new default only affects DPL queries where no namespace is selected (which is probably a minority of all queries).

Version 1.8.5
There are some internal technical changes in this release and some performance improvements which make scrolling through huge result sets faster. In addition there are some new features regarding the statement.


 * now understands parserFunctions: using include={#xxx}.abc allows to find the calls of parser functions and their arguments


 * now understands tag functions: using include={~xxx}.abc allows to find extension calls which use tag syntax


 * greatly improved: added special logic to DPL_fromTitle: reversed sort order for backward scrolling


 * new parameters for scrolling: title<  and  title>


 * new URL args for scrolling: DPL_fromTitle, DPL_toTitle


 * new built-in vars for scrolling: %FIRSTTITLE%, %LASTTITLE%, %FIRSTNAMESPACE%, %LASTNAMESPACE%, %SCROLLDIR% (only in header and footer)


 * internal changes: changed the php source files to UTF8 encoding (i18n was already utf8); removed all closing php tags at the end of the source files; added 'path' and changed href to "third-party" in the hook-registration; changed implementation of userdate transformation to wgLang->userAdjust


 * bugfix at date display: added a space after display of dates in 'addeditdate' etc.


 * bugfix collation problem: removed replacement of card suit symbols in SQL query due to collation incompatibilities


 * changed default : DPL now uses 'titlewithoutnamespace as default (as this is more efficient than 'title'); this may affect the output of existing queries; add 'ordermethod=title' to keep the current ordering; unfortunately this leads to invalid SQL syntax in some constellations - please use DPL 1.8.6.

Version 1.8.4

 * new command : now you can also search for external links contained in your articles


 * new command : displays external links which were found according to your query; the variable %EXTERNALLINK% can be used for the same purpose.


 * new ordermethod: none - as the name says this option will suppress ordering of the result set


 * bugfix in titlematch: up to now spaces in a pattern had been translated to underscores because MW stores underscores instead of spaces. As an underscore is a wildcard symbol in a SQL-LIKE-expression (it stands for an arbitrary character) this was not correct. Now we translate to an escaped underscore.


 * userdateformat: default value changed to show also seconds (not only Y-m-d H:i)


 * bugfix date/time: in some cases (anonymous users, older MW revisions) a completely wrong date was displayed (year 1977 ..)


 * date/time used for selection in revision-related selections: these now are translated by the timezone so that they fit with the server time.


 * bugfix SQL error: the combination of 'title' and 'allrevisionssince' led to a SQL error.


 * performance info improved: %DPLTIME% now shows fractions of seconds

Version 1.8.3

 * bugfix in expansion of URL parameters: execandexit did not work correctly in some constellations

Version 1.8.2

 * bugfix %DATE% : when using addeditdate=true and ordermethod=lastedit and minoredits=exclude the built-in variable %DATE% was not expanded


 * policy change in dynamic behaviour: sometime after revision 1.7.4 the caching strategy of DPL was changed. This lead to the effect that DPL pages were in some constellations no longer 'dynamic', i.e. the MW parser cache had to be deleted (via &action=purge) to see the latest results. While this may seem preferable for really large sites it may confuse people on smaller an medium size wikis. Therefore we now have a configuration switch in LocalSettings.php ("$respectParserCache"). By default this is set back to the older policy of 'true dynamic behaviour'. See the parameter.


 * first version of : DPL now contains a cache mechanism which can store DPL results for an arbitrary time. The cache will even survive edit actions of the page containing the DPL statement as long as the DPL statement itself is not changed. This is meant for large wikis (Wikipedia) where a DPL query might be expensive to run. Currently the cache uses the filesystem (images directory with hashed subdirs); this may change to using the database later.


 * new command : allows you to set the duration period of the dplcache (in seconds)


 * date/time preferences: all dates are now OUTPUT according to the user preferences / time zone. Note that for the moment the selection criteria is still based on UTC time.

Version 1.8.1

 * bugfix %DATE% : when using addeditdate=true and ordermethod=lastedit and adduser=false the built-in variable %DATE% was not expanded


 * bufix at 'allrevisions...': allrevisionssince delivered wrong results; this should be fixed now.

Version 1.8.0
A lot of work has gone into this release of DPL. The main goal is to provide downward compatibility with an ancient version of DynamicPageList which is being used on some WikiMedia sites. (sometimes called "Extension:Intersection", sometimes also "DynamicPageList").

The idea behind is to re-unite all the different versions and to replace all of them by release 1.8.1 (or later) of DPL. This takes into account that 1.8.0. may contain some minor incompatibilities which will be fixed by DPL 1.8.1++.

Apart from the downward compatibility issue DPL 1.8.0 brings a couple of new features which may be useful, too.


 * new commands  and  : these commands allow to control output regarding certain page flags which can be set via an extension called FlaggedRevisions.


 * new level: debug=6 allows to see the DPL statement which would be used by DPL without actually executing it.


 * flexible : DPL can now take up to five parameters from the URL (DPL_arg1 .. DPL_arg5); this can be useful in advanced template design


 * result is much easier now: DPL uses two URL parameters (DPL_offset and DPL_count) for result scrolling -- see.


 * new built-in %DPLTIME%: can be used for performance measurement - shows the net time spent within the DPL extension (which comprises database access and result processing)


 * new command : DPL performs a command but does not execute a query. This is used to convert URL parameters into user variables which can then be used outside the DPL code, e.g. in an #if or #ifexpr statement.


 * numeric specification: for downward compatibility reasons DPL now accepts also numbers as namespace identifiers. It is not recommended to use that feature.


 * code restructuring: There has been a major restructuring of the source code to improve readability and maintainability. You should have in mind that such modifications can create unwanted side effects. Should you observe unexpected effects or even minor deviations from the behaviour of older DPL releases, please open an ISSUE.

Version 1.7.9

 * automatic link to : Every page containing a DPL statement will automatically create a link to Template:Extension DPL. You should create this Template in your wiki. We suggest that you copy the source code from our version. The idea is that via this connection you can easily find out which pages in a wiki contain DPL calls. This may help in maintaining them and it will probably be needed by the dplcache feature which is under construction.


 * new experimental feature: dplcache - undocumented at the moment until it has been thoroughly tested


 * bugfix in errorhandling: parameter substitution within error message did not work. "%DPL-messages" should now be more clear to the user


 * bugfix in localisation: i18n file was corrupted and has been replaced by a new version. Please check the Chinese and other versions;


 * bugfix in ordermethod=lastedit, firstedit: this led to the effect that too few pages/revisions were shown


 * bugfix at include=* : a php warning could arise (Call-time pass-by-reference has been deprecated .. line 3882); this should be gone now


 * new built-in : %IMAGE% - contains physical image path


 * new built-in : %PAGEID% - contains internal page_id number


 * new DPL command line argument: DPL_offset: this can be used to improve page - see

Version 1.7.8

 * template inclusion accepts wiki comments: when including parameters of template calls DPL now silently ignores optional wiki comments which may be placed between the parameter name and the equals sign. See


 * include=* now also works with : Previous versions of DPL could not place the whole content of a page into a table field of the result report. Now you can do this and you can apply  formatting as well.


 * bugfix: %PAGES% was wrong (showing the total number of pages in some cases)


 * bugfix: there was a severe bug concerning the inclusion of labeled sections. In fact, it looked as if labeled sections were not included at all (the text was erroneously truncated to 0 before it was shown).


 * new feature: &  -- this allows to specify a threshold for the number of revisions of a page which must be present for the page to be shown in the DPL result set.

Version 1.7.7

 * new option to protect DPL agains mis-use: a configuration option which can be set in the LocalSettings.php allows to configure DPL in a way that DPL queries will only be run from PROTECTED PAGES. See.

Version 1.7.6

 * bug fix at : there was a php error which occured when trying to match content of a non existing chapter (missing array element at line 3887). This is now fixed.

Version 1.7.5

 * new command : setting this to 'yes' or 'true' will prevent a warning from being shown if your DPL statement has an empty result list.


 * minor internal chang in generated SQL: we now use LOWER instead of UPPER for comparisons which shall ignore case


 * new command : this allows to change articles (' batch editing ') which are selected by a DPL statement


 * now also works with include=*: note that  always tries to match the raw text, including template parameters


 * now accepts the option value 'yes+warn'


 * new command


 * new %CATBULLETS%

Version 1.7.4

 * new command : produces a list of all images which are contained in an article. Non existing images can be included or excluded, see

Version 1.7.3

 * preliminary bugfix for MediaWiki 1.12 (thanks to Rezyk!): Due to the changed parser there were servere problems with certain DPL queries. Hopefully the majority of these problems will no longer exist with Version 1.7.3. Please check and report any starnge effects you may observe!


 * The %SECTION% variable now can be used within : This makes it possible to write a simple DPL query which creates a table where you see all the headlines used in a group of articles. If you have a group of articles which belong to a common category and which should (more or less) have the same chapter structure, this is an ideal way to monitor similarities and differences. See the.

Version 1.7.2

 * improved sorting of tables: via you can specify a column which will be used for an initial sort when the table is first displayed. See, example (B).

Version 1.7.1

 * minor new feature at : when including a template the colon-separated parameter name list can now contain %variables%. Thus the link to the article where a table row comes from need no longer be in the first column; see for an example

Version 1.7.0

 * new command : allows to select pages that use a certain image


 * minor bugfix: spaces were not correctly treated in articlecategory


 * minor bugfix: installation checking could cause problems depending on php version

Version 1.6.9

 * new command : removes leading and trailing whitespace form transcluded contents.


 * respecting 'nonIncludableNamespaces': DPL is no aware of protected namespaces; a query will not show output from articles in such namespaces.

Version 1.6.8

 * new operator & in command: this is only a syntax variant. Instead of specifying multiple 'category' lines you can use a '&' for the AND condition.

Version 1.6.7

 * bug fix: Release 1.6.6 had a negative side effect on 'goal=categories'. This has been fixed with 1.6.7.

Version 1.6.6

 * new variable: returns the correct number of pages found regardless of count limits.


 * minor security fix: single apostrophs were not escaped in a very rare situation

Version 1.6.5

 * new function: applies regular expressions to the pre-parsed contents of template parameters. This may be useful if the parameters of your templates contain varaible references or other template calls.


 * two minor technical bugfixes: passing parameters by reference, missing array key


 * %VERSION%: this pseudo variable contains the current version of DPL; it can be used within s and footers.

Version 1.6.4

 * Bugfix: Syntax error with static variables in connection with option.


 * Matrix view: new parser function '#dplmatrix:' introduced, see.

Version 1.6.3

 * Labeled section inclusion: If the pattern starts with a "*" it will be taken as a regexp; "**" stands for "any section". In both cases the tag name will be prepended to the contents (separated by "::"). See.

Version 1.6.2

 * Bugfix - The pattern match for template names in was not precise enough: You could involuntarily grasp additional templates the name of which started with the same name followed by a space and some other characters.

Version 1.6.1

 * Callbacks obviously need a global adresse in some older versions of MediaWiki: Now there is a small indirection for this in the code which can be eliminated some time in future.


 * Escaping of '/': A slash in a page name (e.g. if you use subpages) could lead to php errors because the the '/' is internally used as a preg_delimiter. Now slashes are being escaped.

Version 1.6.0

 * This a purely technical release: You should observe no differences between 1.5.3 and 1.6.0. There is one exception: If you had set one of the global DPL configuration switches (like $wgDPL2XxxYyy) in your LocalSettings.php you must now change it to ExtDynamicPageList2::$xxxYyy.

Version 1.5.3

 * eliminated false warning: when using title= together with include=* there was a false warning about empty result set


 * new parser function : you can extract a chapter from a text in the same way DPL extracts chapters from articles in the statement.


 * added : talk pages can be selected based on the category of their base page


 * text truncation: now is aware of pre & nowiki tags


 * phantom templates: now support additional variables: %DATE% and %USER%


 * added

Version 1.5.2

 * enhancement of : now you can delimit the length of selected template parameters


 * bugfix at : delimiting a transcluded chapter did not work correctly with a limit of 1


 * and are now directly implemented in SQL: If you had, say, 1000 entries in your result set and the pre-configured SQL limit of DPL was 500 you could never show entries 501..1000. Now this is possible (using an offset of 500 in our example).

Version 1.5.1

 * bugfix at addcontributions: table name prefix led to invalid SQL statement


 * bugfix at resultsheader: if includematch reduced a set of matching articles to zero, this was not recognized by the noresultsheader

Version 1.5.0

 * changed the algorithm in the Call extension: the older version was fooled by browsers inserting cookie variables at the beginning of the parameter list. This should be gone now. Use "DebuG" as a pseudo target for testing. (Note: The Call Extension no longer supports MediaWiki. )

Version 1.4.9

 * improved error handling: invalid command names did not always lead to a warning; comands without '=' were silently ignored. A command starting with an '=' lead to a runtime error. All this has been fixed. It is recommended to upgrade to this version of DPL as the improved error detection will help you to avoid mistakes.

Version 1.4.8

 * improved Call extension: Some users had problems (often depending on the browser and the way it handles cookies). This should be solved now. In addition you can call Special:Call/DebuG to get an internal trace.


 * minor changes at Wgraph: see the.


 *  there were no changes of DPL in this release .

Version 1.4.7

 * new feature: can be set to 'no'. This will include the page containing the DPL query into the result set (if the query conditions match). Normally this page is excluded from the result set. Allowing to include the page may cause trouble if your DPL query transcludes contents from nested templates.

Version 1.4.6

 * new feature: allows to check who contributed how much. Only works for articles which were edited recently. See.

Version 1.4.5

 * error in "Call extension" corrected: There have been two errors in the Call extension which may have caused trouble to some users, either in combination with MediWiki 1.11 or with some (popular) browsers (e.g. Firefox, Opera). It is recommended to download 1.4.5 even if you yourself did not notice the problem as it may have affected some of the users of your website.

Version 1.4.4

 * corrected handling of numeric template parameters: See

Version 1.4.3

 * new feature: include=##regexp, i.e. you can now use a regular expression to find a chapter title. See.

Version 1.4.2

 * bug fixes
 * 1) sometimes a SQL error in the 'group by' clause could occur. Only installations which used a MySQL table name prefix (like mw_ e.g.) were affected
 * 2) when using   'sortkey' an SQL error occured. This has been fixed. 'sortkey' now automatically implies 'category' (which is necessary from a logical point of view).
 * 3) in some installations, the use of,  or   caused an SQL error. This should no longer happen.


 * new parameters
 * : This makes it possible to format items of a table individually. One can add layout attributes, convert template parameters to interwiki calls, highlight certain values, etc. The new  works closely together with   and  . See the manual for details.
 * : this parameter can be used as an alternative for, but behaves slightly different. It requires some extra processing so it should be used with care.
 * : this will make comparisons case insensitive. It has an effect on.


 * multiple template parameters in : Now an include statement can return multiple parameter values of a template invocation; this is very useful for table output (one parameter per column). It removes the necessity to write standard 'phantom templates' which only return their parameter values.


 * design change in 'reset':  is no longer used in a separate DPL statement. Instead   becomes a normal parameter of a DPL query. There are some more subtle changes in behaviour of  . Read the manual.


 * new option:   will show the wiki text which is produced by your DPL query. This can be very useful when creating complicated output or when you are stuck with missing newline characters, etc.

Version 1.4.1

 * bugfix regarding the command: debug=3 did not work correctly (lead to an empty page most times)


 * exception handling improved: Now DPL complains if there is a SQL error. Before it could happen that you only got an empty page.


 * bugfix regarding : This did not work correctly in some rare constellations

Version 1.4.0

 * added a new option for : the value 'strict' can be used to reduce the amount of output you get from a  or   statement. See.

Version 1.3.9

 * additional sortkey: now you can use 'pagesel' as a parameter for . This will order (group) pages by the pagenames used as a selection in the or  command.


 * added and : guess what they do?


 * new command : This makes it a lot easier to present DPL output in wiki table format. See the  and the.

Version 1.3.8

 * Bugfix: Extracting a template parameter could be mislead by pipe characters sitting inside hyperlinks. This has been fixed. It only affected the {Template:xyz}:parameter_name syntax variant.

Version 1.3.7

 * Bugfix: In release 1.3.6 using "=sortkey" caused an SQL syntax error. Please upgrade to 1.3.7


 * extended boolean support: parameters of type boolean now accept true, false, yes, no, 1, 0, off, on as values.

Version 1.3.6

 * The DPL special page was removed: The is a better suited alternative. There were some minor features in the DPL special page which are not available in the current revision of the GUI. If somebody feels that these features should be made available again, I would recommend to create a subpage of the current GUI and add a button to the GUI which gives access to that subpage (containing the extended functions). I would not like to overburden the standard layout of the DPL GUI with a dozen of more or less exotic options... The source code of the old special page is still available in the version history of the.


 * allow individual collations for sorting: a new option called makes it possible to define special collating orders which e.g. allow case insensitive sorting. Use with care: You must specify a collation symbolic name which is known to MySql - otherwise you will get a SQL error (use 'debug=4' to check!). A good guess is latin1_swedish_ci.


 * path to standard collating sequence regarding the symbols which represent card suits: As I use DPL heavily in a wiki which deals with the game of Bridge I wanted to have the suit symbols ordered in the canonical way. This should not do harm to anybody but may encourage the use of DPL in Bridge playing communities.


 * bugfix re. : %PAGES% did not work when used with . Now it does.


 * On special request of the people from the wonderful city of Vienna there is a new feature regarding subpages: Please make sure that %PAGES%, column output and other related features still work as expected when used together with.

Version 1.3.5

 * bug fixed at : Previous versions had trouble with

Version 1.3.4

 * changed layout for multi column output: Now the columns size is calculated in a way which creates columns of equal length excpet the last column.


 * SQL errors eliminated: There were some rare cases where you could run into a SQL error complaining about ambuguities in column names - esp. when using ''. Hopefully all of these problems have no gone.


 * subcategory expansion corrected: spaces in category names prevented DPL from descending into subcategories.

Version 1.3.3

 * Bugfix at parameter checking: if more than one parameter was used, there could be false complaints about invalid parameters.

Version 1.3.2

 * Warning at missing selection criteria: The warning caused by missing selection criteria will now only be issued if no DEBUG level was set


 * %NAMESPACE% added: This variable contains the namespace of the current page in teh DPL result set


 * %PAGESEL% added: This variable contains the page which was used as a starting point in a 'linksfrom' or 'linksto' condition. Note that these parameters accept a list of pages.


 * Headingmode with columns: 'headingmode' now works with multiple columns; we assume that the vertical space needed for a heading roughly equals two normal lines


 * Bugfix with error messages: parameter syntax errors were not shown in some cases


 * New Parameter '': issuing a separate DPL statement which contains 'reset' as the only parameter allows to get rid of unwanted references of a DPL page to templates, images, categories and other pages; read the manual.


 * Bugfix with SQL error: ambiguous 'page_name' in SQL statement fixed (appeared when namespace= and = were used together)


 * Modification of '': includematch now always uses php preg_match instead of ereg - therefore patterns must have delimiters! Before #patterns had been matched using ereg


 * added '': this header is used if there is exactly one entry in the result set. For the friends of correct grammar ..


 * allow nesting of DPL statements: The symbols ²{...}² can be used to depict a template call which shall be executed while DPL is walking through its result list. This is a major step forward in combining DPL with other extensions. Read the .

Version 1.3.1

 * minor modification at resultsheader and resultsfooter: these statements do no longer emit an implicit newline into the DPL output stream. But you can add \n if needed. If you observe unexpected fromatting with resultsheader or -footer, try adding a \n before and after your resultsheader. See also . The benfit of the changed behaviour is that you can create inline text which contains just the sum of pages (%PAGES%) of a DPL query. See.

Version 1.3.0

 * all boolean parameters now accept 'yes' and 'no' as an alternative for 'true' and 'false'.

Version 1.2.9

 * resultsfooter added: in analogy to resultsheader


 * resultsheader and resultsfooter understand '\n': The charcters '\n' are replaced by a newline within the resultsheader and resultsfooter. This is useful if you want to output wikitext which needs to start at the beginning of a new line.


 * parameter parsing at 'include' improved: if you specify 'include={template}:nameOrNumber' you will now get the correct parameter value even if the parameter itself contains another template call. This was not the case in earlier versions.

Version 1.2.8

 * syntax variant: many DPL querys contain the sequence 'mode=userformat' and 'listseparators=...' now there is a short notation for this. We allow 'format' as an alias for 'listseparators'. And if 'format' or 'listseparators' is specified, 'mode=userformat' will automatically be assumed


 * internal: empty parameters are silently ignored


 * SPECIALPAGE: The special page in its current form will not survive. There is a better replacement which allows you to write your personal GUI for DPL queries. Thanks to Nad for his 'SimpleForms' extension this is now possible. See.

Version 1.2.7

 * bugfix with %PAGES%: there was a problem with %PAGES% and multicolumn output


 * bugfix with undefined php variable: error occured when using a "*" in the 'category' parameter (i.e. using the subcategory matching feature)

Version 1.2.6

 * added 'distinct' option: normally 'distinct' is 'true'; there are some rare cases - esp. in combination with %PAGESEL% where you mioght want to set distinct=false


 * added '%PAGESEL%' variable: in combination with 'linksto' and 'linksfrom' this new variable will give you the name of the page which was used as an input to the selection. This is useful if your DPL query uses a list of pages as starting point for 'linksfrom' or as target point of 'linksto'.


 * 'linksfrom' and 'linksto' do no longer complain about empty parameters: instead these are silently ignored


 * changed SQL query basics to allow duplicate use of page table: this is an internal change which was necessary because of the enhanced functionality of linksfrom/linksto

Version 1.2.5

 * added includenotmatch: this allows to specify a regexp (based on transcluded contents) which must NOT match the contents

Version 1.2.4

 * error corrected: ordermethod "sortkey" did not work because of missing break in case statement
 * error corrected: counting of selected articles was wrong in older versions (see )

Version 1.2.3

 * allow %0 in include statement: %0 can now be used to transclude the text before the first chapter.

Version 1.2.2

 * allow simultaneous conditions on revisions: up to now only one selection criterion regarding revisions could be applied within a query (the others were silently ignored). Now you can use more than one condition within one statement. This allows to retrieve article revisions which belong to a certain time range.


 * added %CATNAMES%: A new pseudo variable was added which contains the categories of a page in natural text, separated by comma. The difference to %CATLIST% is that %CATLIST% contains a list of links to the categories.


 * parameter "noeditbox" added to DPL special page: adding "&&noeditbox" to the call of the special page will suppress the form containing the query, so that the user will just see the result.

Version 1.2.1

 * SQL string escaping corrected: there were some cases in which a page name containing a single ' could cause harm to SQL syntax (resulting in syntax errors). This was corrected.


 * titlemaxlength now also works with mode=userformat: before titlemaxlength only had worked in the other modes.

Version 1.2.0

 * minor change in SQL syntax: replaced " by ' to increase compatibility with Postgres etc.

Version 1.1.9

 * added ordermethod=titlewithoutnamespace: this is especially useful in combination with mode=category; it ignores the namespace when sorting articles by name. As it also makes the SQL statement considerably less complex you should use this option if your result contains articles from only one namespace or if the namespace does not matter.


 * the special page for DPL now accepts command line parameters: using two consecutive "&" acts like a newline in a DPL statement

Version 1.1.8

 * added two new options: to include the author or the lasteditor of a page


 * new concept of "goals": whereas DPL normally will produce a list of pages (as the name indicates) it is now also possible to produce as a result the list of categories to which the selected pages belong. For example: show all categories which have members that were edited by userX since last Monday..

Version 1.1.7

 * bug fix concering AllMessages: There was a warning (caused by DPL) showing up at Special:AllMessages. The warning is gone now.


 * bug fix with DPL extension path: Due to a hardcoded directory path you could run into an error with the new special page. This should now be resolved.

Version 1.1.6

 * small bug fix at template inclusion: There was a php error if you tried to use the same template for DPL as was used in the original article. Normally you would add some suffix to the template name (in which case the error does not happen).

Version 1.1.5

 * made caching configurable: new parameter 'allowcachedresults='

Version 1.1.4

 * first version of DPL SPECIAL PAGE: still in its infant state ...
 * short syntax for selecting a single template parameter: include={template}:3 will select the third chapter
 * support # as a comment symbol within DPL commands: lines starting with a # will be ignored
 * allow more flexible date specification: (2007-03-10 instead of 20070310)

Version 1.1.3

 * bugfix for 1.1.2: If you get a php warning about "parameter passing by reference" you should download this release.

Version 1.1.2

 * sections which shall be included can now also be identified by number: include= understands %1, %2 etc and %-1 for the last section of an article (there is no %-2). %SECTION% will show the headline of the chapter.

Version 1.1.1

 * There is experimental support for category hierarchies:  will find pages which belong to "country" or to a direct subcategory of country. NO, there is no way to go deeper than just one level at the moment. The wiki database design is not very well suited for this type of tree expansion ...


 * starting with 1.1.1 there are some additional files in the source code: they might become the nucleus of a "DPL special page". There is no need for another "require_once" in your LocalSettings. Just ignore these files for the moment.


 * The ZIP archive is the only supported source code download mechanism: You should not try to extract the source code from the wiki text under "Source". Unfortunately there were some problems with the upload mechanism so that in all versions between 1.0.1 and 1.1.1 character sequences like "%CA" (which happen to appear in the source code) were erroneously transformed into double byte characters during upload. If in your installation %DATE% or %CATLIST" do not work this may be the reason. In that case you should download the latest ZIP archive with the sources.

Version 1.1.0

 * parser cache disabling changed: if 'title=' is set, the parser cache will not be disabled. There should be no difference in all other cases.

Version 1.0.9

 * new parameter 'openreferences': allows to list non-existing pages via the 'linksfrom' command.

Version 1.0.8

 * new parameter 'notlinksfrom'


 * solved a bug which had to do with invalid arguments at linksto, linksfrom etc


 * includematch changed: now the regexp checks against the calling code, not against the output of the DPL template


 * bugfix at 'replaceintitle'

Version 1.0.7

 * some improvements of includematch: regarding multiple occurencies of the same template or chapter; now only those occurencies are taken which match the condition.

Version 1.0.6

 * now there is an experimental feature which allows to make selections based on included contents (includematch=): you can define a regular expression which must match the included contents (in case of template based matching it must match the output of your template). Maybe this feature will be changed in near future based on experiences of users ...

Version 1.0.5

 * now there is a set of powerful parameters which allow page selection to be based on the user who edited a page: ; see  and the manual.

Version 1.0.4

 * new parameter linksfrom added: DPL can now also output all links which start from one or more given pages. This makes sense if you have pages which contain many links and you want to extract a subset of the pages which are referenced.

Version 1.0.3

 * syntax modifications in REGEXP matching: when matching categories and titles we use the whole argument as one regexp expression, i.e. the pipe character retains its normal meaning.


 * minor corrections in title=:there was a problem with articles names containing spaces

Version 1.0.2

 * category matching supports LIKE and REGEXP:


 * title matching supports REGEXP:

Version 1.0.1

 * new parameter "title" added: this parameter selects exactly one page and implicitly sets mode=userformat; this may sound somewhat strange but is useful if you want to use DPL´s capabilities for content transclusion only. See the for an example.


 * "include" now works as an alias for "includepage"

Version 1.0.0

 * support for revisions added: you can now restrict your search to articles which had a revision before or after some point in time; you can also show all revisions before or after some point in time


 * dominantsection added: this feature aims at generating sortable lists which contain included parts of other documents; if a document calls the same template many times (or contains many chapters with the same heading) the definition of a dominant section will lead to separate output rows for each such call or chapter.


 * replaceintitle added: you can change the contents of %TITLE% via replacing part of it by some other string

Version 0.9.9

 * default template added: if you use template based inclusion and you have articles which do not include the original template, a template with the extension ".default" (appended to the dpl substitute for the original template) will be called.


 * rowcolformat added: when you use columns= or rows= in the output you can now control the cellspacing, cellpadding and backgroundcolor of the output grid.


 * the multisecseparator tags now also understand variables like %PAGE%: This is helpful when generating sorted lists

Version 0.9.8

 * inclusion of labeled sections: another bugfix; when including labeled sections using the usertag syntax, DPL only worked correctly for the first inclusion of a given page. If you had more than one inclusion from the same page every inclusion after the first was reduced to a link (due to a too defensive algorithm for breaking recursions). This has been solved. See.


 * TOC behaviour changed: You may have observed that mediawiki often creates a table of contents (TOC) for the output of a DPL statement. It also generates editable sections in certain cases. This behaviour is based in the mediawiki engine but often not very desired in our context. You you can use NOTOC and NOEDITSECTION pragmas to stop this behaviour (typically in a resultsheader statement, see ). For mode=category a TOC and editable sections do not make any sense. So DPL inserts the two pragmas now automatically. Note that as a consequence you must manually put a TOC pragma into the article which contains the DPL query if you want to see a TOC for your article.


 * additional parameters for template based inclusion: now there are two additional parameters named %PAGE% and %TITLE% which are passed to every template when we perfrom a template based inclusion. Thus the template can produce a link to the source file from where it was include (note that the PAGENAME macro cannot be used for this purpose as it contains the name of the page which contains the DPL statement).


 * linksto, uses, titlematch and their not-equivalents now understand a set of arguments which form an OR-group: the alternatives are separated by a pipe symbol; the "not variants" are interpreted in a way that the "not" is applied to the whole OR expression. So, notlinksto=London|Paris means that an article must not link to (London or to Paris) to be selected. You could also say that it must not link to London AND it must not link to Paris.


 * in some rare cases it could happen that a template text was included although the template wasn´t called in the original source: This error has been fixed with patch1 of 0.9.8.

Version 0.9.7

 * bug fixed with transclusion of labeled sections: Due to an error in all versions below 0.9.7 the transclusion of labeled sections only worked if you had LabeledSectionTransclusion installed as another mediawiki extension (besides DPL). This should be solved now.


 * addfirstcatgeorydate can be used with more than one category selection: A restriction on input parameter combinations was released. If an article belongs to more than one category there is no defined procedure which date will be shown.

Version 0.9.6

 * space sensitivity in template recognition eliminated: There was a bug which prevented DPL from recognizing template calls in an included article when there were spaces or linefeeds between the opening double braces and the template name. There was also another bug which led to misinterpretations when you had two templates where one of them had the name of the pther plus some appended letters. Both errors have been corrected with Version 0.9.6; see and.


 * changed semantics of secseparators: To gain more flexibility it was necessary to modify the semantics of the secseparators statement. Please check the DPL statements using this parameter and adapt them if necessary. For details see the.


 * allowed multiple inclusion of the same template or same chapter: If a document includes the same template many times you will get all hits now. You can separate them with the new parameter "multisecseparators="


 * heading based inclusion: a single # will include the text before the first heading


 * recursion blocking: The page containing your DPL statement will never show up in the result. You need no longer exclude that page explicitly.

To show only the time you could use "h:i".
 * userdateformat: Now you can define the way you want to see a DATE; use the syntax of php gmdate, i.e. "Y-m-d (D)" would give "2007-02-26 (Mon)" etc.


 * php warning eliminated: IN php5 (with a certain config parameter setting) there was a warning about calltime reference passing of parameters. This should now be gone.


 * new Variable %TITLE%: This new variable contains the page name without the namespace; it can be used to create a link together with %PAGE% like this:


 * sophisticated character escapings: We use the following replacements within DPL parameter interpretation:
 * » is translated to &gt;
 * « is translated to &lt;
 * ¦ is translated to |
 * This makes it possible to include tags (even other mediawiki extensions!) within a DPL call

Version 0.9.5

 * introduced "offset=": With this new option you can (in combination with "count=") restrict the output to a range of hits

Version 0.9.4

 * allowed "-" with "categories=": With this new option you can exclude categories from appearing in the headings when grouping output bay categories


 * disabled UTF8 conversion with sortkeys: ... as it led to SQL arrors (incompatible collations...) with non-UTF8 MysQL database settings


 * option headingcount= added: Now you can decide whether to show or to suppress (=default) the text line with the number of entries in a heading group

Version 0.9.3

 * allow ¦ as an alias for |: This makes syntax looking better when using DPL in parser function mode


 * escapelinks= introduced: Regarding images and categories you can now decide whether yo want links in the output result (this is default) or you want the categories added to your apge and/or the images displayed directly

Version 0.9.2

 * problem with headlines in headingmode corrected
 * addcategories: bug fixed
 * new variable %CATLIST%: in mode=userformat you have access to the list of categories via this built-in variable

Version 0.9.1

 * adduser: problem with adduser solved

Version 0.9
There are many enhancements compared to older versions, such as
 * usability as parser function
 * this had some influence on downward compatibility with older versions, especially regarding parameter interpretation
 * enhanced page inclusion
 * titlematch, nottitlematch
 * notlinksto
 * resultsheaders
 * mode=userformat / listseparators= / many new %variables%
 * categoriesminmax
 * uses= (template based inclusion)
 * randomcount
 * columns and rows in the output
 * includemaxlength
 * ... and some others

Version 0.8.x
The extension was called DPL2 until version 0.8.x; for details of that part of the history see meta wiki description of DPL2