Files
conservatorio-tomadini/administrator/components/com_jem/models/fields/venueoptions.php
2024-12-17 17:34:10 +01:00

79 lines
1.7 KiB
PHP

<?php
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
defined('JPATH_BASE') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Field\ListField;
use Joomla\CMS\Form\FormHelper;
FormHelper::loadFieldClass('list');
/**
* Field: Venueoptions
*/
class JFormFieldVenueoptions extends ListField
{
/**
* A venue list
*/
public $type = 'Venueoptions';
/**
* @return array The field option objects.
*/
protected function getOptions()
{
// Initialise variables.
$options = array();
$published = $this->element['published']? $this->element['published'] : array(0,1);
$name = (string) $this->element['name'];
// Let's get the id for the current item
$jinput = Factory::getApplication()->input;
// Create SQL
$db = Factory::getContainer()->get('DatabaseDriver');
$query = $db->getQuery(true);
$query->select('l.id AS value, l.venue AS text, l.published');
$query->from('#__jem_venues AS l');
// Filter on the published state
if (is_numeric($published))
{
$query->where('l.published = ' . (int) $published);
}
elseif (is_array($published))
{
\Joomla\Utilities\ArrayHelper::toInteger($published);
$query->where('l.published IN (' . implode(',', $published) . ')');
}
$query->group('l.id');
$query->order('l.venue');
// Get the options.
$db->setQuery($query);
try
{
$options = $db->loadObjectList();
}
catch (RuntimeException $e)
{
Factory::getApplication()->enqueueMessage($e->getMessage, 'warning');
}
// Merge any additional options in the XML definition.
$options = array_merge(parent::getOptions(), $options);
return $options;
}
}