Application.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\App;
  3. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\AppControllers\Http;
  4. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\AppControllers\Addon;
  5. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\AppControllers\Api;
  6. use \ModulesGarden\ProxmoxAddon\Core\ServiceLocator;
  7. class Application
  8. {
  9. public function run($callerName = null, $params = null)
  10. {
  11. try
  12. {
  13. $controller = $this->getControllerClass($callerName);
  14. $controllerInstance = ServiceLocator::call($controller);
  15. $result = $controllerInstance->runController($callerName, $params);
  16. return $result;
  17. }
  18. catch (\Exception $exc)
  19. {
  20. $errorPage = ServiceLocator::call(Controllers\Instances\Http\ErrorPage::class);
  21. $params['mgErrorDetails'] = $exc;
  22. $result = $errorPage->execute($params);
  23. return $result;
  24. }
  25. }
  26. public function getControllerClass($callerName = null)
  27. {
  28. $functionName = str_replace($this->getModuleName() . '_', '', $callerName);
  29. switch ($functionName)
  30. {
  31. //HTTP controllers
  32. case 'output':
  33. return Http::class;
  34. case 'clientarea':
  35. return Http::class;
  36. //API controller
  37. case 'api':
  38. return Api::class;
  39. //Addon controllers
  40. default:
  41. return Addon::class;
  42. }
  43. }
  44. public function getModuleName()
  45. {
  46. return 'proxmoxAddon';
  47. }
  48. }