X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fplugin.php;h=bcf034f412263ea29f491f83467e398ddd989cca;hp=adf98accea725bfe8dc001ff896a72d7b7a0eb72;hb=91e0dccca7b2452d8b450791cae3aa4125e8889e;hpb=94ba79cee857030579852f5cd2b00a57dd71e967;ds=sidebyside diff --git a/functions/plugin.php b/functions/plugin.php index adf98acc..bcf034f4 100644 --- a/functions/plugin.php +++ b/functions/plugin.php @@ -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)) {