Overhauled language import form
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / acp / form / LanguageImportForm.class.php
index c9d5a016e6165ce9eb9ebd63d80d0ce534eea702..bcd7e9fd537aafb64c84e144c4b1c8453d0b8266 100644 (file)
@@ -38,28 +38,28 @@ class LanguageImportForm extends AbstractForm {
        public $filename = '';
        
        /**
-        * import field
-        * @var string
+        * language object
+        * @var Language
         */
-       public $importField = 'languageFile';
+       public $language;
        
        /**
-        * language object
-        * @var \wcf\data\language\Language
+        * list of available languages
+        * @var Language[]
         */
-       public $language = null;
+       public $languages = [];
        
        /**
-        * import language file
-        * @var string
+        * source language object
+        * @var Language
         */
-       public $languageFile = '';
+       public $sourceLanguage;
        
        /**
-        * list of available languages
-        * @var Language[]
+        * source language id
+        * @var integer
         */
-       public $languages = [];
+       public $sourceLanguageID = 0;
        
        /**
         * @inheritDoc
@@ -67,15 +67,10 @@ class LanguageImportForm extends AbstractForm {
        public function readFormParameters() {
                parent::readFormParameters();
                
-               // import
-               if (isset($_POST['languageFile']) && !empty($_POST['languageFile'])) {
-                       $this->languageFile = $_POST['languageFile'];
-                       $this->filename = $_POST['languageFile'];
-               }
                if (isset($_FILES['languageUpload']) && !empty($_FILES['languageUpload']['tmp_name'])) {
-                       $this->importField = 'languageUpload';
                        $this->filename = $_FILES['languageUpload']['tmp_name'];
                }
+               if (isset($_POST['sourceLanguageID'])) $this->sourceLanguageID = intval($_POST['sourceLanguageID']);
        }
        
        /**
@@ -86,7 +81,17 @@ class LanguageImportForm extends AbstractForm {
                
                // check file
                if (!file_exists($this->filename)) {
-                       throw new UserInputException('languageFile');
+                       throw new UserInputException('languageUpload');
+               }
+               
+               if (empty($this->sourceLanguageID)) {
+                       throw new UserInputException('sourceLanguageID');
+               }
+               
+               // get language
+               $this->sourceLanguage = LanguageFactory::getInstance()->getLanguage($this->sourceLanguageID);
+               if (!$this->sourceLanguage->languageID) {
+                       throw new UserInputException('sourceLanguageID');
                }
                
                // try to import
@@ -96,10 +101,10 @@ class LanguageImportForm extends AbstractForm {
                        $xml->load($this->filename);
                        
                        // import xml document
-                       $this->language = LanguageEditor::importFromXML($xml, -1);
+                       $this->language = LanguageEditor::importFromXML($xml, -1, $this->sourceLanguage);
                }
                catch (SystemException $e) {
-                       throw new UserInputException($this->importField, $e->getMessage());
+                       throw new UserInputException('languageUpload', $e->getMessage());
                }
        }
        
@@ -117,6 +122,15 @@ class LanguageImportForm extends AbstractForm {
                WCF::getTPL()->assign('success', true);
        }
        
+       /**
+        * @inheritDoc
+        */
+       public function readData() {
+               parent::readData();
+               
+               $this->languages = LanguageFactory::getInstance()->getLanguages();
+       }
+       
        /**
         * @inheritDoc
         */
@@ -125,7 +139,7 @@ class LanguageImportForm extends AbstractForm {
                
                WCF::getTPL()->assign([
                        'languages' => $this->languages,
-                       'languageFile' => $this->languageFile
+                       'sourceLanguageID' => $this->sourceLanguageID
                ]);
        }