Exemple #1
0
 protected function _exportIBlockXML($iblockCode)
 {
     if (!$this->_checkIBlockCode($iblockCode)) {
         return false;
     }
     $arIB =& $this->_arIBlockData[$iblockCode];
     self::deleteDirFilesEx($arIB['EXPORT_WORK_DIR_FULL_PATH'], true);
     unlink($arIB['XML_FILE_FULL_PATH']);
     $fpXmlFile = fopen($arIB['XML_FILE_FULL_PATH'], "ab");
     if (!$fpXmlFile) {
         echo "Can't create / open xml file \n";
         return false;
     }
     $start_time = time();
     $nextStep = array();
     $arSectionMap = false;
     $arPropertyMap = false;
     $arSectionFilter = array('IBLOCK_ID' => $arIB['IBLOCK_ID']);
     $arElementFilter = array('IBLOCK_ID' => $arIB['IBLOCK_ID']);
     $INTERVAL = 0;
     /**
      * @var CIBlockCMLExport $obExport
      */
     $obExport = new CIBlockCMLExport();
     if ($obExport->Init($fpXmlFile, $arIB['IBLOCK_ID'], $nextStep, true, $arIB['EXPORT_FULL_PATH'], $arIB['EXPORT_WORK_DIR'])) {
         // <КоммерческаяИнформация>
         $obExport->StartExport();
         // <Классификатор>
         $obExport->StartExportMetadata();
         // <Свойства>
         $obExport->ExportProperties($arPropertyMap);
         // </Свойства>
         // <Группы>
         $result = $obExport->ExportSections($arSectionMap, $start_time, $INTERVAL, $arSectionFilter);
         // </Группы>
         // </Классификатор>
         $obExport->EndExportMetadata();
         // <Каталог>
         $obExport->StartExportCatalog();
         // <Товары>
         $result = $obExport->ExportElements($arPropertyMap, $arSectionMap, $start_time, $INTERVAL, 0, $arElementFilter);
         // </Товары>
         // </Каталог>
         $obExport->EndExportCatalog();
         // </КоммерческаяИнформация>
         $obExport->EndExport();
     } else {
         echo "\nCan't initialize xml-export for \"{$arIB['IBLOCK_ID']}\".\n Perhaps Minimal access for IBlock lower than \"W\"\n";
     }
     if ($fpXmlFile) {
         fclose($fpXmlFile);
     }
 }
             $_SESSION["BX_CML2_EXPORT"]["file_dir"] = substr($DIR_NAME . "/", strlen($WORK_DIR_NAME));
         }
     } else {
         $arErrors[] = GetMessage("IBLOCK_CML2_FILE_ERROR");
     }
     $NS["STEP"]++;
 } elseif ($NS["STEP"] < 4) {
     if ($fp = fopen($ABS_FILE_NAME, "ab")) {
         $obExport = new CIBlockCMLExport();
         if ($obExport->Init($fp, $NS["IBLOCK_ID"], $NS["next_step"], true, $_SESSION["BX_CML2_EXPORT"]["work_dir"], $_SESSION["BX_CML2_EXPORT"]["file_dir"])) {
             if ($NS["DOWNLOAD_CLOUD_FILES"] === "N") {
                 $obExport->DoNotDownloadCloudFiles();
             }
             if ($NS["STEP"] == 1) {
                 $obExport->StartExport();
                 $obExport->StartExportMetadata();
                 $obExport->ExportProperties($_SESSION["BX_CML2_EXPORT"]["PROPERTY_MAP"]);
                 $NS["STEP"]++;
             } elseif ($NS["STEP"] == 2) {
                 $result = $obExport->ExportSections($_SESSION["BX_CML2_EXPORT"]["SECTION_MAP"], $start_time, $INTERVAL, $NS["SECTIONS_FILTER"], $_SESSION["BX_CML2_EXPORT"]["PROPERTY_MAP"]);
                 if ($result) {
                     $NS["SECTIONS"] += $result;
                 } else {
                     $obExport->EndExportMetadata();
                     $obExport->StartExportCatalog();
                     $NS["STEP"]++;
                 }
             } elseif ($NS["STEP"] == 3) {
                 $result = $obExport->ExportElements($_SESSION["BX_CML2_EXPORT"]["PROPERTY_MAP"], $_SESSION["BX_CML2_EXPORT"]["SECTION_MAP"], $start_time, $INTERVAL, 0, $NS["ELEMENTS_FILTER"]);
                 if ($result) {
                     $NS["ELEMENTS"] += $result;
 function Export($documentId)
 {
     $work_dir = CTempFile::GetDirectoryName();
     CheckDirPath($work_dir);
     $file = "import";
     $file_name = $work_dir . $file . ".xml";
     $file_dir = $file . "_files/";
     $arcname = $work_dir . $file . '.tar.gz';
     if ($fp = fopen($file_name, "ab")) {
         $documentService = $this->workflow->GetService("DocumentService");
         $document = $documentService->GetDocument($documentId);
         $obExport = new CIBlockCMLExport();
         $step = array();
         $PROPERTY_MAP = array();
         $SECTION_MAP = array();
         if ($obExport->Init($fp, $document["IBLOCK_ID"], $step, true, $work_dir, $file_dir)) {
             $obExport->StartExport();
             $obExport->StartExportMetadata();
             $obExport->ExportProperties($PROPERTY_MAP);
             $obExport->ExportSections($SECTION_MAP, time(), 0);
             $obExport->EndExportMetadata();
             $obExport->StartExportCatalog(true, true);
             $obExport->ExportElements($PROPERTY_MAP, $SECTION_MAP, time(), 0, 0, array("SHOW_NEW" => "Y", "IBLOCK_ID" => $document["IBLOCK_ID"], "=ID" => $document["ID"]));
             $obExport->EndExportCatalog();
             $obExport->EndExport();
             fclose($fp);
             include_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . '/modules/main/classes/general/tar_gz.php';
             $ob = new CArchiver($arcname);
             $res = $ob->Add('"' . $file_name . '"', false, $work_dir);
             if ($res) {
                 $res = $ob->Add('"' . $work_dir . $file_dir . '"', false, $work_dir);
             }
             if ($res) {
                 return $arcname;
             } else {
                 return '';
             }
         } else {
             return '';
         }
     } else {
         return '';
     }
 }