Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla5/administrator/components/com_fabrik/models/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* Crons Admin Model
*
* @package Joomla.Administrator
* @subpackage Fabrik
* @copyright Copyright (C) 2005-2020 Media A-Team, Inc. - All rights
reserved.
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
* @since 1.6
*/
// No direct access
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Table\Table;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
require_once 'fabmodellist.php';
/**
* Crons Admin Model
*
* @package Joomla.Administrator
* @subpackage Fabrik
* @since 3.0
*/
class FabrikAdminModelCrons extends FabModelList
{
/**
* Constructor.
*
* @param array $config An optional associative array of configuration
settings.
*
* @see JController
* @since 1.6
*/
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = [
'c.id', 'id',
'c.label', 'label',
'c.published', 'published',
'c.frequency', 'frequency',
'c.lastrun', 'lastrun',
];
}
parent::__construct($config);
}
/**
* Build an SQL query to load the list data.
*
* @return JDatabaseQuery
*/
protected function getListQuery()
{
// Initialise variables.
$db = $this->getDbo();
$query = $db->getQuery(true);
// Select the required fields from the table.
$query->select($this->getState('list.select',
'c.*'));
$query->from('#__fabrik_cron AS c');
// Join over the users for the checked out user.
$query->select('u.name AS editor');
$query->join('LEFT', '#__users AS u ON checked_out =
u.id');
// calculate the frequency in seconds
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('c.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(c.published IN (0, 1))');
}
// Filter by search in title
$search = $this->getState('filter.search');
if (!empty($search))
{
$search = $db->quote('%' . $db->escape($search, true) .
'%');
$query->where('(c.label LIKE ' . $search . ')');
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering');
$orderDirn = $this->state->get('list.direction');
if ($orderCol == 'ordering' || $orderCol ==
'category_title')
{
$orderCol = 'category_title ' . $orderDirn . ',
ordering';
}
$query->order($db->escape($orderCol . ' ' . $orderDirn));
return $query;
}
/**
* Returns a reference to the a Table object, always creating it.
*
* @param string $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return Table A database object
*/
public function getTable($type = 'Cron', $prefix =
'FabrikTable', $config = array())
{
$config['dbo'] = FabrikWorker::getDbo();
return FabTable::getInstance($type, $prefix, $config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*/
protected function populateState($ordering = null, $direction = null)
{
// Initialise variables.
$app = Factory::getApplication('administrator');
// Load the parameters.
$params = ComponentHelper::getParams('com_fabrik');
$this->setState('params', $params);
// Load the filter state.
$search = $app->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
// Load the published state
$published = $app->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$state = $app->getUserStateFromRequest($this->context .
'.filter.state', 'filter_state', '',
'string');
$this->setState('filter.state', $state);
// List state information.
parent::populateState('name', 'asc');
}
}