Help:DPL Manual/Authors and History

From Terraria Wiki
Jump to navigation Jump to search


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:

DynamicPagelist2 vs. DynamicPageList

The following is an old explanation, taken from the original DPL manual at 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 <DynamicPageList>).

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 <DynamicPageList> 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 <dpl> and in addition offers the parser function {{#dpl: ....}}. 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 Compatibility.
  • 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

Version history

Early versions

You can find the early parts (before 0.92) of DPL history on metawiki:

Version 1.9.0

new parser function #dplvar
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 VariablesExtension. You just have to use #dplvar instead of #var.

new parser function #dplreplace
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.

So there is no longer a need to install the StringFunctions extension. You just have to use #dplreplace instead of #replace.

change message mechanism
DPL was using a deprecated way to access the message cache. Now it uses the modern way.
minor bugfix in include
when using the {template¦surrogate} with different namespaces for the template and the surrogate a problem could occur
changed execandexit
Now geturlargs will accept all variables form the command line, not only varaibales starting with DPL_

Version 1.8.9

improvement of updaterules
field size depends on value
Underscores in template names are now treated like spaces
new command execandexit
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 geturlargs in execandexit
gives DPL access to arbitrary URL command line variables
new command scroll
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 include
the localized word for "Template:" may preceed the template´s name
ignore empty argument list in category 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
include syntax
we now use : (colon) and whitespace for separation of field names
is now available as a local variable in phantom templates
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 fixcategory
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]
is now available in tablerow
'-' 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 linksto
mutliple statements are now logically connected by AND; (%PAGESEL%) refers to the FIRST statement only
multiple linkstoexternal
mutliple statements are now logically connected by AND
new parser function
linksto 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 updaterules
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 includematch
articles that do not match are no longer shown (previously they appeared as "empty entries" in the result list
does basically the same permission checking as the deletion dialogue now.

Version 1.8.7

option eliminate
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.
updaterules 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.
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
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 include statement.

include now understands parserFunctions
using include={#xxx}.abc allows to find the calls of parser functions and their arguments
include now understands tag functions
using include={~xxx}.abc allows to find extension calls which use tag syntax
scrolling 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
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 ordermethod
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 linkstoexternal
now you can also search for external links contained in your articles
new command addexternallink
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.
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 allowcachedresults.
first version of dplcache
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 dplcacheperiod
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 stablepages and qualitypages
these commands allow to control output regarding certain page flags which can be set via an extension called FlaggedRevisions.
new debug level
debug=6 allows to see the DPL statement which would be used by DPL without actually executing it.
flexible URL parameters
DPL can now take up to five parameters from the URL (DPL_arg1 .. DPL_arg5); this can be useful in advanced template design
result scrolling is much easier now
DPL uses two URL parameters (DPL_offset and DPL_count) for result scrolling -- see DPL Example 020.
new built-in variable %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 execandexit
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 namespace 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 Template:Extension DPL
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 variable
%IMAGE% - contains physical image path
new built-in variable
%PAGEID% - contains internal page_id number
new DPL command line argument
DPL_offset: this can be used to improve page scrolling - see DPL Example 013

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 Issue:Html-comments in parameter names
include=* now also works with table
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 tablerow formatting as well.
%PAGES% was wrong (showing the total number of pages in some cases)
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
minrevisions & maxrevisions -- 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 DPL security.

Version 1.7.6

bug fix at includematch
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 suppresserrors
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 updaterules
this allows to change articles (' batch editing ') which are selected by a DPL statement
includematch now also works with include=*
note that includematch always tries to match the raw text, including template parameters
allowcachedresults now accepts the option value 'yes+warn'
new command usedby
new built-in variable %CATBULLETS%

Version 1.7.4

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

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 multisecseparators
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 Example.

Version 1.7.2

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

Version 1.7.1

minor new feature at include
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 Test table for an example

Version 1.7.0

new command imageused
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 includetrim
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 category 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
%TOTALPAGES% 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
includematchparsed 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
this pseudo variable contains the current version of DPL; it can be used within resultsheaders and footers.

Version 1.6.4

Syntax error with static variables in connection with option reset.
Matrix view
new parser function '#dplmatrix:' introduced, see #dplmatrix.

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 include.

Version 1.6.2

Bugfix - The pattern match for template names in include 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 #dplchapter
you can extract a chapter from a text in the same way DPL extracts chapters from articles in the include statement.
added articlecategory
talk pages can be selected based on the category of their base page
include text truncation
now is aware of pre & nowiki tags
phantom templates
now support additional variables: %DATE% and %USER%
added randomseed

Version 1.5.2

enhancement of include
now you can delimit the length of selected template parameters
bugfix at include
delimiting a transcluded chapter did not work correctly with a limit of 1
offset and count 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,parm1=value1,parm2|Special:Call/DebuG]][1] to get an internal trace.
minor changes at Wgraph
see the change log of Wgraph.
there were no changes of DPL in this release .

Version 1.4.7

new feature
skipthispage 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
addcontribution allows to check who contributed how much. Only works for articles which were edited recently. See Test addcontribution.

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 Issue:Include positional template parameter

Version 1.4.3

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

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 ordermethod '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 addpagecounter, addpagesize or caused an SQL error. This should no longer happen.
new parameters
  1. tablerow: 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 tablerow works closely together with table and include. See the manual for details.
  2. eliminate: this parameter can be used as an alternative for reset, but behaves slightly different. It requires some extra processing so it should be used with care.
  3. ignorecase: this will make comparisons case insensitive. It has an effect on (not)linksto, (not)uses, (not)titlematch, (not)titleregexp, title.
multiple template parameters in include
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'
reset is no longer used in a separate DPL statement. Instead reset becomes a normal parameter of a DPL query. There are some more subtle changes in behaviour of reset. Read the manual.
new debug option
debug=5 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 debug 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 distinct=strict
This did not work correctly in some rare constellations

Version 1.4.0

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

Version 1.3.9

additional sortkey
now you can use 'pagesel' as a parameter for ordermethod. This will order (group) pages by the pagenames used as a selection in the linksto or linksfrom command.
added noresultsfooter and oneresultfooter
guess what they do?
new command table
This makes it a lot easier to present DPL output in wiki table format. See the manual and the examples.

Version 1.3.8

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

In release 1.3.6 using "ordermethod=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 DPL GUI 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 ZIP archive.
allow individual collations for sorting
a new option called ordercollation 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%
%PAGES% did not work when used with mode=category. 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 includesubpages=no.

Version 1.3.5

bug fixed at ordermethod
Previous versions had trouble with ordermethod=category,sortkey

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 'linksfrom'. 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 ordermethod 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
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 'reset'
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 linksfrom= were used together)
Modification of 'includematch'
includematch now always uses php preg_match instead of ereg - therefore patterns must have delimiters! Before #patterns had been matched using ereg
added 'oneresultheader'
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 Manual.

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 Test resultsheader. 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 Test resultsheader.

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
empty parameters are silently ignored
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 Catlist.

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 Test includematch)

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
category=*country 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
createdby, notcreatedby, modifiedby, notmodifiedby, lastmodifiedby, notlastmodifiedby; see Test createdby 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 manual 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 Test section inclusion.
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 Example 2). 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 Example 1 and Nigunda Test.
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 manual.
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.
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.

To show only the time you could use "h:i".

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 >
  • « is translated to <
  • ¦ 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
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

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


  1. DebuG,parm1=value1,parm2 found on the WayBack Machine (source code not viewable).