Releases: Universal-Omega/DynamicPageList4
4.0.0
After months of development, this is finally the stable release of DynamicPageList4.
Version 4.0.0
The extension was nearly completely rewritten, as such it has been rebranded as DynamicPageList4 as well. There could also be other changes not mentioned here as well, but major changes should be mentioned here.
- Converted all queries to use MediaWiki's QueryBuilder
- Has better performance and security
- More maintainable
- Fixes many bugs with queries
openreferencesis fixed so it actually gives the openreferences conflict error rather than a query error foropenreferences = missing.ordermethod = pageselgives a new error message rather than a query error when not using any of the supported options with it.- Fixed some instances of
column reference "page_title" is ambiguous. - Added support for
linksfrom,linksto,usedby, andusesto be used together at the same time. Previously mixing them would either give errors or return no results. - Added more support for PostgresSQL and SQLite for many more parameters (such as
ignorecase) that previously only worked on MySQL and MariaDB. - Fixed a bug where order method was set to the wrong type when using intersection-like tags which caused fatals.
- Fixed compatability with FlaggedRevs —
qualitypagesandstablepagesnow function again. They have not worked for a very long time. This was fixed by replacing the check forefLoadFlaggedRevsfunctions with checking by usingExtensionRegistry. - Fixed
ordercollation(very long time bug). Additionally, theordercollationparameter now accepts just charsets rather than full collation as well (only when using MySQL or MariaDB though).ordercollationis now also compatible with SQLite for a small subset of default collations available in SQLite (BINARY,NOCASE, andRTRIM). Most collations should work properly for MySQL/MariaDB and PostgreSQL as well now. - Added support for using regular expressions (
REGEXP) on PostgreSQL. openreferencesnow correctly produces the expected conflict error instead of a query error when misused.- Fixed handling of
catheadingsandcatnotheadings(via+and-incategory=). Previously,category=+would error andcategory=-could yield unpredictable results. - Updated symbols within
%ARGS%to avoid parser conflicts. This resolves several bugs with template expansion. - Configuration fetching is now more reliable and uses MediaWiki's built-in mechanisms.
- Fix for counts when using
includesubpages = false: subpage exclusion has been moved from theParseclass (which runs after the query) to be handled directly within the query itself. - Fixes for bizarre corner cases where PHP's DateTime parser interpreted invalid zero-based timestamps in... interesting ways.
- Support for PostgreSQL in all the timestamp queries.
%EDITSUMMARY%now correctly retrieves revision comments again.- This feature had been broken since MediaWiki 1.35 due to changes in how
rev_comment_idandcomment_textare stored. The fix restores full functionality of this.
- This feature had been broken since MediaWiki 1.35 due to changes in how
- Spaces in namespace names are now automatically replaced with underscores to ensure compatibility and avoid malformed queries.
- Fixed
addexternallink,linkstoexternal, and%EXTERNALLINK%.- NOTE: This restores
linkstoexternalbehavior to how it used to be and removeslinkstoexternaldomainandlinkstoexternalpath.
- NOTE: This restores
- Improved table alias usage.
- Refactored parameter handling to replace
__call()magic withprocessParameter(). - Fixed the message used in
articleCountMessage. - Fixed issue with
colspan. - Added compatability with the Video extension.
- [Performance] Removed tables from
FOUND_ROWS. - [Performance] Optimized query for
ordermethod=lastedit. - [Performance] Only parse image URLs for
%IMAGE%if needed. - Use
strict_types - Don't let
titleTextbecome null if match fails. This fixes exceptions if regex is invalid inreplaceintitle. - Escape category links in gallery. Fixes creating a gallery with category pages adding every category in the gallery to the page.
- Fixed multiple bugs in
resetandeliminateparameters. - Fixed catching
DBQueryError, and improved query exception handling, adding a new exception type,QueryExceptionto more reliably and explicitly catch proper query errors. - Fixed
nottitlematchbug where only the first pattern is excluded. - Added validation for regex in
replaceintitleto avoid potential PHP warnings for invalid regex. - Added more PHPUnit and Parser tests.
New Features
-
Added new configuration option to support overriding the parameter defaults,
$wgDplSettings['overrideParameterDefaults']. -
Added support for string replacements in
replaceintitle. This previously only supported regex replacements, now it will fallback to string replacements if there is no valid regex. -
Added support for display titles:
- New format option:
%DISPLAYTITLE%(falls back to%TITLE%if no display title is set; available only when using thetitleparameter). - New order method:
ordermethod=displaytitle(automatically falls back to sorting bytitlewhen no display title exists).
- New format option:
-
namespaceandnotnamespacenow accepts more options (only if they do not conflict with other existing namespace names):- Case-insensitive
mainis now accepted for the main namespace. - Namespace IDs (rather than just namespace names) work for all namespaces.
- Case-insensitive
-
Support for a wide range of relative timestamps (e.g., "last week", "in 2 hours", "1 month ago").
Previously only a few relative timestamps where supported, now anything supported by PHPsstrtotimeis supported. -
Gallery Mode Enhancements:
- Properly supports retrieving PageImages when using
mode=galleryon non-file namespace pages, if the PageImages extension is installed. - Now pulls directly from the PageImages extension instead of relying on
page_props, allowing access to bothpage_imageandpage_image_free. - Added support for
mode=gallerywhen using Intersection compatibility mode (i.e.,<DynamicPageList>tags). - Improves support for
%IMAGE%:
It no longer relies on stock/images/directories and instead dynamically resolves images based on whatever file backend is in use. - Introduces two new parameters:
imagewidthandimageheight, to control the size of images within galleries. - Introduces another new parameter:
gallerymode.
This sets themode=attribute in the generated<gallery>tag. Defaults totraditional, but supports all standard modes:traditionalnolinespackedpacked-hoverpacked-overlayslideshow
For more on supported gallery modes, see:
https://www.mediawiki.org/wiki/Help:Images#Gallery_syntax - Properly supports retrieving PageImages when using
BREAKING CHANGES
Previously, using & in a category name would incorrectly be interpreted as a logical AND separator between multiple categories, instead of being treated as a literal character in the category name. This meant that querying for categories containing an actual & (like "Cats & Dogs") would fail to match any pages.
This behavior has been fixed:
- To perform a logical
ANDbetween categories, you now must explicitly use<&>. - A literal
&in category names will now be treated correctly as part of the name.
Previously, underscores (_) in LIKE-style patterns (like in titlematch and nottitlematch) were implicitly treated as single-character wildcards. This made it impossible to reliably match literal underscores (which also represent spaces), and caused patterns to match more broadly than intended.
This behavior has been fixed:
- A single-character wildcard must now be written explicitly as
[_]. - Each
[_]represents exactly one character (for example,[_][_][_]matches three characters). - A bare
_is now treated as a literal underscore and will no longer act as a wildcard.
NOTE: We do it with brackets, because brackets are disallowed title characters, so they won't cause issues in the future with some edge-cases since no title can actually contain them. For similar reasons in the future, the same or similar method may be needed for % in order to allow better matching of literal % in titles, but that is a change that will break much more uses so will be done differently, perhaps keeping existing behavior but adding some other substitution to match literal %. For now, matching literal % remains unsupported or unreliable.
The template transclusion (Extension DPL) has been replaced with a proper tracking category, Pages using DynamicPageList4. All the references and usages of Extension DPL has been removed, including the CreateTemplate maintenance script. There is now a new maintenance script, DeleteTemplate to delete the old template. It will auto run when updated using update.php.
notcategory now applies to the maxCategoryCount limitation as well. This was done because they both use queries, so the limit, designed for query limitation, should apply to both. This may break existing pages as well, so the limit may need changed in user's configuration as well.
Removed the suppresserrors parameter.
NOTE: This one was documented as deprecated and slated for removal long ago and hasn't done anything at all prior to removal.
Removed support for updating/deleting articles.
NOTE: This removed the deleterules and updaterules parameters, and all associated user rights and related code including the UpdateArticle class entirely.
Updated some config defaults, changing:
$wgDplSettings['allowedNamespaces']to be an empty array ([]) instead ofnull.$wgDplSettings['recursivePreprocess']to be enabled by default.- `$wgDplSettings['maxCatego...
4.0.0-beta.1
🚀 DynamicPageList4 - Beta 1 Release
This is the very first beta release of DynamicPageList4. This releases also fixes numerous bugs from the alpha releases. Like the last alpha release, this release also has so many changes that I can't list absolutely everything here so just decided to use GitHub's release notes generation again.
🛠️ Changes and Improvements
- Remove the
handleSectionTagconfig by @Universal-Omega in #465- Serves no purpose anymore. It was just making
<section>behave like<dpl>which doesnt even seem was ever the intent for it.
- Serves no purpose anymore. It was just making
- Add PHPUnit tests for the
Articleclass by @Universal-Omega in #461 - Add compatability with the Video extension by @Universal-Omega in #468
- Minor cleanup/simplification to
Parseby @Universal-Omega in #469 getSubcategories: fix and add error handling by @Universal-Omega in #470- [Performance] Optimize query for
ordermethod=lasteditby @ciencia in #472 - Replace
gallerysize(added in a previous alpha release) withimagewidthandimageheightparameters by @Universal-Omega in #475- This was for compatability with Intersection.
- Move
getLoggertoUtilsby @Universal-Omega in #476 - Fix catching
DBQueryErrorby @Universal-Omega in #474 - Escape category links in gallery by @Universal-Omega in #478
- Fix
titlematchby @Universal-Omega in #482 - Add maintenance script to delete
Template:Extension DPLby @Universal-Omega in #479 - Improve query exception handling by @Universal-Omega in #480
- Some cleanup to parameters by @Universal-Omega in #486
- [Performance] Remove tables from
FOUND_ROWSby @Universal-Omega in #490 - Use
strict_typesby @Universal-Omega in #487 - Don't let
titleTextbecome null if match fails by @Universal-Omega in #491- This fixes exceptions if regex is invalid in
replaceintitle.
- This fixes exceptions if regex is invalid in
New Contributors
Full Changelog: 4.0.0-alpha.5...4.0.0-beta.1
📌 Notes
The codebase continues to undergo major structural improvements, and while stability is increasing, this remains an beta release. Early adopters are encouraged to test thoroughly and report any issues or regressions.
As always, if you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
4.0.0-alpha.5
🚀 DynamicPageList4 - Alpha 5 Release
This is the fifth alpha release of DynamicPageList4. It is also likely the very last alpha release before it heads into beta versions. This releases fixes numerous bugs from past alpha releases, finishes the rewrite/modernization of all remaining classes, and fixes all remaining (known) broken parameters/format options/etc.... This release has so many changes that I can't list absolutely everything here so just decided to use GitHub's release notes generation.
🛠️ Changes and Improvements
- Update some config defaults by @Universal-Omega in #428
- NOTE: Changed the default for
$wgDplSettings['allowedNamespaces']to an empty array ([]) instead ofnulland changed$wgDplSettings['recursivePreprocess']to be enabled by default.
- NOTE: Changed the default for
- Use the
Htmlclass in some places by @Universal-Omega in #429 - Fix the message used in
articleCountMessageby @Universal-Omega in #430 - Fix issue with
colspanby @Universal-Omega in #427 - Remove unused methods from
ParametersDataby @Universal-Omega in #433 - Add config option to support overriding the parameter defaults by @Universal-Omega in #432
- NOTE: This one is
$wgDplSettings['overrideParameterDefaults'].
- NOTE: This one is
- Add a new
gallerysizeparameter by @Universal-Omega in #434- NOTE: This one might be removed in a future release before DPL4 stable release, in favor of two separate width and height parameters for more compatibility with intersection without having three different parameters for it.
- Remove support for updating/deleting articles by @Universal-Omega in #436
- NOTE: This removed the
deleterulesandupdaterulesparameters, and all associated user rights and related code including theUpdateArticleclass entirely.
- NOTE: This removed the
- Some fixes by @Universal-Omega in #437
- Major refactoring to lister classes by @Universal-Omega in #435
- NOTE: This was a near-complete rewrite of basically the central part of the extension and has a chance to cause some regression, please report if so.
- Make some properties readonly by @Universal-Omega in #439
- Fix some regression in Lister by @Universal-Omega in #440
- Cleanup/modernize/rename LST class by @Universal-Omega in #411
- NOTE: This was a near-complete rewrite of one of the core features (transclusion logic) of the extension and has a chance to cause some regression, please report if so.
- Replace
parametersForRichnessLevelwith a constant and makeparameterRichnessreadonly by @Universal-Omega in #447 - Enable some phan plugins by @Universal-Omega in #450
- Refactor parameter handling to replace
__call()magic withprocessParameter()by @Universal-Omega in #455 - Remove the
suppresserrorsparameter by @Universal-Omega in #456- NOTE: This one was documented as deprecated and slated for removal long ago and hasn't done anything at all prior to removal.
- Fix
addexternallink,linkstoexternal, and%EXTERNALLINK%by @Universal-Omega in #459- NOTE: This restores
linkstoexternalbehavior to how it used to be and removeslinkstoexternaldomainandlinkstoexternalpath.
- NOTE: This restores
- Improve table alias usage by @Universal-Omega in #463
Full Changelog: 4.0.0-alpha.4...4.0.0-alpha.5
📌 Notes
The codebase continues to undergo major structural improvements, and while stability is increasing, this remains an alpha release. Early adopters are encouraged to test thoroughly and report any issues or regressions.
As always, if you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
4.0.0-alpha.4
🚀 DynamicPageList4 - Alpha 4 Release
This is the fourth alpha release of DynamicPageList4, continuing the methodical march toward a cleaner, more reliable, and fully modernized codebase. This release includes a long-anticipated name change, broader timestamp support, major internal refactors, and numerous quality-of-life improvements.
🛠️ Changes and Improvements
-
Extension Renamed to
DynamicPageList4:
The extension's actual name has now officially been updated fromDynamicPageList3toDynamicPageList4. This change has been planned since the initial modernization efforts and reflects the current state of the project. -
Relative Timestamp Support:
- Support for a wide range of relative timestamps (e.g., "last week", "in 2 hours", "1 month ago").
Previously only a few relative timestamps where supported, now anything supported by PHPsstrtotimeis supported. - Support for PostgreSQL in all the timestamp queries.
- Fixes for bizarre corner cases where PHP's DateTime parser interpreted invalid zero-based timestamps in... creative ways.
- Support for a wide range of relative timestamps (e.g., "last week", "in 2 hours", "1 month ago").
-
Fix for the
%EDITSUMMARY%format placeholder:
%EDITSUMMARY%now correctly retrieves revision comments again.
This feature had been broken since MediaWiki 1.35 due to changes in howrev_comment_idandcomment_textare stored. The fix restores full functionality of this. -
Gallery Mode Enhancements:
- Properly supports retrieving PageImages when using
mode=galleryon non-file namespace pages, if the PageImages extension is installed. - Now pulls directly from the PageImages extension instead of relying on
page_props, allowing access to bothpage_imageandpage_image_free. - Added support for
mode=gallerywhen using Intersection compatibility mode (i.e.,<DynamicPageList>tags). - Improves support for
%IMAGE%:
It no longer relies on stock/images/directories and instead dynamically resolves images based on whatever file backend is in use. - Introduces a new parameter:
gallerymode.
This sets themode=attribute in the generated<gallery>tag. Defaults totraditional, but supports all standard modes:traditionalnolinespackedpacked-hoverpacked-overlayslideshow
For more on supported gallery modes, see:
https://www.mediawiki.org/wiki/Help:Images#Gallery_syntax - Properly supports retrieving PageImages when using
-
Namespace Name Normalization:
Spaces in namespace names are now automatically replaced with underscores to ensure compatibility and avoid malformed queries. -
Modernization of More Classes:
- Significant cleanup and refactor of the
Parseclass for improved readability and logic clarity. - Modernization of and significant cleanup of the
Variables,Parameters, andParametersDataclasses.
- Significant cleanup and refactor of the
📌 Notes
This release finalizes the long-awaited full rename to DynamicPageList4. The codebase continues to undergo major structural improvements, and while stability is increasing, this remains an alpha release. Early adopters are encouraged to test thoroughly and report any issues or regressions.
There is still much more to come. As always, if you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
4.0.0-alpha.3
🚀 DynamicPageList4 - Alpha 3 Release
This is the third alpha release of DynamicPageList4, continuing the ongoing modernization and cleanup of the extension. This release focuses on additional refactors, incremental cleanups, reliability improvements, and other modernization efforts in preparation for future stability.
🛠️ Changes and Improvements
-
Query Class Refinements:
- Major cleanup and logic simplification, including changes to how certain queries are constructed, further improving cross-RDBMS compatibility beyond prior releases.
- Fix for counts when using
includesubpages = false: subpage exclusion has been moved from theParseclass (which runs after the query) to be handled directly within the query itself.
-
Logger Modernization:
The internalLoggerclass has been fully rewritten for modernization and maintainability. -
Major Refactoring of Article Class:
Significant cleanup and modernization of theArticleclass to align with PHP 8.1+ best practices.
📌 Notes
This release is another incremental step toward a stable release. While efforts have been made to preserve compatibility, testers are encouraged to report any issues or regressions encountered.
The extension remains internally named DynamicPageList3 for compatibility. This will change in a future release.
Feedback and issue reports are appreciated to help further stabilize and enhance the extension.
There is still much more to come. Like always, if you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
4.0.0-alpha.2
🚀 DynamicPageList4 - Alpha 2 Release
This is the second alpha release of DynamicPageList4, continuing efforts to modernize the extension, improve maintainability, and streamline functionality. This release primarily focuses on code refactoring, internal cleanups, and reliability improvements.
🛠️ Changes and Improvements
-
Replacement of
Extension DPLwith Tracking Category:
The template transclusion (Extension DPL) has been replaced with a proper tracking category,Pages using DynamicPageList4. All the references and usages ofExtension DPLhas been removed, including theCreateTemplatemaintenance script. -
Introduction of Constants and Utilities Classes:
A newConstantsclass centralizes all error and warning codes, while a newUtilsclass encapsulates common methods. These were introduced to factor some logic out of Hooks in preparation for migrating Hooks to use the HookHandlers system. -
Complete Rewrite of
dplmatrixParser Function:
Thedplmatrixparser function has been fully refactored for improved stability and correctness in generating matrix outputs and fixing a few bugs with it. -
Parser Functions Refactor:
Improved handling and validation in parser functions likedplvar,dplreplace, anddplnum. These updates improve reliability and bring the codebase up to modern PHP standards. However, it could introduce some bugs or regressions so please report it if so. -
Codebase Cleanups and Modernization:
Extensive cleanup of outdated patterns and legacy code, including better type declarations, readonly properties, and general modernization for PHP 8.1+ compatibility. TheHooksclass has been entirely refactored while theParseclass had some minor refactoring.
📌 Notes
- This release builds on the significant refactoring from Alpha 1. While backward compatibility has been preserved where possible, please report any regressions or unexpected behaviors.
- The extension remains internally named DynamicPageList3 for compatibility, but reflects the DPL4 codebase direction.
Feedback and issue reports are appreciated to help further stabilize and enhance the extension.
There is still much more to come. Like always, if you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
4.0.0-alpha.1
🚀 DynamicPageList4 - Alpha 1 Release
This is the very first alpha release of DynamicPageList4! This release includes many changes, fixes, and internal refactors.
🛠️ Changes and Improvements
-
Completely Rewritten Query Builder:
The query builder has been fully rewritten to improve reliability, security, and maintainability. This overhaul significantly changes how queries are constructed under the hood, reducing bugs and improving support across databases. -
Configuration Handling:
Configuration fetching is now more reliable and uses MediaWiki's built-in mechanisms. -
Parameters Refactored:
TheParametersclass has been heavily refactored to use modern PHP features. Some regressions or edge cases may exist — please open an issue if you encounter any! -
Enhanced
%ARGS%Handling:
Updated symbols within%ARGS%to avoid parser conflicts. This resolves several bugs with template expansion. -
Display Title Support:
Added support for display titles:- New format option:
%DISPLAYTITLE%(falls back to%TITLE%if no display title is set; available only when using thetitleparameter). - New order method:
ordermethod=displaytitle(automatically falls back to sorting bytitlewhen no display title exists).
- New format option:
-
Category
&Handling:
Previously, using&in a category name would incorrectly be interpreted as a logical AND separator between multiple categories, instead of being treated as a literal character in the category name. This meant that querying for categories containing an actual&(like "Cats & Dogs") would fail to match any pages.This behavior has been fixed:
- To perform a logical
ANDbetween categories, you now must explicitly use<&>. - A literal
&in category names will now be treated correctly as part of the name.
- To perform a logical
-
Category Headings Fix:
Fixed handling ofcatheadingsandcatnotheadings(via+and-incategory=). Previously,category=+would error andcategory=-could yield unpredictable results. -
Namespace Handling Improvements:
namespaceandnotnamespacenow support namespace IDs in addition to namespace names.- Case-insensitive
mainand(main)are now accepted for the main namespace.
-
Open References Conflict Handling:
openreferencesnow correctly produces the expected conflict error instead of a query error when misused. -
Better Error for
ordermethod=pagesel:
Now provides a proper error message when used without any supported parameters. -
Column Ambiguity Fixes:
Fixed some instances where the database would error with"page_title" is ambiguous. -
Improved Linking Parameters Compatibility:
Added support for combininglinksfrom,linksto,usedby, andusestogether. Previously, mixing them would result in errors or no results. -
FlaggedRevs Compatibility Fixed:
qualitypagesandstablepagesnow function again. These have not worked for a long time due to outdated checks, now replaced with checks via ExtensionRegistry. -
Order Collation Improvements:
Theordercollationparameter has been fully fixed (it didn't work much at all before) and now:- Also accepts just charsets (instead of only accepting full collation names) when using MySQL/MariaDB.
- Is compatible with SQLite using the default collations:
BINARY,NOCASE, andRTRIM. - Should work properly across MySQL/MariaDB, PostgreSQL, and SQLite.
-
PostgreSQL Regex Support:
Added support for using regular expressions (REGEXP) on PostgreSQL. -
ignorecase Fixes Across All Databases:
Theignorecaseparameter now works correctly on MySQL, MariaDB, PostgreSQL, and SQLite. Previously, it did not function on most setups. -
Rebranded to DPL4:
The codebase has been updated to reference DynamicPageList4 throughout. However, the actual extension name remains DynamicPageList3 for now. This is to keep the extension name consistent with the repository name and to avoid confusion during the transition.The extension name will be officially changed in a future release.
📌 Notes
- This alpha release includes all improvements from pre-release versions 1 to 5, along with other fixes and enhancements.
- There is still much more planned for DPL4, but this release establishes a new foundation.
- MediaWiki 1.44 is expected to be the last version supporting DynamicPageList3. DPL4 will be the focus moving forward and will fully support MediaWiki 1.45 and categorylinks normalization.
There’s a lot packed into this release, with much more to come. If you run into any issues, please open an issue on this repository or leave a comment in the discussion for this release.
Thank you for testing DPL4!
New Query Builder 5
This is the fifth pre-release version of DynamicPageList3. It is also the final pre-release version that will focus primarily on the query builder. After this release other parts of the extension will be worked on as well. The changes in this release are relatively small. Basically just a few bug fixes.
The fixes are as follows:
- Fixed a bug where order method was set to the wrong type when using intersection-like tags which caused fatals.
- Fixed compatability with FlaggedRevs —
qualitypagesandstablepagesnow function again. They have not worked for a very long time. This was fixed by replacing the check forefLoadFlaggedRevsfunctions with checking by usingExtensionRegistry. - The biggest fix this release is that
ordercollationhas finally been fixed, additionally, theordercollationparameter now accepts just charsets rather than full collation as well (only when using MySQL or MariaDB though).ordercollationis now also compatible with SQLite for a small subset of default collations available in SQLite (BINARY,NOCASE, andRTRIM). Most collations should work properly for MySQL/MariaDB and PostgreSQL as well now.
As always, if you encounter issues with the pre-release versions, please open an issue or post in the discussion for this release.
P.S. (as mentioned previously) Before these pre-release versions are released to stable, DynamicPageList3 will likely be re-released as DynamicPageList4 (version 4.0.0) with numerous other improvements/fixes/changes as well. Therefore MediaWiki 1.44 may be the last version of MediaWiki where the current DPL3 is supported, because DPL4 will likely be released with MediaWiki 1.45 compatibility for the categorylinks normalization support as well.
New Query Builder 4
This is the fourth pre-release version for DynamicPageList3 containing significantly more major changes to how some queries are constructed, particularly around the use of LIKE when using match parameters. It significantly improves the security around many features and parameters. Additionally, it adds support for PostgreSQL when using regex parameters.
Additionally, this release fixes the usage of ignorecase with support for all of MySQL (and MariaDB), PostgreSQL, and SQLite. Previously this did not function at all on the majority of modern database setups.
Like mentioned previously, if you encounter issues with the pre-release versions, please open an issue or post in the discussion for this release.
P.S. (as mentioned previously) Before these pre-release versions are released to stable, DynamicPageList3 will likely be re-released as DynamicPageList4 (version 4.0.0) with numerous other improvements/fixes/changes as well. Therefore MediaWiki 1.44 may be the last version of MediaWiki where the current DPL3 is supported, because DPL4 will likely be released with MediaWiki 1.45 compatibility for the categorylinks normalization support as well.
New Query Builder 3
This is the third pre-release version for DynamicPageList3 containing significantly more changes to how some queries are constructed. As mentioned in the previous pre-release version, SQLite support has been added to addcategories.
Here are some more changes:
namespaceandnotnamespacenow accepts more options:- Case-insensitive
mainand(main)are now accepted for the main namespace. - Namespace IDs (rather than just namespace names) work for all namespaces.
- Case-insensitive
openreferencesis fixed so it actually gives the openreferences conflict error rather than a query error foropenreferences = missing.ordermethod = pageselgives a new error message rather than a query error when not using any of the supported options with it.- Fixed some instances of
column reference "page_title" is ambiguous. - Fixed some issues caused by previous pre-release versions where
addcategories(always) andcategory=*<category>(for subcategories) would give query errors. - Added support for
linksfrom,linksto,usedby, andusesto be used together at the same time. Previously mixing them would either give errors or return no results.
Like mentioned previously, if you encounter issues with the pre-release versions, please open an issue or post in the discussion for this release.
P.S. (as mentioned previously) Before these pre-release versions are released to stable, DynamicPageList3 will likely be re-released as DynamicPageList4 (version 4.0.0) with numerous other improvements/fixes/changes as well. Therefore MediaWiki 1.44 may be the last version of MediaWiki where the current DPL3 is supported, because DPL4 will likely be released with MediaWiki 1.45 compatibility for the categorylinks normalization support as well.