mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist
synced 2024-11-15 10:17:49 +00:00
Use MovePageCheckPermissions hook if possible
Change-Id: Ic5026384b92a0d68d628397ffe1de6e5b6183f02
This commit is contained in:
parent
7388eea9f2
commit
8dc6b9ee99
|
@ -68,7 +68,36 @@ class TitleBlacklistHooks {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AbortMove hook
|
* MovePageCheckPermissions hook (1.25+)
|
||||||
|
*
|
||||||
|
* @param Title $oldTitle
|
||||||
|
* @param Title $newTitle
|
||||||
|
* @param User $user
|
||||||
|
* @param $reason
|
||||||
|
* @param Status $status
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function onMovePageCheckPermissions( Title $oldTitle, Title $newTitle, User $user, $reason, Status $status ) {
|
||||||
|
$titleBlacklist = TitleBlacklist::singleton();
|
||||||
|
$blacklisted = $titleBlacklist->userCannot( $newTitle, $user, 'move' );
|
||||||
|
if ( !$blacklisted ) {
|
||||||
|
$blacklisted = $titleBlacklist->userCannot( $oldTitle, $user, 'edit' );
|
||||||
|
}
|
||||||
|
if ( $blacklisted instanceof TitleBlacklistEntry ) {
|
||||||
|
$status->fatal( $blacklisted->getErrorMessage( 'move' ),
|
||||||
|
$blacklisted->getRaw(),
|
||||||
|
$oldTitle->getFullText(),
|
||||||
|
$newTitle->getFullText() );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AbortMove hook (<1.24)
|
||||||
|
*
|
||||||
|
* @todo: Remove once 1.24 support is dropped
|
||||||
*
|
*
|
||||||
* @param $old Title
|
* @param $old Title
|
||||||
* @param $nt Title
|
* @param $nt Title
|
||||||
|
@ -76,22 +105,21 @@ class TitleBlacklistHooks {
|
||||||
* @param $err
|
* @param $err
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function abortMove( $old, $nt, $user, &$err ) {
|
public static function abortMove( $old, $nt, $user, &$err, $reason ) {
|
||||||
$titleBlacklist = TitleBlacklist::singleton();
|
if ( method_exists( 'MovePage', 'checkPermissions' ) ) {
|
||||||
$blacklisted = $titleBlacklist->userCannot( $nt, $user, 'move' );
|
// Don't use this hook, use MovePageCheckPermissions instead
|
||||||
if ( !$blacklisted ) {
|
|
||||||
$blacklisted = $titleBlacklist->userCannot( $old, $user, 'edit' );
|
|
||||||
}
|
|
||||||
if ( $blacklisted instanceof TitleBlacklistEntry ) {
|
|
||||||
$err = wfMessage( $blacklisted->getErrorMessage( 'move' ),
|
|
||||||
$blacklisted->getRaw(),
|
|
||||||
$old->getFullText(),
|
|
||||||
$nt->getFullText() )->parse();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$status = new Status();
|
||||||
|
self::onMovePageCheckPermissions( $old, $nt, $user, $reason, $status );
|
||||||
|
if ( !$status->isOK() ) {
|
||||||
|
$err = $status->getHTML();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $status->isOK();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether a user name is acceptable,
|
* Check whether a user name is acceptable,
|
||||||
* and set a message if unacceptable.
|
* and set a message if unacceptable.
|
||||||
|
|
|
@ -78,6 +78,7 @@ $wgGroupPermissions['sysop']['tboverride'] = true;
|
||||||
$wgHooks['getUserPermissionsErrorsExpensive'][] = 'TitleBlacklistHooks::userCan';
|
$wgHooks['getUserPermissionsErrorsExpensive'][] = 'TitleBlacklistHooks::userCan';
|
||||||
$wgHooks['TitleGetEditNotices'][] = 'TitleBlacklistHooks::displayBlacklistOverrideNotice';
|
$wgHooks['TitleGetEditNotices'][] = 'TitleBlacklistHooks::displayBlacklistOverrideNotice';
|
||||||
$wgHooks['AbortMove'][] = 'TitleBlacklistHooks::abortMove';
|
$wgHooks['AbortMove'][] = 'TitleBlacklistHooks::abortMove';
|
||||||
|
$wgHooks['MovePageCheckPermissions'][] = 'TitleBlacklistHooks::onMovePageCheckPermissions';
|
||||||
$wgHooks['AbortNewAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
|
$wgHooks['AbortNewAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
|
||||||
$wgHooks['AbortAutoAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
|
$wgHooks['AbortAutoAccount'][] = 'TitleBlacklistHooks::abortNewAccount';
|
||||||
$wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist';
|
$wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist';
|
||||||
|
|
Loading…
Reference in a new issue