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-2016 WoltLab GmbH
18 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
19 * @package com.woltlab.wcf
20 * @subpackage acp.form
21 * @category Community Framework
23 class LanguageImportForm
extends AbstractForm
{
27 public $activeMenuItem = 'wcf.acp.menu.link.language.import';
32 public $neededPermissions = ['admin.language.canManageLanguage'];
38 public $filename = '';
47 * list of available languages
50 public $languages = [];
53 * source language object
56 public $sourceLanguage;
62 public $sourceLanguageID = 0;
67 public function readFormParameters() {
68 parent
::readFormParameters();
70 if (isset($_FILES['languageUpload']) && !empty($_FILES['languageUpload']['tmp_name'])) {
71 $this->filename
= $_FILES['languageUpload']['tmp_name'];
73 if (isset($_POST['sourceLanguageID'])) $this->sourceLanguageID
= intval($_POST['sourceLanguageID']);
79 public function validate() {
83 if (!file_exists($this->filename
)) {
84 throw new UserInputException('languageUpload');
87 if (empty($this->sourceLanguageID
)) {
88 throw new UserInputException('sourceLanguageID');
92 $this->sourceLanguage
= LanguageFactory
::getInstance()->getLanguage($this->sourceLanguageID
);
93 if (!$this->sourceLanguage
->languageID
) {
94 throw new UserInputException('sourceLanguageID');
101 $xml->load($this->filename
);
103 // import xml document
104 $this->language
= LanguageEditor
::importFromXML($xml, -1, $this->sourceLanguage
);
106 catch (SystemException
$e) {
107 throw new UserInputException('languageUpload', $e->getMessage());
114 public function save() {
117 LanguageFactory
::getInstance()->clearCache();
118 LanguageFactory
::getInstance()->deleteLanguageCache();
121 // show success message
122 WCF
::getTPL()->assign('success', true);
128 public function readData() {
131 $this->languages
= LanguageFactory
::getInstance()->getLanguages();
137 public function assignVariables() {
138 parent
::assignVariables();
140 WCF
::getTPL()->assign([
141 'languages' => $this->languages
,
142 'sourceLanguageID' => $this->sourceLanguageID
149 public function show() {
150 // check master password
151 WCFACP
::checkMasterPassword();