| Current Path : /proc/1908984/root/proc/2603263/cwd/ |
| Current File : //proc/1908984/root/proc/2603263/cwd/Response.tar |
JsonResponse.php 0000644 00000005143 15234437546 0007725 0 ustar 00 <?php
/**
* Joomla! Content Management System
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\CMS\Response;
defined('JPATH_PLATFORM') or die;
/**
* JSON Response class.
*
* This class serves to provide the Joomla Platform with a common interface to access
* response variables for e.g. Ajax requests.
*
* @since 3.1
*/
class JsonResponse
{
/**
* Determines whether the request was successful
*
* @var boolean
* @since 3.1
*/
public $success = true;
/**
* The main response message
*
* @var string
* @since 3.1
*/
public $message = null;
/**
* Array of messages gathered in the \JApplication object
*
* @var array
* @since 3.1
*/
public $messages = null;
/**
* The response data
*
* @var mixed
* @since 3.1
*/
public $data = null;
/**
* 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 3.1
*/
public function __construct($response = null, $message = null, $error = false, $ignoreMessages = false)
{
$this->message = $message;
// Get the message queue if requested and available
$app = \JFactory::getApplication();
if (!$ignoreMessages && $app !== null && is_callable(array($app, 'getMessageQueue')))
{
$messages = $app->getMessageQueue();
// Build the sorted messages list
if (is_array($messages) && count($messages))
{
foreach ($messages as $message)
{
if (isset($message['type']) && isset($message['message']))
{
$lists[$message['type']][] = $message['message'];
}
}
}
// If messages exist add them to the output
if (isset($lists) && is_array($lists))
{
$this->messages = $lists;
}
}
// Check if we are dealing with an error
if ($response instanceof \Exception || $response instanceof \Throwable)
{
// Prepare the error response
$this->success = false;
$this->message = $response->getMessage();
}
else
{
// Prepare the response data
$this->success = !$error;
$this->data = $response;
}
}
/**
* Magic toString method for sending the response in JSON format
*
* @return string The response in JSON format
*
* @since 3.1
*/
public function __toString()
{
return json_encode($this);
}
}
ResponseAjax.php 0000644 00000003451 15241254722 0007666 0 ustar 00 <?php
namespace Nextend\Framework\Response;
use Nextend\Framework\Application\AbstractApplicationType;
use Nextend\Framework\Notification\Notification;
use Nextend\Framework\PageFlow;
class ResponseAjax {
/**
* @var AbstractApplicationType
*/
private $appType;
private $isError = false;
private $response = array(
'data' => null,
'notification' => array()
);
public function __construct($appType) {
$this->appType = $appType;
}
public function error($showNotification = true) {
$this->isError = true;
$this->respond(null, $showNotification);
}
public function respond($data = null, $showNotification = true) {
$this->response['data'] = $data;
self::fix_output_buffer();
if ($showNotification) {
$this->response['notification'] = Notification::showAjax();
}
header("Content-Type: application/json");
if ($this->isError) {
header("HTTP/1.0 403 Forbidden");
}
echo json_encode($this->response);
PageFlow::exitApplication();
}
public function redirect($url) {
self::fix_output_buffer();
$this->response['redirect'] = $url;
echo json_encode($this->response);
PageFlow::exitApplication();
}
private static function fix_output_buffer() {
$ob_list_handlers = ob_list_handlers();
$ob_list_handlers_count = count($ob_list_handlers);
$exclude = array(
'ob_gzhandler',
'zlib output compression'
);
if ($ob_list_handlers_count && !in_array($ob_list_handlers[$ob_list_handlers_count - 1], $exclude)) {
ob_clean();
}
}
}