Index: includes/module.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/module.inc,v retrieving revision 1.163 diff -u -p -r1.163 module.inc --- includes/module.inc 30 Oct 2009 21:54:45 -0000 1.163 +++ includes/module.inc 31 Oct 2009 21:34:43 -0000 @@ -485,13 +485,18 @@ function module_implements_write_cache() * @return * The return value of the hook implementation. */ -function module_invoke() { - $args = func_get_args(); - $module = $args[0]; - $hook = $args[1]; - unset($args[0], $args[1]); +function module_invoke($module, $hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = NULL, $a5 = NULL, $a6 = NULL, $a7 = NULL) { if (module_hook($module, $hook)) { - return call_user_func_array($module . '_' . $hook, $args); + $function = $module . '_' . $hook; + switch (func_num_args() - 2) { + case 1: return $function($a1); + case 2: return $function($a1, $a2); + case 3: return $function($a1, $a2, $a3); + case 4: return $function($a1, $a2, $a3, $a4); + case 5: return $function($a1, $a2, $a3, $a4, $a5); + case 6: return $function($a1, $a2, $a3, $a4, $a5, $a6); + case 7: return $function($a1, $a2, $a3, $a4, $a5, $a6, $a7); + } } } /** @@ -505,15 +510,21 @@ function module_invoke() { * An array of return values of the hook implementations. If modules return * arrays from their implementations, those are merged into one array. */ -function module_invoke_all() { - $args = func_get_args(); - $hook = $args[0]; - unset($args[0]); +function module_invoke_all($hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = NULL, $a5 = NULL, $a6 = NULL, $a7 = NULL) { $return = array(); foreach (module_implements($hook) as $module) { $function = $module . '_' . $hook; if (function_exists($function)) { - $result = call_user_func_array($function, $args); + switch (func_num_args() - 1) { + case 0: $result = $function(); break; + case 1: $result = $function($a1); break; + case 2: $result = $function($a1, $a2); break; + case 3: $result = $function($a1, $a2, $a3); break; + case 4: $result = $function($a1, $a2, $a3, $a4); break; + case 5: $result = $function($a1, $a2, $a3, $a4, $a5); break; + case 6: $result = $function($a1, $a2, $a3, $a4, $a5, $a6); break; + case 7: $result = $function($a1, $a2, $a3, $a4, $a5, $a6, $a7); break; + } if (isset($result) && is_array($result)) { $return = array_merge_recursive($return, $result); }