29
0
mirror of https://github.com/joomla/joomla-cms.git synced 2024-06-24 22:39:31 +00:00
cms/administrator/components/com_languages/src/Controller/InstalledController.php
Tuan Pham Ngoc e4f622c7dc
[4.2] Replace Factory::getApplication() by $this->app in component's controllers (#38103)
* Replace Factory::getApplication() by $this->app in component's controllers

* Remove un-used import. Thanks @Quy

Co-authored-by: Allon Moritz <allon.moritz@digital-peak.com>
Co-authored-by: Quy <quy@fluxbb.org>
Co-authored-by: Franciska Perisa <9084265+fancyFranci@users.noreply.github.com>
2022-06-27 17:49:45 +02:00

119 lines
3.0 KiB
PHP

<?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;
\defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\LanguageHelper;
use Joomla\CMS\Language\Language;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Controller\BaseController;
/**
* 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);
}
}