Merge "Hooks to extend pages retrieval and deletion"

This commit is contained in:
jenkins-bot 2015-12-17 23:28:56 +00:00 committed by Gerrit Code Review
commit 096960cc2b
2 changed files with 42 additions and 1 deletions

View file

@ -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
View 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