Commit | Line | Data |
---|---|---|
bd70fec3 MW |
1 | <?php |
2 | namespace wcf\acp\form; | |
7a23a706 | 3 | use wcf\data\language\Language; |
bd70fec3 MW |
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; | |
9 | use wcf\system\WCF; | |
10 | use wcf\system\WCFACP; | |
11 | use wcf\util\XML; | |
12 | ||
13 | /** | |
14 | * Shows the language import form. | |
15 | * | |
16 | * @author Marcel Werk | |
7d739af0 | 17 | * @copyright 2001-2016 WoltLab GmbH |
bd70fec3 MW |
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 | |
22 | */ | |
23 | class LanguageImportForm extends AbstractForm { | |
24 | /** | |
0fcfe5f6 | 25 | * @inheritDoc |
bd70fec3 MW |
26 | */ |
27 | public $activeMenuItem = 'wcf.acp.menu.link.language.import'; | |
28 | ||
29 | /** | |
0fcfe5f6 | 30 | * @inheritDoc |
bd70fec3 | 31 | */ |
058cbd6a | 32 | public $neededPermissions = ['admin.language.canManageLanguage']; |
bd70fec3 MW |
33 | |
34 | /** | |
35 | * file name | |
36 | * @var string | |
37 | */ | |
38 | public $filename = ''; | |
39 | ||
40 | /** | |
d00afef8 MW |
41 | * language object |
42 | * @var Language | |
bd70fec3 | 43 | */ |
d00afef8 | 44 | public $language; |
bd70fec3 MW |
45 | |
46 | /** | |
d00afef8 MW |
47 | * list of available languages |
48 | * @var Language[] | |
bd70fec3 | 49 | */ |
d00afef8 | 50 | public $languages = []; |
bd70fec3 MW |
51 | |
52 | /** | |
d00afef8 MW |
53 | * source language object |
54 | * @var Language | |
bd70fec3 | 55 | */ |
d00afef8 | 56 | public $sourceLanguage; |
bd70fec3 MW |
57 | |
58 | /** | |
d00afef8 MW |
59 | * source language id |
60 | * @var integer | |
bd70fec3 | 61 | */ |
d00afef8 | 62 | public $sourceLanguageID = 0; |
bd70fec3 MW |
63 | |
64 | /** | |
0fcfe5f6 | 65 | * @inheritDoc |
bd70fec3 MW |
66 | */ |
67 | public function readFormParameters() { | |
68 | parent::readFormParameters(); | |
69 | ||
bd70fec3 | 70 | if (isset($_FILES['languageUpload']) && !empty($_FILES['languageUpload']['tmp_name'])) { |
bd70fec3 MW |
71 | $this->filename = $_FILES['languageUpload']['tmp_name']; |
72 | } | |
d00afef8 | 73 | if (isset($_POST['sourceLanguageID'])) $this->sourceLanguageID = intval($_POST['sourceLanguageID']); |
bd70fec3 MW |
74 | } |
75 | ||
76 | /** | |
0fcfe5f6 | 77 | * @inheritDoc |
bd70fec3 MW |
78 | */ |
79 | public function validate() { | |
80 | parent::validate(); | |
81 | ||
82 | // check file | |
83 | if (!file_exists($this->filename)) { | |
d00afef8 MW |
84 | throw new UserInputException('languageUpload'); |
85 | } | |
86 | ||
87 | if (empty($this->sourceLanguageID)) { | |
88 | throw new UserInputException('sourceLanguageID'); | |
89 | } | |
90 | ||
91 | // get language | |
92 | $this->sourceLanguage = LanguageFactory::getInstance()->getLanguage($this->sourceLanguageID); | |
93 | if (!$this->sourceLanguage->languageID) { | |
94 | throw new UserInputException('sourceLanguageID'); | |
bd70fec3 | 95 | } |
da13ec66 | 96 | |
bd70fec3 MW |
97 | // try to import |
98 | try { | |
99 | // open xml document | |
100 | $xml = new XML(); | |
101 | $xml->load($this->filename); | |
da13ec66 | 102 | |
bd70fec3 | 103 | // import xml document |
d00afef8 | 104 | $this->language = LanguageEditor::importFromXML($xml, -1, $this->sourceLanguage); |
bd70fec3 MW |
105 | } |
106 | catch (SystemException $e) { | |
d00afef8 | 107 | throw new UserInputException('languageUpload', $e->getMessage()); |
bd70fec3 MW |
108 | } |
109 | } | |
110 | ||
111 | /** | |
0fcfe5f6 | 112 | * @inheritDoc |
bd70fec3 MW |
113 | */ |
114 | public function save() { | |
115 | parent::save(); | |
116 | ||
117 | LanguageFactory::getInstance()->clearCache(); | |
118 | LanguageFactory::getInstance()->deleteLanguageCache(); | |
119 | $this->saved(); | |
120 | ||
121 | // show success message | |
122 | WCF::getTPL()->assign('success', true); | |
123 | } | |
124 | ||
d00afef8 MW |
125 | /** |
126 | * @inheritDoc | |
127 | */ | |
128 | public function readData() { | |
129 | parent::readData(); | |
130 | ||
131 | $this->languages = LanguageFactory::getInstance()->getLanguages(); | |
132 | } | |
133 | ||
bd70fec3 | 134 | /** |
0fcfe5f6 | 135 | * @inheritDoc |
bd70fec3 MW |
136 | */ |
137 | public function assignVariables() { | |
138 | parent::assignVariables(); | |
139 | ||
058cbd6a | 140 | WCF::getTPL()->assign([ |
bd70fec3 | 141 | 'languages' => $this->languages, |
d00afef8 | 142 | 'sourceLanguageID' => $this->sourceLanguageID |
058cbd6a | 143 | ]); |
bd70fec3 MW |
144 | } |
145 | ||
146 | /** | |
0fcfe5f6 | 147 | * @inheritDoc |
bd70fec3 MW |
148 | */ |
149 | public function show() { | |
150 | // check master password | |
151 | WCFACP::checkMasterPassword(); | |
152 | ||
153 | parent::show(); | |
154 | } | |
155 | } |