    public static function run() {
        //print_r(self::$hooks[$var]);
        $hooks = self::$hooks;
        $num_args = func_num_args();
        $args = func_get_args();
        // print_r($args);
        // if($num_args < 2)
        //     trigger_error("Insufficient arguments", E_USER_ERROR);

        // Hook name should always be first argument
        $hook_name = array_shift($args);

        if(!isset($hooks[$hook_name]))
            return; // No plugins have registered this hook
        // print_r($args[0]);
        // $args = (is_array($args))?$args[0]: $args;
        if (is_array($hooks[$hook_name])) {
            $val = '';
            foreach($hooks[$hook_name] as $func){
                if ($func != '') {
                    // $args = call_user_func_array($func, $args); //
                    $val .= $func((array)$args); 
                }else{
                    $val .= $args;
                }

            }
            return $val;
        }
        
    }

The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.