Preserve object references
authorTim Starling <tstarling@users.mediawiki.org>
Sat, 22 Oct 2005 16:19:03 +0000 (16:19 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Sat, 22 Oct 2005 16:19:03 +0000 (16:19 +0000)
includes/Hooks.php

index d19c853..be8496a 100644 (file)
@@ -53,7 +53,7 @@ if (defined('MEDIAWIKI')) {
                        return false;
                }
                
-               foreach ($wgHooks[$event] as $hook) {
+               foreach ($wgHooks[$event] as $index => $hook) {
                        
                        $object = NULL;
                        $method = NULL;
@@ -70,7 +70,7 @@ if (defined('MEDIAWIKI')) {
                                if (count($hook) < 1) {
                                        wfDebugDieBacktrace("Empty array in hooks for " . $event . "\n");
                                } else if (is_object($hook[0])) {
-                                       $object = $hook[0];
+                                       $object =& $wgHooks[$event][$index][0];
                                        if (count($hook) < 2) {
                                                $method = "on" . $event;
                                        } else {
@@ -92,7 +92,7 @@ if (defined('MEDIAWIKI')) {
                        } else if (is_string($hook)) { # functions look like strings, too
                                $func = $hook;
                        } else if (is_object($hook)) {
-                               $object = $hook;
+                               $object =& $wgHooks[$event][$index];
                                $method = "on" . $event;
                        } else {
                                wfDebugDieBacktrace("Unknown datatype in hooks for " . $event . "\n");
@@ -114,7 +114,7 @@ if (defined('MEDIAWIKI')) {
                        /* Call the hook. */
                        wfProfileIn( $func );
                        if( isset( $object ) ) {
-                               $retval = call_user_func_array(array($object, $method), $hook_args);
+                               $retval = call_user_func_array(array(&$object, $method), $hook_args);
                        } else {
                                $retval = call_user_func_array($func, $hook_args);
                        }