Пример #1
0
 /**
  * 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();
             }
         }
     }
 }