Files
liceo-ariosto/administrator/components/com_languages/src/Field/LanguageclientField.php
2025-06-17 11:53:18 +02:00

81 lines
2.1 KiB
PHP

<?php
/**
* @package Joomla.Administrator
* @subpackage com_languages
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Component\Languages\Administrator\Field;
use Joomla\CMS\Form\Field\ListField;
use Joomla\CMS\Language\LanguageHelper;
use Joomla\CMS\Language\Text;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* Client Language List field.
*
* @since 3.9.0
*/
class LanguageclientField extends ListField
{
/**
* The form field type.
*
* @var string
* @since 3.9.0
*/
protected $type = 'Languageclient';
/**
* Cached form field options.
*
* @var array
* @since 3.9.0
*/
protected $cache = [];
/**
* Method to get the field options.
*
* @return array The field option objects.
*
* @since 3.9.0
*/
protected function getOptions()
{
// Try to load the data from our mini-cache.
if (!empty($this->cache)) {
return $this->cache;
}
// Get all languages of frontend and backend.
$languages = [];
$site_languages = LanguageHelper::getKnownLanguages(JPATH_SITE);
$admin_languages = LanguageHelper::getKnownLanguages(JPATH_ADMINISTRATOR);
// Create a single array of them.
foreach ($site_languages as $tag => $language) {
$languages[$tag . '0'] = Text::sprintf('COM_LANGUAGES_VIEW_OVERRIDES_LANGUAGES_BOX_ITEM', $language['name'], Text::_('JSITE'));
}
foreach ($admin_languages as $tag => $language) {
$languages[$tag . '1'] = Text::sprintf('COM_LANGUAGES_VIEW_OVERRIDES_LANGUAGES_BOX_ITEM', $language['name'], Text::_('JADMINISTRATOR'));
}
// Sort it by language tag and by client after that.
ksort($languages);
// Add the languages to the internal cache.
$this->cache = array_merge(parent::getOptions(), $languages);
return $this->cache;
}
}