first commit
This commit is contained in:
155
components/com_convertforms/models/submission.php
Normal file
155
components/com_convertforms/models/submission.php
Normal file
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Convert Forms
|
||||
* @version 3.2.12 Free
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/conversion.php';
|
||||
|
||||
class ConvertFormsModelSubmission extends ConvertFormsModelConversion
|
||||
{
|
||||
/**
|
||||
* Application Object
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
private $app;
|
||||
|
||||
/**
|
||||
* Active Menu Item
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
public $menu;
|
||||
|
||||
/**
|
||||
* Submissions filter options and params;
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
public $options;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->app = JFactory::getApplication();
|
||||
$this->menu = $this->app->getMenu()->getActive();
|
||||
$this->options = isset($config['options']) ? new Registry($config['options']) : $this->menu->getParams();
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Submission Data
|
||||
*
|
||||
* @param object $pk The submission's primary key
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function getItem($pk = null, $prepare = true)
|
||||
{
|
||||
$item = parent::getItem($pk, $prepare);
|
||||
|
||||
if (!$item->id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($item->prepared_fields))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$item->fields = $item->prepared_fields;
|
||||
|
||||
$hide_empty_values = (bool) $this->options->get('hide_empty_values', false);
|
||||
|
||||
foreach ($item->fields as $key => $field)
|
||||
{
|
||||
if ($hide_empty_values && (is_null($field->value_html) || $field->value_html == ''))
|
||||
{
|
||||
unset($item->fields[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
public function authorize()
|
||||
{
|
||||
// Verify we are browsing a submission that belongs the form selected in the menu item settings
|
||||
if (!$this->submissionBelongsToSelectedForm())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$filter_submitters = $this->options->get('filter_user', 'current');
|
||||
$view_own_only = $filter_submitters == 'current' ? true : (bool) $this->options->get('view_own_only', true);
|
||||
|
||||
// User is allowed to see all submissions
|
||||
if (!$view_own_only)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Deny access, if user is not logged-in
|
||||
if (!$user_id = JFactory::getUser()->id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$submission_user_id = (int) $this->getItem()->user_id;
|
||||
|
||||
if ($filter_submitters == 'current' && $user_id != $submission_user_id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ($filter_submitters == 'users')
|
||||
{
|
||||
$filter_users = explode(',', $this->options->get('users'));
|
||||
|
||||
if (!in_array($user_id, $filter_users))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify we are browsing a submission that belongs the form selected in the menu item settings
|
||||
*
|
||||
* @return mixed Null on failure, string on success
|
||||
*/
|
||||
private function submissionBelongsToSelectedForm()
|
||||
{
|
||||
$db = JFactory::getDbo();
|
||||
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('id'))
|
||||
->from($db->quoteName('#__convertforms_conversions'))
|
||||
->where($db->quoteName('id') . ' = '. (int) $this->app->input->get('id'))
|
||||
->where($db->quoteName('form_id') . ' = ' . (int) $this->options->get('form_id'));
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return $db->loadResult();
|
||||
}
|
||||
|
||||
public function getMenu()
|
||||
{
|
||||
return $this->menu;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user