]> git.joonet.de Git - adminer.git/commitdiff
Plugins: Use call_user_func_array
authorJakub Vrana <jakub@vrana.cz>
Sun, 23 Mar 2025 19:15:04 +0000 (20:15 +0100)
committerJakub Vrana <jakub@vrana.cz>
Sun, 23 Mar 2025 19:22:41 +0000 (20:22 +0100)
adminer/include/plugins.inc.php

index b72626ece91a836157300e3bb5f05d95dedd7913..b54924e9b08b09ee4d40d21cdf954a32d94745ad 100644 (file)
@@ -47,34 +47,15 @@ class Plugins extends Adminer {
                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) {
                        if (method_exists($plugin, $function)) {
-                               switch (count($args)) { // call_user_func_array() doesn't work well with references
-                                       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);
-                               }
+                               $return = call_user_func_array(array($plugin, $function), $args);
                                if ($return !== null) {
                                        return $return;
                                }