X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fplugin.php;h=b28f550d89effcb9efc1942f9dbc4b31d55dadb9;hb=741d74d391f7d8130f7f7e2bd8de6b02654d7ec6;hp=adf98accea725bfe8dc001ff896a72d7b7a0eb72;hpb=94ba79cee857030579852f5cd2b00a57dd71e967;p=squirrelmail.git diff --git a/functions/plugin.php b/functions/plugin.php index adf98acc..b28f550d 100644 --- a/functions/plugin.php +++ b/functions/plugin.php @@ -3,7 +3,7 @@ /** * plugin.php * - * Copyright (c) 1999-2004 The SquirrelMail Project Team + * Copyright (c) 1999-2005 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * This file provides the framework for a plugin architecture. @@ -42,9 +42,9 @@ function use_plugin ($name) { * @return mixed $data */ function do_hook ($name) { - global $squirrelmail_plugin_hooks; + global $squirrelmail_plugin_hooks, $currentHookName; $data = func_get_args(); - $ret = ''; + $currentHookName = $name; if (isset($squirrelmail_plugin_hooks[$name]) && is_array($squirrelmail_plugin_hooks[$name])) { @@ -56,6 +56,8 @@ function do_hook ($name) { } } + $currentHookName = ''; + /* Variable-length argument lists have a slight problem when */ /* passing values by reference. Pity. This is a workaround. */ return $data; @@ -69,8 +71,9 @@ function do_hook ($name) { * @return mixed the return value of the hook function */ function do_hook_function($name,$parm=NULL) { - global $squirrelmail_plugin_hooks; + global $squirrelmail_plugin_hooks, $currentHookName; $ret = ''; + $currentHookName = $name; if (isset($squirrelmail_plugin_hooks[$name]) && is_array($squirrelmail_plugin_hooks[$name])) { @@ -82,6 +85,8 @@ function do_hook_function($name,$parm=NULL) { } } + $currentHookName = ''; + /* Variable-length argument lists have a slight problem when */ /* passing values by reference. Pity. This is a workaround. */ return $ret; @@ -96,8 +101,9 @@ function do_hook_function($name,$parm=NULL) { * @return string a concatenation of the results of each plugin function */ function concat_hook_function($name,$parm=NULL) { - global $squirrelmail_plugin_hooks; + global $squirrelmail_plugin_hooks, $currentHookName; $ret = ''; + $currentHookName = $name; if (isset($squirrelmail_plugin_hooks[$name]) && is_array($squirrelmail_plugin_hooks[$name])) { @@ -109,6 +115,8 @@ function concat_hook_function($name,$parm=NULL) { } } + $currentHookName = ''; + /* Variable-length argument lists have a slight problem when */ /* passing values by reference. Pity. This is a workaround. */ return $ret; @@ -128,7 +136,7 @@ function concat_hook_function($name,$parm=NULL) { * @return bool the result of the function */ function boolean_hook_function($name,$parm=NULL,$priority=0,$tie=false) { - global $squirrelmail_plugin_hooks; + global $squirrelmail_plugin_hooks, $currentHookName; $yea = 0; $nay = 0; $ret = $tie; @@ -137,6 +145,7 @@ function boolean_hook_function($name,$parm=NULL,$priority=0,$tie=false) { is_array($squirrelmail_plugin_hooks[$name])) { /* Loop over the plugins that registered the hook */ + $currentHookName = $name; foreach ($squirrelmail_plugin_hooks[$name] as $function) { if (function_exists($function)) { $ret = $function($parm); @@ -147,6 +156,7 @@ function boolean_hook_function($name,$parm=NULL,$priority=0,$tie=false) { } } } + $currentHookName = ''; /* Examine the aftermath and assign the return value appropriately */ if (($priority > 0) && ($yea)) {