100 lines
2.6 KiB
PHP
100 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* @package Conditions
|
|
* @version 24.11.1459
|
|
*
|
|
* @author Peter van Westen <info@regularlabs.com>
|
|
* @link https://regularlabs.com
|
|
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
|
|
* @license GNU General Public License version 2 or later
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory as JFactory;
|
|
use RegularLabs\Component\Conditions\Administrator\Helper\Summary;
|
|
use RegularLabs\Component\Conditions\Administrator\Model\ItemModel;
|
|
use RegularLabs\Library\Input as RL_Input;
|
|
|
|
if (JFactory::getApplication()->isClient('site'))
|
|
{
|
|
die();
|
|
}
|
|
|
|
echo (new Conditions)->render();
|
|
die;
|
|
|
|
class Conditions
|
|
{
|
|
private $extension = '';
|
|
private $message = '';
|
|
|
|
public function getCondition()
|
|
{
|
|
$id = RL_Input::getInt('id');
|
|
$enabled_types = RL_Input::getString('enabled_types');
|
|
|
|
if ($id)
|
|
{
|
|
return (new ItemModel)->getConditionById($id, false, $enabled_types);
|
|
}
|
|
|
|
$extension = RL_Input::getCmd('extension');
|
|
$item_id = RL_Input::getInt('item_id');
|
|
|
|
if ($extension && $item_id)
|
|
{
|
|
return (new ItemModel)->getConditionByExtensionItem($extension, $item_id, false, $enabled_types);
|
|
}
|
|
|
|
$data = [];
|
|
|
|
$form = RL_Input::getRaw('form', []);
|
|
|
|
foreach ($form as $key => $value)
|
|
{
|
|
$key = str_replace('jform[', '', $key);
|
|
$data[$key] = $value;
|
|
}
|
|
|
|
if (isset($data['extension']))
|
|
{
|
|
$this->extension = $data['extension'];
|
|
}
|
|
|
|
if (isset($data['message']))
|
|
{
|
|
$this->message = $data['message'];
|
|
}
|
|
|
|
if (isset($data['enabled_types']))
|
|
{
|
|
$enabled_types = $data['enabled_types'];
|
|
unset($data['enabled_types']);
|
|
}
|
|
|
|
return (new ItemModel)->getConditionFromData($data, $enabled_types);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
$condition = $this->getCondition();
|
|
|
|
$extension = $this->extension ?: RL_Input::getCmd('extension');
|
|
$message = $this->message ?: RL_Input::get('message', '');
|
|
|
|
if ($extension && $condition && $condition->published !== 1)
|
|
{
|
|
$condition = null;
|
|
}
|
|
|
|
return json_encode((object) [
|
|
'has_conditions' => ! empty($condition),
|
|
'id' => $condition->id ?? '',
|
|
'alias' => $condition->alias ?? '',
|
|
'name' => $condition->name ?? '',
|
|
'content' => Summary::render($condition, $extension, $message),
|
|
]);
|
|
}
|
|
}
|