2009-09-28 05:15:19 +00:00
|
|
|
<?php
|
|
|
|
/**
|
2012-06-30 21:09:54 +00:00
|
|
|
* @package Joomla.Administrator
|
|
|
|
* @subpackage com_languages
|
|
|
|
*
|
2020-11-28 01:33:45 +00:00
|
|
|
* @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
|
2012-06-30 21:09:54 +00:00
|
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
2009-09-28 05:15:19 +00:00
|
|
|
*/
|
2018-08-10 04:22:52 +00:00
|
|
|
|
2017-05-13 17:05:05 +00:00
|
|
|
namespace Joomla\Component\Languages\Administrator\Controller;
|
2009-09-28 05:15:19 +00:00
|
|
|
|
2020-03-24 22:21:49 +00:00
|
|
|
\defined('_JEXEC') or die;
|
2009-09-28 05:15:19 +00:00
|
|
|
|
2018-08-06 14:48:56 +00:00
|
|
|
use Joomla\CMS\Factory;
|
2021-07-26 19:34:08 +00:00
|
|
|
use Joomla\CMS\Language\LanguageHelper;
|
2018-10-19 04:46:15 +00:00
|
|
|
use Joomla\CMS\Language\Language;
|
2019-04-05 12:49:50 +00:00
|
|
|
use Joomla\CMS\Language\Multilanguage;
|
2018-10-19 04:46:15 +00:00
|
|
|
use Joomla\CMS\Language\Text;
|
|
|
|
use Joomla\CMS\MVC\Controller\BaseController;
|
2017-05-13 17:05:05 +00:00
|
|
|
|
2009-09-28 05:15:19 +00:00
|
|
|
/**
|
2014-10-12 10:59:19 +00:00
|
|
|
* Languages Controller.
|
2009-09-28 05:15:19 +00:00
|
|
|
*
|
2014-10-12 15:13:02 +00:00
|
|
|
* @since 1.5
|
2009-09-28 05:15:19 +00:00
|
|
|
*/
|
2017-09-20 11:51:48 +00:00
|
|
|
class InstalledController extends BaseController
|
2009-09-28 05:15:19 +00:00
|
|
|
{
|
|
|
|
/**
|
2014-10-12 10:59:19 +00:00
|
|
|
* Task to set the default language.
|
|
|
|
*
|
|
|
|
* @return void
|
2009-09-28 05:15:19 +00:00
|
|
|
*/
|
2012-07-17 22:43:09 +00:00
|
|
|
public function setDefault()
|
2009-09-28 05:15:19 +00:00
|
|
|
{
|
2014-10-12 10:59:19 +00:00
|
|
|
// Check for request forgeries.
|
2018-09-03 17:19:29 +00:00
|
|
|
$this->checkToken();
|
2012-07-13 14:24:46 +00:00
|
|
|
|
2022-03-29 13:27:09 +00:00
|
|
|
$cid = (string) $this->input->get('cid', '', 'string');
|
2010-06-23 17:54:28 +00:00
|
|
|
$model = $this->getModel('installed');
|
2014-10-12 10:59:19 +00:00
|
|
|
|
2010-01-31 16:41:46 +00:00
|
|
|
if ($model->publish($cid))
|
2009-09-28 05:15:19 +00:00
|
|
|
{
|
2016-02-18 13:59:12 +00:00
|
|
|
// Switching to the new administrator language for the message
|
2016-02-19 07:20:39 +00:00
|
|
|
if ($model->getState('client_id') == 1)
|
2016-02-18 13:59:12 +00:00
|
|
|
{
|
2018-08-06 14:48:56 +00:00
|
|
|
$language = Factory::getLanguage();
|
|
|
|
$newLang = Language::getInstance($cid);
|
|
|
|
Factory::$language = $newLang;
|
2022-06-27 15:49:45 +00:00
|
|
|
$this->app->loadLanguage($language = $newLang);
|
2016-02-18 13:59:12 +00:00
|
|
|
$newLang->load('com_languages', JPATH_ADMINISTRATOR);
|
|
|
|
}
|
2016-02-18 13:26:36 +00:00
|
|
|
|
2019-03-18 12:36:41 +00:00
|
|
|
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';
|
|
|
|
}
|
2009-09-28 05:15:19 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2016-09-22 11:57:42 +00:00
|
|
|
$msg = $model->getError();
|
2009-09-28 05:15:19 +00:00
|
|
|
$type = 'error';
|
|
|
|
}
|
2012-09-09 17:21:23 +00:00
|
|
|
|
2016-02-19 08:54:27 +00:00
|
|
|
$clientId = $model->getState('client_id');
|
2016-09-22 11:57:42 +00:00
|
|
|
$this->setRedirect('index.php?option=com_languages&view=installed&client=' . $clientId, $msg, $type);
|
2009-09-28 05:15:19 +00:00
|
|
|
}
|
2016-02-15 09:02:18 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Task to switch the administrator language.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function switchAdminLanguage()
|
|
|
|
{
|
|
|
|
// Check for request forgeries.
|
2018-09-03 17:19:29 +00:00
|
|
|
$this->checkToken();
|
2016-02-15 09:02:18 +00:00
|
|
|
|
2022-03-29 13:27:09 +00:00
|
|
|
$cid = (string) $this->input->get('cid', '', 'string');
|
2016-02-15 09:02:18 +00:00
|
|
|
$model = $this->getModel('installed');
|
|
|
|
|
2019-12-14 09:24:26 +00:00
|
|
|
// Fetching the language name from the langmetadata.xml or xx-XX.xml respectively.
|
|
|
|
$file = JPATH_ADMINISTRATOR . '/language/' . $cid . '/langmetadata.xml';
|
2019-01-21 18:21:29 +00:00
|
|
|
|
|
|
|
if (!is_file($file))
|
|
|
|
{
|
2019-12-14 09:24:26 +00:00
|
|
|
$file = JPATH_ADMINISTRATOR . '/language/' . $cid . '/' . $cid . '.xml';
|
2019-01-21 18:21:29 +00:00
|
|
|
}
|
|
|
|
|
2022-03-29 13:27:09 +00:00
|
|
|
$info = LanguageHelper::parseXMLLanguageFile($file);
|
2016-02-17 11:31:44 +00:00
|
|
|
|
2016-02-15 09:02:18 +00:00
|
|
|
if ($model->switchAdminLanguage($cid))
|
|
|
|
{
|
2016-02-18 13:26:36 +00:00
|
|
|
// Switching to the new language for the message
|
2022-03-29 13:27:09 +00:00
|
|
|
$languageName = $info['nativeName'];
|
2018-08-06 14:48:56 +00:00
|
|
|
$language = Factory::getLanguage();
|
|
|
|
$newLang = Language::getInstance($cid);
|
|
|
|
Factory::$language = $newLang;
|
2022-06-27 15:49:45 +00:00
|
|
|
$this->app->loadLanguage($language = $newLang);
|
2016-02-18 13:26:36 +00:00
|
|
|
$newLang->load('com_languages', JPATH_ADMINISTRATOR);
|
|
|
|
|
2018-08-06 14:48:56 +00:00
|
|
|
$msg = Text::sprintf('COM_LANGUAGES_MSG_SWITCH_ADMIN_LANGUAGE_SUCCESS', $languageName);
|
2016-02-15 09:02:18 +00:00
|
|
|
$type = 'message';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2016-09-22 11:57:42 +00:00
|
|
|
$msg = $model->getError();
|
2016-02-15 09:02:18 +00:00
|
|
|
$type = 'error';
|
|
|
|
}
|
|
|
|
|
2016-09-22 11:57:42 +00:00
|
|
|
$this->setRedirect('index.php?option=com_languages&view=installed', $msg, $type);
|
2016-02-15 09:02:18 +00:00
|
|
|
}
|
2009-09-28 05:15:19 +00:00
|
|
|
}
|