<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
use Joomla\CMS\Table\Table;
class TableRSForm_Conditions extends Table
{
/**
* Primary Key
*
* @var int
*/
public $id;
public $form_id;
public $action;
public $block;
public $component_id;
public $condition;
public $lang_code;
protected $_jsonEncode = array('component_id');
/**
* Constructor
*
* @param object Database connector object
*/
public function __construct(& $db)
{
parent::__construct('#__rsform_conditions', 'id', $db);
}
public function load($keys = null, $reset = true)
{
$result = parent::load($keys, $reset);
if ($result)
{
require_once JPATH_ADMINISTRATOR . '/components/com_rsform/helpers/conditions.php';
$this->component_id = RSFormProConditions::parseComponentIds($this->component_id);
if ($this->id)
{
$db = $this->getDbo();
$query = $db->getQuery(true);
$query->select('*')
->from($db->qn('#__rsform_condition_details'))
->where($db->qn('condition_id') . ' = ' . $db->q($this->id));
$db->setQuery($query);
$this->details = $db->loadObjectList();
}
else
{
$this->details = array();
}
}
return $result;
}
public function save($src, $orderingFilter = '', $ignore = '')
{
$result = parent::save($src, $orderingFilter, $ignore);
if ($result)
{
$db = $this->getDbo();
// Delete previous condition details
$query = $db->getQuery(true)
->delete($db->qn('#__rsform_condition_details'))
->where($db->qn('condition_id') . ' = ' . $db->q($this->id));
$db->setQuery($query)
->execute();
if (isset($src['detail_component_id'], $src['operator'], $src['value']))
{
$component_ids = $src['detail_component_id'];
$operators = $src['operator'];
$values = $src['value'];
for ($i = 0; $i < count($component_ids); $i++)
{
if (!isset($component_ids[$i], $operators[$i], $values[$i]))
{
continue;
}
$detail = Table::getInstance('RSForm_Condition_Details', 'Table');
$detail->save(array(
'condition_id' => $this->id,
'component_id' => $component_ids[$i],
'operator' => $operators[$i],
'value' => $values[$i]
));
}
}
}
return $result;
}
public function delete($pk = null)
{
$result = parent::delete($pk);
if ($result)
{
$db = $this->getDbo();
$query = $db->getQuery(true)
->delete($db->qn('#__rsform_condition_details'))
->where($db->qn('condition_id') . ' = ' . $db->q($this->id));
$db->setQuery($query)
->execute();
}
return $result;
}
}