/** * Invokes the class method stored on database * @param $Request The request object * @return void */ private static function InvokeMethod($Request) { //Check if the class exist in a file inside the controllers folder //Note the class_name must be same has the file name to prevent security issues $FileDirectory = dirname(dirname(__FILE__)) . "/controllers/" . $Request->Get->class_name . ".php"; if (file_exists($FileDirectory)) { require_once $FileDirectory; if (method_exists($Request->Get->class_name, $Request->Get->function_name)) { call_user_func(array($Request->Get->class_name, $Request->Get->function_name)); } else { Logger::Error("Request error: The requested function doesn't exist. Requested class_name:" . $Request->Get->class_name . " - function_name:" . $Request->Get->function_name); Dialog::RequestClassOrMethodNotExist(); } } else { $class = json_decode(json_encode(SystemQueries::GetClass($Request->Get->class_name))); if (count($class) === 0) { Logger::Error("Request error: The requested class_name doesn't exist. Requested class_name:" . $Request->Get->class_name . " - function_name:" . $Request->Get->function_name); Dialog::RequestClassOrMethodNotExist(); } else { if (is_callable(array($class->class_name, $Request->Get->function_name), true)) { try { eval("?>" . $class->class_code); if (method_exists($class->class_name, $Request->Get->function_name)) { call_user_func(array($class->class_name, $Request->Get->function_name)); } else { Logger::Error("Request error: The requested function doesn't exist. Requested class_name:" . $Request->Get->class_name . " - function_name:" . $Request->Get->function_name); Dialog::RequestClassOrMethodNotExist(); } } catch (Exception $e) { Logger::Error("Request error: The class code could not be interpreted at runtime. Please check that your code is free of errors. Requested class_name:" . $Request->Get->class_name . " - function_name:" . $Request->Get->function_name); Dialog::RequestRuntimeErrorOnCompilingCode(); } } else { Logger::Error("Request error: The requested function name can't be used to call a method. Requested class_name:" . $Request->Get->class_name . " - function_name:" . $Request->Get->function_name); Dialog::RequestClassOrMethodNotExist(); } } } }