'ChangesListSpecialPageQuery': Called when building SQL query on pages
inheriting from ChangesListSpecialPage (in core: RecentChanges,
RecentChangesLinked and Watchlist).
-
Do not use this to implement individual filters if they are compatible with the
ChangesListFilter and ChangesListFilterGroup structure.
-
Instead, use sub-classes of those classes, in conjunction with the
ChangesListSpecialPageStructuredFilters hook.
-
This hook can be used to implement filters that do not implement that structure,
or custom behavior that is not an individual filter.
$name: name of the special page, e.g. 'Watchlist'
filters for pages inheriting from ChangesListSpecialPage (in core: RecentChanges,
RecentChangesLinked, and Watchlist). Generally, you will want to construct
new ChangesListBooleanFilter or ChangesListStringOptionsFilter objects.
-
When constructing them, you specify which group they belong to. You can reuse
existing groups (accessed through $special->getFilterGroup), or create your own
(ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup).
If you create new groups, you must register them with $special->registerFilterGroup.
-
Note that this is called regardless of whether the user is currently using
the new (structured) or old (unstructured) filter UI. If you want your boolean
filter to show on both the new and old UI, specify all the supported fields.
These include showHide, label, and description.
-
See the constructor of each ChangesList* class for documentation of supported
fields.
-
$special: ChangesListSpecialPage instance
'ChangeTagAfterDelete': Called after a change tag has been deleted (that is,
$nonRecurseDirs = [
"$IP/",
];
+ $extraFiles = [
+ "$IP/tests/phpunit/MediaWikiTestCase.php",
+ ];
foreach ( $recurseDirs as $dir ) {
$ret = $this->getHooksFromDir( $dir, self::FIND_RECURSIVE );
$potentialHooks = array_merge( $potentialHooks, $ret['good'] );
$badHooks = array_merge( $badHooks, $ret['bad'] );
}
+ foreach ( $extraFiles as $file ) {
+ $potentialHooks = array_merge( $potentialHooks, $this->getHooksFromFile( $file ) );
+ $badHooks = array_merge( $badHooks, $this->getBadHooksFromFile( $file ) );
+ }
$documented = array_keys( $documentedHooks );
$potential = array_keys( $potentialHooks );
$n = [];
if ( preg_match_all( '/((?:[^,\(\)]|\([^\(\)]*\))+)/', $match[4], $n ) ) {
$args = array_map( 'trim', $n[1] );
+ // remove empty entries from trailing spaces
+ $args = array_filter( $args );
}
} elseif ( isset( $match[3] ) ) {
// Found a parameter for Hooks::run,