Remove unneeded uses of else{} in api/
[lhc/web/wiklou.git] / includes / Hooks.php
index ed8b3ed..db47d31 100644 (file)
@@ -126,6 +126,9 @@ class Hooks {
         * @param array $args  Array of parameters passed to hook functions
         * @return bool True if no handler aborted the hook
         *
+        * @since 1.22 A hook function is not required to return a value for
+        *   processing to continue. Not returning a value (or explicitly
+        *   returning null) is equivalent to returning true.
         * @throws MWException
         * @throws FatalError
         */
@@ -196,6 +199,9 @@ class Hooks {
                                $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();
                        wfProfileOut( $func );
@@ -210,14 +216,7 @@ class Hooks {
                                        'Detected bug in an extension! ' .
                                        "Hook $func has invalid call signature; " . $badhookmsg
                                );
-                       } elseif ( $retval === null ) {
-                               // Null was returned. Error.
-                               throw new MWException(
-                                       'Detected bug in an extension! ' .
-                                       "Hook $func failed to return a value; " .
-                                       'should return true to continue hook processing or false to abort.'
-                               );
-                       } elseif ( !$retval ) {
+                       } elseif ( $retval === false ) {
                                wfProfileOut( 'hook: ' . $event );
                                // False was returned. Stop processing, but no error.
                                return false;