Migrates view HTML classes to use getModel() directly instead of the deprecated magic get() calls to model methods. Refactores event handling (contentPrepare, titlePrepare, contentBeforeDisplay, contentAfterDisplay) to use Joomla 5’s native event dispatcher via the model’s new getDispatcher() method. Updates table classes to properly support NULL values, both in the store() method and in table variable definitions. #1245. Extractes the setAutoCheckIn() and setCheckInCall() logic into a dedicated CheckInNow class for cleaner design. Replace all direct $app->input property calls with the recommended $app->getInput() method across the entire codebase.
125 lines
3.6 KiB
PHP
125 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* @package Joomla.Component.Builder
|
|
*
|
|
* @created 30th April, 2015
|
|
* @author Llewellyn van der Merwe <https://dev.vdm.io>
|
|
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
|
|
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
namespace VDM\Component\Componentbuilder\Administrator\Field;
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Form\Field\ListField;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\HTML\HTMLHelper as Html;
|
|
use Joomla\CMS\Component\ComponentHelper;
|
|
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
|
|
use VDM\Joomla\Utilities\GetHelper;
|
|
use VDM\Joomla\Utilities\GuidHelper;
|
|
use VDM\Joomla\Utilities\JsonHelper;
|
|
use VDM\Joomla\Utilities\ArrayHelper;
|
|
use Joomla\Database\DatabaseInterface;
|
|
|
|
// No direct access to this file
|
|
\defined('_JEXEC') or die;
|
|
|
|
/**
|
|
* Matchfield Form Field class for the Componentbuilder component
|
|
*
|
|
* @since 1.6
|
|
*/
|
|
class MatchfieldField extends ListField
|
|
{
|
|
/**
|
|
* The matchfield field type.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $type = 'Matchfield';
|
|
|
|
/**
|
|
* Method to get a list of options for a list input.
|
|
*
|
|
* @return array An array of Html options.
|
|
* @since 1.6
|
|
*/
|
|
protected function getOptions()
|
|
{
|
|
// load the db object
|
|
$db = Factory::getContainer()->get(DatabaseInterface::class);
|
|
// get the input from url
|
|
$jinput = Factory::getApplication()->getInput();
|
|
// get the id
|
|
$ID = $jinput->getInt('id', 0);
|
|
|
|
// rest the fields guids
|
|
$fieldGuids = [];
|
|
if (is_numeric($ID) && $ID >= 1)
|
|
{
|
|
// get the admin view ID
|
|
$adminView = GetHelper::var('admin_fields_conditions', (int) $ID, 'id', 'admin_view');
|
|
}
|
|
else
|
|
{
|
|
// get the admin view GUID
|
|
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
|
|
if (!empty($initDefaults))
|
|
{
|
|
$initDefaults = json_decode(urldecode($initDefaults), true);
|
|
$adminView = $initDefaults['admin_view'] ?? null;
|
|
}
|
|
}
|
|
|
|
// make sure we have the admin view GUID
|
|
if (GuidHelper::valid($adminView))
|
|
{
|
|
// get all the fields linked to the admin view
|
|
if ($addFields = GetHelper::var('admin_fields', $adminView, 'admin_view', 'addfields'))
|
|
{
|
|
if (JsonHelper::check($addFields))
|
|
{
|
|
$addFields = json_decode($addFields, true);
|
|
if (ArrayHelper::check($addFields))
|
|
{
|
|
foreach($addFields as $addField)
|
|
{
|
|
if (isset($addField['field']))
|
|
{
|
|
$fieldGuids[] = (string) $addField['field'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = $db->getQuery(true);
|
|
$query->select($db->quoteName(['a.guid','a.name','t.name'], ['guid','name','type']));
|
|
$query->from($db->quoteName('#__componentbuilder_field', 'a'));
|
|
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 't') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('t.guid') . ')');
|
|
$query->where($db->quoteName('a.published') . ' >= 1');
|
|
// filter by fields linked
|
|
if (ArrayHelper::check($fieldGuids))
|
|
{
|
|
// only load these fields
|
|
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $fieldGuids) . '")');
|
|
}
|
|
$query->order('a.name ASC');
|
|
$db->setQuery((string)$query);
|
|
$items = $db->loadObjectList();
|
|
$options = array();
|
|
if ($items)
|
|
{
|
|
$options[] = Html::_('select.option', '', 'Select an option');
|
|
foreach($items as $item)
|
|
{
|
|
$options[] = Html::_('select.option', $item->guid, $item->name . ' [' . $item->type . ']');
|
|
}
|
|
}
|
|
|
|
return $options;
|
|
}
|
|
}
|