<?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\MVC\Model\AdminModel;
use Joomla\CMS\Factory;
class RsformModelBackupscreen extends AdminModel
{
protected $_data;
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_rsform.backupscreen', 'backupscreen', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{
return false;
}
return $form;
}
protected function loadFormData()
{
$data = array(
'name' => RSFormProHelper::getConfig('backup.mask')
);
return $data;
}
protected function _buildQuery()
{
$db = $this->getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('FormId'))
->select($db->qn('FormTitle'))
->select($db->qn('FormName'))
->select($db->qn('Lang'))
->from($db->qn('#__rsform_forms'))
->order($db->qn($this->getSortColumn()).' '.$db->escape($this->getSortOrder()));
return $query;
}
public function getForms()
{
if (empty($this->_data))
{
$db = $this->getDbo();
$this->_data = $this->_getList($this->_buildQuery());
// Count submissions
$query = $db->getQuery(true)
->select('COUNT(' . $db->qn('SubmissionId') . ') AS ' . $db->qn('total'))
->select($db->qn('FormId'))
->from($db->qn('#__rsform_submissions'))
->group($db->qn('FormId'));
$allSubmissions = $db->setQuery($query)->loadObjectList('FormId');
foreach ($this->_data as $i => $row)
{
$lang = RSFormProHelper::getCurrentLanguage($row->FormId);
if ($lang != $row->Lang)
{
if ($translations = RSFormProHelper::getTranslations('forms', $row->FormId, $lang))
{
foreach ($translations as $field => $value)
{
if (isset($row->{$field}))
{
$row->{$field} = $value;
}
}
}
}
$row->_allSubmissions = isset($allSubmissions[$row->FormId]) ? $allSubmissions[$row->FormId]->total : 0;
}
}
return $this->_data;
}
public function getSortColumn()
{
return Factory::getApplication()->getUserStateFromRequest('com_rsform.forms.filter_order', 'filter_order', 'FormId', 'word');
}
public function getSortOrder()
{
return Factory::getApplication()->getUserStateFromRequest('com_rsform.forms.filter_order_Dir', 'filter_order_Dir', 'ASC', 'word');
}
public function getIsWritable()
{
return is_writable($this->getTempDir());
}
public function getTempDir()
{
return Factory::getApplication()->get('tmp_path');
}
}