/**
  * @see	\wcf\form\IForm::save()
  */
 public function save()
 {
     parent::save();
     // get queue
     $queue = $this->exporter->getQueue();
     // save import data
     WCF::getSession()->register('importData', array('exporterName' => $this->exporterName, 'dbHost' => $this->dbHost, 'dbUser' => $this->dbUser, 'dbPassword' => $this->dbPassword, 'dbName' => $this->dbName, 'dbPrefix' => $this->dbPrefix, 'fileSystemPath' => $this->fileSystemPath, 'userMergeMode' => $this->userMergeMode, 'additionalData' => $this->additionalData));
     WCF::getTPL()->assign('queue', $queue);
 }
 /**
  * @see	\wcf\system\cli\command\ICLICommand::execute()
  */
 public function execute(array $parameters)
 {
     CLIWCF::getReader()->setHistoryEnabled(false);
     $this->exporters = ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.exporter');
     $this->importers = array_keys(ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.importer'));
     if (empty($this->exporters)) {
         CLIWCF::getReader()->println(WCF::getLanguage()->get('wcf.acp.dataImport.selectExporter.noExporters'));
         return;
     }
     if (PACKAGE_ID == 1) {
         CLIWCF::getReader()->println(StringUtil::stripHTML(WCF::getLanguage()->get('wcf.acp.dataImport.cli.info.wcf')));
         $answer = CLIWCF::getReader()->readLine('> ');
         if ($answer === null) {
             exit;
         }
         if (mb_strtolower($answer) != 'y') {
             CLIWCF::getReader()->setHistoryEnabled(true);
             return;
         }
     }
     // step 1) previous import
     $sql = "SELECT\tCOUNT(*)\n\t\t\tFROM\twcf" . WCF_N . "_import_mapping";
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute();
     if ($statement->fetchColumn()) {
         CLIWCF::getReader()->println(StringUtil::stripHTML(WCF::getLanguage()->get('wcf.acp.dataImport.existingMapping.notice')));
         CLIWCF::getReader()->println(WCF::getLanguage()->get('wcf.acp.dataImport.existingMapping.confirmMessage') . ' [YN]');
         $answer = CLIWCF::getReader()->readLine('> ');
         if ($answer === null) {
             exit;
         }
         if (mb_strtolower($answer) == 'y') {
             ImportHandler::getInstance()->resetMapping();
         }
     }
     // step 2) exporter
     $this->readExporter();
     // step 3) selected data
     $this->readSelectedData();
     if ($this->quitImport) {
         CLIWCF::getReader()->setHistoryEnabled(true);
         return;
     }
     // step 4) user merge mode
     $this->readUserMergeMode();
     // step 5) database connection
     $this->readDatabaseConnection();
     // step 6) file system path
     $this->readFileSystemPath();
     // step 7) save import data
     $queue = $this->exporter->getQueue();
     WCF::getSession()->register('importData', array('additionalData' => array(), 'dbHost' => $this->dbHost, 'dbName' => $this->dbName, 'dbPassword' => $this->dbPassword, 'dbPrefix' => $this->dbPrefix, 'dbUser' => $this->dbUser, 'exporterName' => $this->exporterName, 'fileSystemPath' => $this->fileSystemPath, 'userMergeMode' => $this->userMergeMode));
     // step 8) import data
     CLIWCF::getReader()->println(WCF::getLanguage()->get('wcf.acp.dataImport.started'));
     foreach ($queue as $objectType) {
         CLIWCF::getReader()->println(WCF::getLanguage()->get('wcf.acp.dataImport.data.' . $objectType));
         $workerCommand = CLICommandHandler::getCommand('worker');
         $workerCommand->execute(array('--objectType=' . $objectType, 'ImportWorker'));
     }
     CLIWCF::getReader()->println(WCF::getLanguage()->get('wcf.acp.dataImport.completed'));
     CLIWCF::getReader()->setHistoryEnabled(true);
 }