| Current Path : /var/www/html/libraries/kunena/src/Response/ |
| Current File : /var/www/html/libraries/kunena/src/Response/KunenaResponseJson.php |
<?php
/**
* Kunena Component
*
* @package Kunena.Lib.Response
* @subpackage Json
*
* @copyright Copyright (C) 2008 - @currentyear@ Kunena Team. All rights reserved.
* @license https://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link https://www.kunena.org
**/
namespace Kunena\Forum\Libraries\Response;
\defined('_JEXEC') or die;
use Joomla\CMS\Response\JsonResponse;
/**
* Kunena JSON Response, extends Joomla\CMS\Response\JsonResponse.
*
* @since Kunena 6.0
*/
class KunenaResponseJson extends JsonResponse
{
/**
* @var integer
* @since Kunena 6.0
*/
public $code = 200;
/**
* @var string
* @since Kunena 6.0
*/
public $location;
/**
* Constructor
*
* @param mixed $response The Response data
* @param string $message The main response message
* @param boolean $error True, if the success flag shall be set to false, defaults to false
* @param boolean $ignoreMessages True, if the message queue shouldn't be included, defaults to false
*
* @since Kunena 6.0
*/
public function __construct($response = null, $message = null, $error = false, $ignoreMessages = false)
{
parent::__construct($response, $message, $error, $ignoreMessages);
if ($response instanceof \Throwable) {
$this->code = $response->getCode();
$exceptions = [];
$e = $response;
do {
$exception = [
'code' => $e->getCode(),
'message' => $e->getMessage(),
];
if (\defined('JDEBUG') && JDEBUG) {
$exception += [
'type' => \get_class($e),
'file' => $e->getFile(),
'line' => $e->getLine(),
];
}
$exceptions[] = $exception;
$e = $e->getPrevious();
} while (\defined('JDEBUG') && JDEBUG && $e);
$this->data = ['exceptions' => $exceptions];
}
// Empty output buffer with safety limit
$maxIterations = 10;
$iteration = 0;
while ($iteration++ < $maxIterations && ($output = ob_get_clean()) !== false) {
if ($output && \defined('JDEBUG') && JDEBUG) {
$this->messages['php'] = $this->messages['php'] ?? [];
$this->messages['php'][] = $output;
}
}
}
}