Application.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace ModulesGarden\Servers\KerioEmail\Core\App;
  3. use \ModulesGarden\Servers\KerioEmail\Core\App\Controllers\AppControllers\Http;
  4. use \ModulesGarden\Servers\KerioEmail\Core\App\Controllers\AppControllers\Addon;
  5. use \ModulesGarden\Servers\KerioEmail\Core\App\Controllers\AppControllers\Api;
  6. use \ModulesGarden\Servers\KerioEmail\Core\ServiceLocator;
  7. use function \ModulesGarden\Servers\KerioEmail\Core\Helper\di;
  8. class Application
  9. {
  10. public function run($callerName = null, $params = null)
  11. {
  12. try
  13. {
  14. $this->setWhmcsParams($params);
  15. $controller = $this->getControllerClass($callerName);
  16. $controllerInstance = ServiceLocator::call($controller);
  17. $result = $controllerInstance->runController($callerName, $params);
  18. return $result;
  19. }
  20. catch (\Exception $exc)
  21. {
  22. $errorPage = ServiceLocator::call(Controllers\Instances\Http\ErrorPage::class);
  23. $params['mgErrorDetails'] = $exc;
  24. $result = $errorPage->execute($params);
  25. return $result;
  26. }
  27. }
  28. /**
  29. * Saves provided WHMCS params to WhmcsParams service
  30. * @param type array
  31. */
  32. protected function setWhmcsParams($params)
  33. {
  34. $whmcsParams = di('whmcsParams');
  35. $whmcsParams->setParams($params);
  36. }
  37. public function getControllerClass($callerName = null)
  38. {
  39. $functionName = str_replace($this->getModuleName() . '_', '', $callerName);
  40. switch ($functionName)
  41. {
  42. //HTTP controllers
  43. case 'output':
  44. return Http::class;
  45. case 'clientarea':
  46. return Http::class;
  47. //API controller
  48. case 'api':
  49. return Api::class;
  50. //Addon controllers
  51. default:
  52. return Addon::class;
  53. }
  54. }
  55. public function getModuleName ()
  56. {
  57. return 'KerioEmail';
  58. }
  59. }