ErrorPage.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\App\Controllers\Instances\Http;
  3. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Interfaces\AdminArea;
  4. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Interfaces\ClientArea;
  5. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Instances\HttpController;
  6. class ErrorPage extends HttpController implements AdminArea, ClientArea
  7. {
  8. protected $templateName = 'errorPage';
  9. public function execute($params = null)
  10. {
  11. $this->setParams($params);
  12. $this->parseError();
  13. return $this->resolveResponse();
  14. }
  15. public function resolveResponse()
  16. {
  17. if ($this->getRequestValue('ajax') == '1')
  18. {
  19. return $this->resolveResponseAjax();
  20. }
  21. return $this->responseResolver->setResponse(\ModulesGarden\ProxmoxAddon\Core\Helper\view())
  22. ->setTemplateName($this->getTemplateName())
  23. ->setTemplateDir($this->getTemplateDir())
  24. ->setPageController($this)
  25. ->resolve();
  26. }
  27. public function parseError()
  28. {
  29. $err = $this->getParam('mgErrorDetails');
  30. if (!$err)
  31. {
  32. return null;
  33. }
  34. if (!($err instanceof \ModulesGarden\ProxmoxAddon\Core\HandlerError\Exceptions\Exception))
  35. {
  36. $nErr = new \ModulesGarden\ProxmoxAddon\Core\HandlerError\Exceptions\Exception(null, null, null, $err);
  37. $this->setParam('mgErrorDetails', $nErr);
  38. }
  39. $this->logError();
  40. }
  41. public function logError()
  42. {
  43. $err = $this->getParam('mgErrorDetails');
  44. /**
  45. * \ModulesGarden\ProxmoxAddon\Core\HandlerError\WhmcsLogsHandler
  46. */
  47. $logger = \ModulesGarden\ProxmoxAddon\Core\ServiceLocator::call('whmcsLogger');
  48. $logger->addModuleLogError($err);
  49. }
  50. public function resolveResponseAjax()
  51. {
  52. $err = $this->getParam('mgErrorDetails');
  53. if (!$err)
  54. {
  55. return null;
  56. }
  57. $ajaxData = (new \ModulesGarden\ProxmoxAddon\Core\UI\ResponseTemplates\DataJsonResponse($err->getDetailsToDisplay()))->setStatusError();
  58. return $this->responseResolver->setResponse($ajaxData->getFormatedResponse())
  59. ->setTemplateName($this->getTemplateName())
  60. ->setTemplateDir($this->getTemplateDir())
  61. ->setPageController($this)
  62. ->resolve();
  63. }
  64. }