PluginProbe
Booking for Appointments and Events Calendar – Amelia / 2.4.2
Booking for Appointments and Events Calendar – Amelia v2.4.2
2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 All 59 releases
ameliabooking / src / Infrastructure / Common / AmeliaErrorHandler.php
AmeliaErrorHandler.php
45 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. All rights reserved.
5 * @licence See COPYING.md for license details.
6 */
7
8 namespace AmeliaBooking\Infrastructure\Common;
9
10 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
11 use AmeliaBooking\Application\Controller\Controller;
12 use AmeliaVendor\Psr\Http\Message\ResponseInterface;
13 use Slim\Exception\HttpException;
14 use Slim\Handlers\ErrorHandler;
15
16 class AmeliaErrorHandler extends ErrorHandler
17 {
18 protected function respond(): ResponseInterface
19 {
20 $exception = $this->exception;
21 $request = $this->request;
22
23 if ($exception instanceof AccessDeniedException) {
24 $status = Controller::STATUS_FORBIDDEN;
25 } elseif ($exception instanceof HttpException) {
26 $status = $exception->getCode();
27 } else {
28 $status = Controller::STATUS_INTERNAL_SERVER_ERROR;
29 }
30
31 $responseMessage = ['message' => $exception->getMessage()];
32
33 $queryParams = $request->getQueryParams();
34 if (!empty($queryParams['showAmeliaSqlExceptions'])) {
35 $prev = $exception->getPrevious();
36 $responseMessage['exception'] = $prev ? $prev->getMessage() : '';
37 }
38
39 $response = $this->responseFactory->createResponse($status);
40 $response->getBody()->write(json_encode($responseMessage));
41
42 return $response->withHeader('Content-Type', 'application/json');
43 }
44 }
45