65 lines
1.3 KiB
PHP
65 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* @package solo
|
|
* @copyright Copyright (c)2014-2019 Nicholas K. Dionysopoulos / Akeeba Ltd
|
|
* @license GNU GPL version 3 or later
|
|
*/
|
|
|
|
namespace Solo\Controller;
|
|
|
|
class Json extends ControllerDefault
|
|
{
|
|
/**
|
|
* Always execute the 'json' task
|
|
*
|
|
* @param string $task
|
|
*
|
|
* @return boolean|null
|
|
*/
|
|
public function execute($task)
|
|
{
|
|
$this->input->set('task', 'json');
|
|
$task = 'json';
|
|
|
|
return parent::execute($task);
|
|
}
|
|
|
|
/**
|
|
* Handles API calls
|
|
*/
|
|
public function json()
|
|
{
|
|
// Use the model to parse the JSON message
|
|
if (function_exists('ob_start'))
|
|
{
|
|
@ob_start();
|
|
}
|
|
$sourceJSON = $this->input->get('json', null, 'raw');
|
|
|
|
// On some !@#$%^& servers where magic_quotes_gpc is On we might get extra slashes added
|
|
if (function_exists('get_magic_quotes_gpc'))
|
|
{
|
|
if (get_magic_quotes_gpc())
|
|
{
|
|
$sourceJSON = stripslashes($sourceJSON);
|
|
}
|
|
}
|
|
|
|
/** @var \Solo\Model\Json $model */
|
|
$model = $this->getModel();
|
|
$json = $model->execute($sourceJSON);
|
|
|
|
if (function_exists('ob_end_clean'))
|
|
{
|
|
@ob_end_clean();
|
|
}
|
|
|
|
// Just dump the JSON and tear down the application, without plugins executing
|
|
header('Content-type: text/plain');
|
|
header('Connection: close');
|
|
echo $json;
|
|
|
|
$this->container->application->close();
|
|
}
|
|
}
|