コード例 #1
0
 public function import_do()
 {
     $this->setDataType("list");
     $this->setActionType("view");
     $id = getRequest('param0');
     $objects = umiObjectsCollection::getInstance();
     $settings = $objects->getObject($id);
     if (!$settings instanceof umiObject) {
         throw new publicException(getLabel("exchange-err-settings_notfound"));
     }
     $importFile = $settings->file;
     if (!$importFile instanceof umiFile || $importFile->getIsBroken()) {
         throw new publicException(getLabel("exchange-err-importfile"));
     }
     $format_id = $settings->format;
     $importFormat = $objects->getObject($format_id);
     if (!$importFormat instanceof umiObject) {
         throw new publicException(getLabel("exchange-err-format_undefined"));
     }
     $suffix = $importFormat->sid;
     $import_offset = (int) getSession("import_offset_" . $id);
     $blockSize = mainConfiguration::getInstance()->get("modules", "exchange.splitter.limit") ? mainConfiguration::getInstance()->get("modules", "exchange.splitter.limit") : 25;
     $splitter = umiImportSplitter::get($suffix);
     $splitter->load($importFile->getFilePath(), $blockSize, $import_offset);
     $doc = $splitter->getDocument();
     $dump = $splitter->translate($doc);
     $oldIgnoreSiteMap = umiHierarchy::$ignoreSiteMap;
     umiHierarchy::$ignoreSiteMap = true;
     $importer = new xmlImporter();
     $importer->loadXmlString($dump);
     $elements = $settings->elements;
     if (is_array($elements) && count($elements)) {
         $importer->setDestinationElement($elements[0]);
     }
     $importer->setIgnoreParentGroups($splitter->ignoreParentGroups);
     $importer->setAutoGuideCreation($splitter->autoGuideCreation);
     $importer->setRenameFiles($splitter->getRenameFiles());
     $importer->execute();
     umiHierarchy::$ignoreSiteMap = $oldIgnoreSiteMap;
     $_SESSION["import_offset_" . $id] = $splitter->getOffset();
     if ($splitter->getIsComplete()) {
         unset($_SESSION["import_offset_" . $id]);
     }
     $data = array("attribute:complete" => (int) $splitter->getIsComplete(), "attribute:created" => $importer->created_elements, "attribute:updated" => $importer->updated_elements, "attribute:deleted" => $importer->deleted_elements, "attribute:errors" => $importer->import_errors, "nodes:log" => $importer->getImportLog());
     $this->setData($data);
     return $this->doData();
 }
コード例 #2
0
 /**
  * Запускает установку указанного компонента
  */
 private function installComponent()
 {
     $this->includeMicrocore();
     $name = $component_name = isset($this->params['component']) ? trim($this->params['component']) : '';
     if (!strlen($name)) {
         throw new Exception("Не передано имя компонента для установки (пример: installer.php  --component=core).");
     }
     $offset = $offsetOld = $this->getComponentOffset($component_name);
     $component_config = $this->temp_dir . "/{$component_name}/{$component_name}.xml";
     if (!is_file($component_config)) {
         throw new Exception("Не удается найти файл конфигурации компонента \"{$component_name}\": " . $component_config);
     }
     $this->flushLog("с {$offset} по " . ($offset + self::$split_block_size));
     $importer = new xmlImporter(isset($this->params['type']) ? trim($this->params['type']) : 'system');
     if (isset($this->params['type']) && trim($this->params['type']) == 'demosite') {
         $update_ignore_mode = false;
         $importer->setDemositeMode(true);
     } else {
         $update_ignore_mode = $this->install_mode;
     }
     $importer->setUpdateIgnoreMode($update_ignore_mode);
     $importer->setFilesSource($this->temp_dir . "/{$component_name}/");
     $splitterType = 'umiDump20';
     if (isset($this->params['type']) && trim($this->params['type']) == 'demosite' || !$this->install_mode) {
         $splitterType = 'transfer';
     }
     $splitterClass = $splitterType . 'Splitter';
     $splitter = new $splitterClass($splitterType);
     $splitter->load($component_config, self::$split_block_size, $offset);
     $importer->loadXmlDocument($splitter->getDocument());
     $offset = $splitter->getOffset();
     $this->setComponentOffset($component_name, $offset);
     $importer->execute();
     file_put_contents(CURRENT_WORKING_DIR . "/install.log", implode("\r\n", $importer->getImportLog()), FILE_APPEND);
     if ($offset < $offsetOld + self::$split_block_size) {
         return true;
     } else {
         return false;
     }
 }
コード例 #3
0
 private function installComponent()
 {
     $this->includeMicrocore();
     $vb068931cc450442b63f5b3d276ea4297 = $v13921f0f9e84cf745ef7cdf661c74b0c = isset($this->params['component']) ? trim($this->params['component']) : '';
     if (!strlen($vb068931cc450442b63f5b3d276ea4297)) {
         throw new Exception("Не передано имя компонента для установки (пример: installer.php  --component=core).");
     }
     $v7a86c157ee9713c34fbd7a1ee40f0c5a = $v261beee97b53b9fb5a5265d58670c7a8 = $this->getComponentOffset($v13921f0f9e84cf745ef7cdf661c74b0c);
     $ve7c4a00691c547adc1250842bd67f6e9 = $this->temp_dir . "/{$v13921f0f9e84cf745ef7cdf661c74b0c}/{$v13921f0f9e84cf745ef7cdf661c74b0c}.xml";
     if (!is_file($ve7c4a00691c547adc1250842bd67f6e9)) {
         throw new Exception("Не удается найти файл конфигурации компонента \"{$v13921f0f9e84cf745ef7cdf661c74b0c}\": " . $ve7c4a00691c547adc1250842bd67f6e9);
     }
     $this->flushLog("с {$v7a86c157ee9713c34fbd7a1ee40f0c5a} по " . ($v7a86c157ee9713c34fbd7a1ee40f0c5a + self::$split_block_size));
     $v1bc49dba86c5074c5266c6d38c301a46 = new xmlImporter(isset($this->params['type']) ? trim($this->params['type']) : 'system');
     if (isset($this->params['type']) && trim($this->params['type']) == 'demosite') {
         $v45b7e5a476c7c8aa0c5cfca50f833af1 = false;
         $v1bc49dba86c5074c5266c6d38c301a46->setDemositeMode(true);
     } else {
         $v45b7e5a476c7c8aa0c5cfca50f833af1 = $this->install_mode;
     }
     $v1bc49dba86c5074c5266c6d38c301a46->setUpdateIgnoreMode($v45b7e5a476c7c8aa0c5cfca50f833af1);
     $v1bc49dba86c5074c5266c6d38c301a46->setFilesSource($this->temp_dir . "/{$v13921f0f9e84cf745ef7cdf661c74b0c}/");
     $vbfde4c938d366cad9404b4647ba35217 = 'umiDump20';
     if (isset($this->params['type']) && trim($this->params['type']) == 'demosite' || !$this->install_mode) {
         $vbfde4c938d366cad9404b4647ba35217 = 'transfer';
     }
     $v44fd8e2f3008c90601a84a2de4382272 = $vbfde4c938d366cad9404b4647ba35217 . 'Splitter';
     $ved8430dc53fe9c99911b7c85e45aa6a2 = new $v44fd8e2f3008c90601a84a2de4382272($vbfde4c938d366cad9404b4647ba35217);
     $ved8430dc53fe9c99911b7c85e45aa6a2->load($ve7c4a00691c547adc1250842bd67f6e9, self::$split_block_size, $v7a86c157ee9713c34fbd7a1ee40f0c5a);
     $v1bc49dba86c5074c5266c6d38c301a46->loadXmlDocument($ved8430dc53fe9c99911b7c85e45aa6a2->getDocument());
     $v7a86c157ee9713c34fbd7a1ee40f0c5a = $ved8430dc53fe9c99911b7c85e45aa6a2->getOffset();
     $this->setComponentOffset($v13921f0f9e84cf745ef7cdf661c74b0c, $v7a86c157ee9713c34fbd7a1ee40f0c5a);
     $v1bc49dba86c5074c5266c6d38c301a46->execute();
     file_put_contents(CURRENT_WORKING_DIR . "/install.log", implode("\r\n", $v1bc49dba86c5074c5266c6d38c301a46->getImportLog()), FILE_APPEND);
     if ($v7a86c157ee9713c34fbd7a1ee40f0c5a < $v261beee97b53b9fb5a5265d58670c7a8 + self::$split_block_size) {
         return true;
     } else {
         return false;
     }
 }
コード例 #4
0
 protected function importOrders()
 {
     self::saveIncomingFile();
     $file_name = getRequest('filename');
     $file_path = self::$importDirectory . $file_name;
     if (!is_file($file_path)) {
         return "failure\nFile {$file_path} not exists.";
     }
     $splitterName = (string) mainConfiguration::getInstance()->get("modules", "exchange.commerceML.splitter");
     if (!trim(strlen($splitterName))) {
         $splitterName = "commerceML2";
     }
     $splitter = umiImportSplitter::get($splitterName);
     $splitter->load($file_path);
     $doc = $splitter->getDocument();
     $xml = $splitter->translate($doc);
     $importer = new xmlImporter();
     $importer->loadXmlString($xml);
     $importer->setIgnoreParentGroups($splitter->ignoreParentGroups);
     $importer->setAutoGuideCreation($splitter->autoGuideCreation);
     $importer->execute();
     return "success";
 }