mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Nuke
synced 2024-11-15 20:09:37 +00:00
Merge "Hooks to extend pages retrieval and deletion"
This commit is contained in:
commit
096960cc2b
|
@ -292,6 +292,17 @@ class SpecialNuke extends SpecialPage {
|
|||
);
|
||||
}
|
||||
|
||||
// Allows other extensions to provide pages to be nuked that don't use
|
||||
// the recentchanges table the way mediawiki-core does
|
||||
Hooks::run( 'NukeGetNewPages', array( $username, $pattern, $namespace, $limit, &$pages ) );
|
||||
|
||||
// Re-enforcing the limit *after* the hook because other extensions
|
||||
// may add and/or remove pages. We need to make sure we don't end up
|
||||
// with more pages than $limit.
|
||||
if ( count( $pages ) > $limit ) {
|
||||
$pages = array_slice( $pages, 0, $limit );
|
||||
}
|
||||
|
||||
return $pages;
|
||||
}
|
||||
|
||||
|
@ -307,8 +318,18 @@ class SpecialNuke extends SpecialPage {
|
|||
|
||||
foreach ( $pages as $page ) {
|
||||
$title = Title::newFromText( $page );
|
||||
$file = $title->getNamespace() === NS_FILE ? wfLocalFile( $title ) : false;
|
||||
|
||||
$deletionResult = false;
|
||||
if ( !Hooks::run( 'NukeDeletePage', array( $title, $reason, &$deletionResult ) ) ) {
|
||||
if ( $deletionResult ) {
|
||||
$res[] = wfMessage( 'nuke-deleted', $title->getPrefixedText() )->parse();
|
||||
} else {
|
||||
$res[] = wfMessage( 'nuke-not-deleted', $title->getPrefixedText() )->parse();
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
$file = $title->getNamespace() === NS_FILE ? wfLocalFile( $title ) : false;
|
||||
$permission_errors = $title->getUserPermissionsErrors( 'delete', $this->getUser() );
|
||||
|
||||
if ( $permission_errors !== array() ) {
|
||||
|
|
20
docs/hooks.txt
Normal file
20
docs/hooks.txt
Normal file
|
@ -0,0 +1,20 @@
|
|||
hooks.txt
|
||||
|
||||
This document describes the events triggered by the Nuke extension.
|
||||
|
||||
For more information about events and hooks in general see mediawiki/docs/hooks.txt in gerrit.
|
||||
|
||||
==Events and parameters==
|
||||
|
||||
'NukeGetNewPages': After searching for pages to delete. Can be used to add and remove pages.
|
||||
$username: the username filter specified by the user
|
||||
$pattern: the pattern filter specified by the user
|
||||
$namespace: the namespace filter specified by the user
|
||||
$limit: the limit filter specified by the user
|
||||
&$pages: list of pages title already retrieved
|
||||
|
||||
'NukeDeletePage': Allows other extensions to handle the deletion of titles.
|
||||
Return true to let Nuke handle the deletion or false if it was already handled in the hook.
|
||||
$title: title to delete
|
||||
$reason: reason given by the user for deletion
|
||||
&$deletionResult: Whether the deletion was successful or not
|
Loading…
Reference in a new issue