primo commit
This commit is contained in:
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_languages
|
||||
*
|
||||
* @copyright (C) 2009 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\Controller;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Language;
|
||||
use Joomla\CMS\Language\LanguageHelper;
|
||||
use Joomla\CMS\Language\Multilanguage;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\MVC\Controller\BaseController;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Languages Controller.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
class InstalledController extends BaseController
|
||||
{
|
||||
/**
|
||||
* Task to set the default language.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setDefault()
|
||||
{
|
||||
// Check for request forgeries.
|
||||
$this->checkToken();
|
||||
|
||||
$cid = (string) $this->input->get('cid', '', 'string');
|
||||
$model = $this->getModel('installed');
|
||||
|
||||
if ($model->publish($cid)) {
|
||||
// Switching to the new administrator language for the message
|
||||
if ($model->getState('client_id') == 1) {
|
||||
$language = Factory::getLanguage();
|
||||
$newLang = Language::getInstance($cid);
|
||||
Factory::$language = $newLang;
|
||||
$this->app->loadLanguage($language = $newLang);
|
||||
$newLang->load('com_languages', JPATH_ADMINISTRATOR);
|
||||
}
|
||||
|
||||
if (Multilanguage::isEnabled() && $model->getState('client_id') == 0) {
|
||||
$msg = Text::_('COM_LANGUAGES_MSG_DEFAULT_MULTILANG_SAVED');
|
||||
$type = 'message';
|
||||
} else {
|
||||
$msg = Text::_('COM_LANGUAGES_MSG_DEFAULT_LANGUAGE_SAVED');
|
||||
$type = 'message';
|
||||
}
|
||||
} else {
|
||||
$msg = $model->getError();
|
||||
$type = 'error';
|
||||
}
|
||||
|
||||
$clientId = $model->getState('client_id');
|
||||
$this->setRedirect('index.php?option=com_languages&view=installed&client=' . $clientId, $msg, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Task to switch the administrator language.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function switchAdminLanguage()
|
||||
{
|
||||
// Check for request forgeries.
|
||||
$this->checkToken();
|
||||
|
||||
$cid = (string) $this->input->get('cid', '', 'string');
|
||||
$model = $this->getModel('installed');
|
||||
|
||||
// Fetching the language name from the langmetadata.xml or xx-XX.xml respectively.
|
||||
$file = JPATH_ADMINISTRATOR . '/language/' . $cid . '/langmetadata.xml';
|
||||
|
||||
if (!is_file($file)) {
|
||||
$file = JPATH_ADMINISTRATOR . '/language/' . $cid . '/' . $cid . '.xml';
|
||||
}
|
||||
|
||||
$info = LanguageHelper::parseXMLLanguageFile($file);
|
||||
|
||||
if ($model->switchAdminLanguage($cid)) {
|
||||
// Switching to the new language for the message
|
||||
$languageName = $info['nativeName'];
|
||||
$language = Factory::getLanguage();
|
||||
$newLang = Language::getInstance($cid);
|
||||
Factory::$language = $newLang;
|
||||
$this->app->loadLanguage($language = $newLang);
|
||||
$newLang->load('com_languages', JPATH_ADMINISTRATOR);
|
||||
|
||||
$msg = Text::sprintf('COM_LANGUAGES_MSG_SWITCH_ADMIN_LANGUAGE_SUCCESS', $languageName);
|
||||
$type = 'message';
|
||||
} else {
|
||||
$msg = $model->getError();
|
||||
$type = 'error';
|
||||
}
|
||||
|
||||
$this->setRedirect('index.php?option=com_languages&view=installed', $msg, $type);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user