1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-09 16:17:48 +02:00

Plugins: Use call_user_func_array

This commit is contained in:
Jakub Vrana
2025-03-23 20:15:04 +01:00
parent d6a417fa58
commit 8db8b7a10d

View File

@@ -47,34 +47,15 @@ class Plugins extends Adminer {
return call_user_func_array(array('parent', $function), $args); return call_user_func_array(array('parent', $function), $args);
} }
private function applyPlugin($function, $args) { private function applyPlugin($function, $params) {
$args = array();
foreach ($params as $key => $val) {
// some plugins accept params by reference - we don't need to propage it outside, just to the other plugins
$args[] = &$params[$key];
}
foreach ($this->plugins as $plugin) { foreach ($this->plugins as $plugin) {
if (method_exists($plugin, $function)) { if (method_exists($plugin, $function)) {
switch (count($args)) { // call_user_func_array() doesn't work well with references $return = call_user_func_array(array($plugin, $function), $args);
case 0:
$return = $plugin->$function();
break;
case 1:
$return = $plugin->$function($args[0]);
break;
case 2:
$return = $plugin->$function($args[0], $args[1]);
break;
case 3:
$return = $plugin->$function($args[0], $args[1], $args[2]);
break;
case 4:
$return = $plugin->$function($args[0], $args[1], $args[2], $args[3]);
break;
case 5:
$return = $plugin->$function($args[0], $args[1], $args[2], $args[3], $args[4]);
break;
case 6:
$return = $plugin->$function($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
break;
default:
trigger_error('Too many parameters.', E_USER_WARNING);
}
if ($return !== null) { if ($return !== null) {
return $return; return $return;
} }