2 namespace wcf\acp\form
;
3 use wcf\data\language\Language
;
4 use wcf\data\language\LanguageEditor
;
5 use wcf\form\AbstractForm
;
6 use wcf\system\exception\SystemException
;
7 use wcf\system\exception\UserInputException
;
8 use wcf\system\language\LanguageFactory
;
10 use wcf\system\WCFACP
;
14 * Shows the language import form.
17 * @copyright 2001-2018 WoltLab GmbH
18 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
19 * @package WoltLabSuite\Core\Acp\Form
21 class LanguageImportForm
extends AbstractForm
{
25 public $activeMenuItem = 'wcf.acp.menu.link.language.import';
30 public $neededPermissions = ['admin.language.canManageLanguage'];
36 public $filename = '';
45 * list of available languages
48 public $languages = [];
51 * source language object
54 public $sourceLanguage;
60 public $sourceLanguageID = 0;
65 public function readParameters() {
66 parent
::readParameters();
68 $this->languages
= LanguageFactory
::getInstance()->getLanguages();
74 public function readFormParameters() {
75 parent
::readFormParameters();
77 if (isset($_FILES['languageUpload']) && !empty($_FILES['languageUpload']['tmp_name'])) {
78 $this->filename
= $_FILES['languageUpload']['tmp_name'];
80 if (isset($_POST['sourceLanguageID'])) $this->sourceLanguageID
= intval($_POST['sourceLanguageID']);
86 public function validate() {
90 if (!file_exists($this->filename
)) {
91 throw new UserInputException('languageUpload');
94 if (empty($this->sourceLanguageID
)) {
95 throw new UserInputException('sourceLanguageID');
99 $this->sourceLanguage
= LanguageFactory
::getInstance()->getLanguage($this->sourceLanguageID
);
100 if (!$this->sourceLanguage
->languageID
) {
101 throw new UserInputException('sourceLanguageID');
108 $xml->load($this->filename
);
110 // import xml document
111 $this->language
= LanguageEditor
::importFromXML($xml, -1, $this->sourceLanguage
);
114 if (!isset($this->languages
[$this->language
->languageID
])) {
115 LanguageEditor
::copyLanguageContent($this->sourceLanguage
->languageID
, $this->language
->languageID
);
118 catch (SystemException
$e) {
119 throw new UserInputException('languageUpload', $e->getMessage());
126 public function save() {
129 LanguageFactory
::getInstance()->clearCache();
130 LanguageFactory
::getInstance()->deleteLanguageCache();
134 $this->sourceLanguageID
= 0;
136 // show success message
137 WCF
::getTPL()->assign('success', true);
143 public function assignVariables() {
144 parent
::assignVariables();
146 WCF
::getTPL()->assign([
147 'languages' => $this->languages
,
148 'sourceLanguageID' => $this->sourceLanguageID
155 public function show() {
156 // check master password
157 WCFACP
::checkMasterPassword();