X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FHooks.php;h=b6c194c12ac14f4e6871b95fbba1c91ae48c1d81;hb=69566788e0dee901a6db9d5435e67b052f75f7c6;hp=a4145624361bae15acfe032b0d31467ad27b2023;hpb=04ebf62661d52b4b83098a97164b6624fb9aebdd;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Hooks.php b/includes/Hooks.php index a414562436..b6c194c12a 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -24,12 +24,6 @@ * @file */ -/** - * @since 1.18 - */ -class MWHookException extends MWException { -} - /** * Hooks class. * @@ -42,7 +36,7 @@ class Hooks { * Array of events mapped to an array of callbacks to be run * when that event is triggered. */ - protected static $handlers = array(); + protected static $handlers = []; /** * Attach an event handler to a given hook. @@ -54,7 +48,7 @@ class Hooks { */ public static function register( $name, $callback ) { if ( !isset( self::$handlers[$name] ) ) { - self::$handlers[$name] = array(); + self::$handlers[$name] = []; } self::$handlers[$name][] = $callback; @@ -104,7 +98,7 @@ class Hooks { global $wgHooks; if ( !self::isRegistered( $name ) ) { - return array(); + return []; } elseif ( !isset( self::$handlers[$name] ) ) { return $wgHooks[$name]; } elseif ( !isset( $wgHooks[$name] ) ) { @@ -134,11 +128,11 @@ class Hooks { * processing to continue. Not returning a value (or explicitly * returning null) is equivalent to returning true. */ - public static function run( $event, array $args = array(), $deprecatedVersion = null ) { + public static function run( $event, array $args = [], $deprecatedVersion = null ) { foreach ( self::getHandlers( $event ) as $hook ) { // Turn non-array values into an array. (Can't use casting because of objects.) if ( !is_array( $hook ) ) { - $hook = array( $hook ); + $hook = [ $hook ]; } if ( !array_filter( $hook ) ) { @@ -169,7 +163,7 @@ class Hooks { } $func = get_class( $object ) . '::' . $method; - $callback = array( $object, $method ); + $callback = [ $object, $method ]; } elseif ( is_string( $hook[0] ) ) { $func = $callback = array_shift( $hook ); } else { @@ -193,34 +187,17 @@ class Hooks { $badhookmsg = null; $hook_args = array_merge( $hook, $args ); - set_error_handler( 'Hooks::hookErrorHandler' ); - // mark hook as deprecated, if deprecation version is specified if ( $deprecatedVersion !== null ) { wfDeprecated( "$event hook (used in $func)", $deprecatedVersion ); } - try { - $retval = call_user_func_array( $callback, $hook_args ); - } catch ( MWHookException $e ) { - $badhookmsg = $e->getMessage(); - } catch ( Exception $e ) { - restore_error_handler(); - throw $e; - } - - restore_error_handler(); + $retval = call_user_func_array( $callback, $hook_args ); // Process the return value. if ( is_string( $retval ) ) { // String returned means error. throw new FatalError( $retval ); - } elseif ( $badhookmsg !== null ) { - // Exception was thrown from Hooks::hookErrorHandler. - throw new MWException( - 'Detected bug in an extension! ' . - "Hook $func has invalid call signature; " . $badhookmsg - ); } elseif ( $retval === false ) { // False was returned. Stop processing, but no error. return false; @@ -229,27 +206,4 @@ class Hooks { return true; } - - /** - * Handle PHP errors issued inside a hook. Catch errors that have to do - * with a function expecting a reference, and pass all others through to - * MWExceptionHandler::handleError() for default processing. - * - * @since 1.18 - * - * @param int $errno Error number (unused) - * @param string $errstr Error message - * @throws MWHookException If the error has to do with the function signature - * @return bool - */ - public static function hookErrorHandler( $errno, $errstr ) { - if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false ) { - throw new MWHookException( $errstr, $errno ); - } - - // Delegate unhandled errors to the default MW handler - return call_user_func_array( - 'MWExceptionHandler::handleError', func_get_args() - ); - } }