X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fplugin.php;h=74ddbea134633c8056581f57d9a3533fe0660707;hp=9e155e6e653dbe3ff3bedc24649c797dc9d7e3fa;hb=0db60ced010cea3a14b2b3fc225692e5f2d6a272;hpb=139a4b99a1f6ffc8e23c663eee14c036d302c380;ds=sidebyside diff --git a/functions/plugin.php b/functions/plugin.php index 9e155e6e..74ddbea1 100644 --- a/functions/plugin.php +++ b/functions/plugin.php @@ -104,7 +104,8 @@ function do_hook($name, &$args) { * Plugins returning non-arrays (strings, objects, etc) will have * their output added to the end of the ultimate return array, * unless ALL values returned are strings, in which case one string - * with all returned strings concatenated together is returned. + * with all returned strings concatenated together is returned + * (unless $force_array is TRUE). * * If any plugin on this hook wants to modify the $args * plugin parameter, it simply has to use call-by-reference @@ -112,19 +113,27 @@ function do_hook($name, &$args) { * current hook. Note that this is in addition to (entirely * independent of) the return value for this hook. * - * @param string $name Name of hook being executed - * @param mixed $args A single value or an array of arguments - * that are to be passed to all plugins - * operating off the hook being called. - * Note that this argument is passed by - * reference thus it is liable to be - * changed after the hook completes. + * @param string $name Name of hook being executed + * @param mixed $args A single value or an array of arguments + * that are to be passed to all plugins + * operating off the hook being called. + * Note that this argument is passed by + * reference thus it is liable to be + * changed after the hook completes. + * @param boolean $force_array When TRUE, guarantees the return + * value will ALWAYS be an array, + * (simple strings will be forced + * into a one-element array). + * When FALSE, behavior is as + * described above (OPTIONAL; + * default behavior is to return + * mixed - array or string). * * @return mixed the merged return arrays or strings of each * plugin on this hook. * */ -function concat_hook_function($name, &$args) { +function concat_hook_function($name, &$args, $force_array=FALSE) { global $squirrelmail_plugin_hooks, $currentHookName; $currentHookName = $name; @@ -143,6 +152,10 @@ function concat_hook_function($name, &$args) { } } + if ($force_array && is_string($ret)) { + $ret = array($ret); + } + $currentHookName = ''; return $ret;