50 lines
1.1 KiB
PHP
50 lines
1.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Joomla.Plugin
|
|
* @subpackage Fields.Sql
|
|
*
|
|
* @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\Database\ParameterType;
|
|
|
|
$value = $field->value;
|
|
|
|
if ($value == '') {
|
|
return;
|
|
}
|
|
|
|
$db = Factory::getDbo();
|
|
$value = (array) $value;
|
|
$query = $db->getQuery(true);
|
|
$sql = $fieldParams->get('query', '');
|
|
|
|
$bindNames = $query->bindArray($value, ParameterType::STRING);
|
|
|
|
// Run the query with a having condition because it supports aliases
|
|
$query->setQuery($sql . ' HAVING ' . $db->quoteName('value') . ' IN (' . implode(',', $bindNames) . ')');
|
|
|
|
try {
|
|
$db->setQuery($query);
|
|
$items = $db->loadObjectList();
|
|
} catch (Exception $e) {
|
|
// If the query failed, we fetch all elements
|
|
$db->setQuery($sql);
|
|
$items = $db->loadObjectList();
|
|
}
|
|
|
|
$texts = [];
|
|
|
|
foreach ($items as $item) {
|
|
if (in_array($item->value, $value)) {
|
|
$texts[] = $item->text;
|
|
}
|
|
}
|
|
|
|
echo htmlentities(implode(', ', $texts));
|