Application.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. logModuleCall(
  19. 'kerioEmail',
  20. __FUNCTION__,
  21. $callerName,
  22. 'Debug',
  23. $result
  24. );
  25. return $result;
  26. }
  27. catch (\Exception $exc)
  28. {
  29. $errorPage = ServiceLocator::call(Controllers\Instances\Http\ErrorPage::class);
  30. $params['mgErrorDetails'] = $exc;
  31. $result = $errorPage->execute($params);
  32. return $result;
  33. }
  34. }
  35. /**
  36. * Saves provided WHMCS params to WhmcsParams service
  37. * @param type array
  38. */
  39. protected function setWhmcsParams($params)
  40. {
  41. $whmcsParams = di('whmcsParams');
  42. $whmcsParams->setParams($params);
  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. }