[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Joomla! Content Management System 5 * 6 * @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org> 7 * @license GNU General Public License version 2 or later; see LICENSE 8 */ 9 10 namespace Joomla\CMS\Error\Renderer; 11 12 use Joomla\Application\WebApplicationInterface; 13 use Joomla\CMS\Error\JsonApi\AuthenticationFailedExceptionHandler; 14 use Joomla\CMS\Error\JsonApi\CheckinCheckoutExceptionHandler; 15 use Joomla\CMS\Error\JsonApi\InvalidParameterExceptionHandler; 16 use Joomla\CMS\Error\JsonApi\InvalidRouteExceptionHandler; 17 use Joomla\CMS\Error\JsonApi\NotAcceptableExceptionHandler; 18 use Joomla\CMS\Error\JsonApi\NotAllowedExceptionHandler; 19 use Joomla\CMS\Error\JsonApi\ResourceNotFoundExceptionHandler; 20 use Joomla\CMS\Error\JsonApi\SaveExceptionHandler; 21 use Joomla\CMS\Error\JsonApi\SendEmailExceptionHandler; 22 use Joomla\CMS\Factory; 23 use Tobscure\JsonApi\ErrorHandler; 24 use Tobscure\JsonApi\Exception\Handler\FallbackExceptionHandler; 25 use Tobscure\JsonApi\Exception\Handler\ResponseBag; 26 27 // phpcs:disable PSR1.Files.SideEffects 28 \defined('JPATH_PLATFORM') or die; 29 // phpcs:enable PSR1.Files.SideEffects 30 31 /** 32 * JSON error page renderer 33 * 34 * @since 4.0.0 35 */ 36 class JsonapiRenderer extends JsonRenderer 37 { 38 /** 39 * The format (type) of the error page 40 * 41 * @var string 42 * @since 4.0.0 43 */ 44 protected $type = 'jsonapi'; 45 46 /** 47 * Render the error page for the given object 48 * 49 * @param \Throwable $error The error object to be rendered 50 * 51 * @return string 52 * 53 * @since 4.0.0 54 */ 55 public function render(\Throwable $error): string 56 { 57 if ($error instanceof \Exception) { 58 $errors = new ErrorHandler(); 59 60 $errors->registerHandler(new InvalidRouteExceptionHandler()); 61 $errors->registerHandler(new AuthenticationFailedExceptionHandler()); 62 $errors->registerHandler(new NotAcceptableExceptionHandler()); 63 $errors->registerHandler(new NotAllowedExceptionHandler()); 64 $errors->registerHandler(new InvalidParameterExceptionHandler()); 65 $errors->registerHandler(new ResourceNotFoundExceptionHandler()); 66 $errors->registerHandler(new SaveExceptionHandler()); 67 $errors->registerHandler(new CheckinCheckoutExceptionHandler()); 68 $errors->registerHandler(new SendEmailExceptionHandler()); 69 $errors->registerHandler(new FallbackExceptionHandler(JDEBUG)); 70 71 $response = $errors->handle($error); 72 } else { 73 $code = 500; 74 $errorInfo = ['code' => $code, 'title' => 'Internal server error']; 75 76 if (JDEBUG) { 77 $errorInfo['detail'] = (string) $error; 78 } 79 80 $response = new ResponseBag($code, $errorInfo); 81 } 82 83 $this->getDocument()->setErrors($response->getErrors()); 84 $app = Factory::getApplication(); 85 86 if ($app instanceof WebApplicationInterface) { 87 $app->setHeader('status', $response->getStatus()); 88 } 89 90 if (ob_get_contents()) { 91 ob_end_clean(); 92 } 93 94 return $this->getDocument()->render(); 95 } 96 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |