Application.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\App;
  3. use \ThurData\Servers\KerioEmail\Core\App\Controllers\AppControllers\Http;
  4. use \ThurData\Servers\KerioEmail\Core\App\Controllers\AppControllers\Addon;
  5. use \ThurData\Servers\KerioEmail\Core\App\Controllers\AppControllers\Api;
  6. use \ThurData\Servers\KerioEmail\Core\ServiceLocator;
  7. use function \ThurData\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. logModuleCall(
  37. 'kerioEmail',
  38. __FUNCTION__,
  39. $params,
  40. 'Debug',
  41. $whmcsParams
  42. );
  43. }
  44. public function getControllerClass($callerName = null)
  45. {
  46. $functionName = str_replace($this->getModuleName() . '_', '', $callerName);
  47. switch ($functionName)
  48. {
  49. //HTTP controllers
  50. case 'output':
  51. return Http::class;
  52. case 'clientarea':
  53. return Http::class;
  54. //API controller
  55. case 'api':
  56. return Api::class;
  57. //Addon controllers
  58. default:
  59. return Addon::class;
  60. }
  61. }
  62. public function getModuleName ()
  63. {
  64. return 'KerioEmail';
  65. }
  66. }