/** * <p>Создает таблицы для загрузки XML. Метод динамичный.</p> <p></p> <div class="note"> <b>Примечание:</b> для MySQL если определена константа MYSQL_TABLE_TYPE (<a href="http://dev.1c-bitrix.ru/api_help/main/general/constants.php#mysql_table_type">Специальные константы</a>), то таблицы будут созданы заданного ей типа.</div> * * * @param bool $with_sess_id = false Если значение <i>true</i>, то будут создаваться временные таблицы с * поддержкой нескольких сессий "одновременного" импорта. Введён * для совместимости. Необязательный параметр. * * @return bool <p>В случае, если таблицы создать не удалось, метод возвращает * false.</p> * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/index.php">CIBlockXMLFile</a> </li> * </ul><br> * * * @static * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/createtemporarytables.php * @author Bitrix */ public static function CreateTemporaryTables($with_sess_id = false) { if (!is_object($this) || strlen($this->_table_name) <= 0) { $ob = new CIBlockXMLFile(); return $ob->CreateTemporaryTables(); } else { global $DB; if (defined("MYSQL_TABLE_TYPE") && strlen(MYSQL_TABLE_TYPE) > 0) { $DB->Query("SET storage_engine = '" . MYSQL_TABLE_TYPE . "'", true); } $res = $DB->DDL("create table " . $this->_table_name . "\n\t\t\t\t(\n\t\t\t\t\tID int(11) not null auto_increment,\n\t\t\t\t\t" . ($with_sess_id ? "SESS_ID varchar(32)," : "") . "\n\t\t\t\t\tPARENT_ID int(11),\n\t\t\t\t\tLEFT_MARGIN int(11),\n\t\t\t\t\tRIGHT_MARGIN int(11),\n\t\t\t\t\tDEPTH_LEVEL int(11),\n\t\t\t\t\tNAME varchar(255),\n\t\t\t\t\tVALUE longtext,\n\t\t\t\t\tATTRIBUTES text,\n\t\t\t\t\tPRIMARY KEY (ID)\n\t\t\t\t)\n\t\t\t"); if ($res && defined("BX_XML_CREATE_INDEXES_IMMEDIATELY")) { $res = $this->IndexTemporaryTables($with_sess_id); } return $res; } }
function CreateTemporaryTables() { return $this->_xml_file->CreateTemporaryTables(); }
$_SESSION["BX_CML2_IMPORT"]["zip"] = false; echo "progress\n" . GetMessage("CC_BSC1_ZIP_DONE"); } else { $_SESSION["BX_CML2_IMPORT"]["last_zip_entry"] = $result; echo "progress\n" . GetMessage("CC_BSC1_ZIP_PROGRESS"); } } elseif ($_GET["mode"] == "import" && $ABS_FILE_NAME) { $NS =& $_SESSION["BX_CML2_IMPORT"]["NS"]; $strError = ""; $strMessage = ""; if ($NS["STEP"] < 1) { CIBlockXMLFile::DropTemporaryTables(); $strMessage = GetMessage("CC_BSC1_TABLES_DROPPED"); $NS["STEP"] = 1; } elseif ($NS["STEP"] == 1) { if (CIBlockXMLFile::CreateTemporaryTables()) { $strMessage = GetMessage("CC_BSC1_TABLES_CREATED"); $NS["STEP"] = 2; foreach (GetModuleEvents("catalog", "OnBeforeCatalogImport1C", true) as $arEvent) { $strError = ExecuteModuleEventEx($arEvent, array($arParams, $ABS_FILE_NAME)); } } else { $strError = GetMessage("CC_BSC1_TABLE_CREATE_ERROR"); } } elseif ($NS["STEP"] == 2) { $fp = fopen($ABS_FILE_NAME, "rb"); $total = filesize($ABS_FILE_NAME); if ($total > 0 && is_resource($fp)) { $obXMLFile = new CIBlockXMLFile(); if ($obXMLFile->ReadXMLToDatabase($fp, $NS, $arParams["INTERVAL"])) { $NS["STEP"] = 3;
public function _testBitrixXMLParser() { \CModule::IncludeModule('iblock'); $BXParser = new \CIBlockXMLFile('dvt_yml_import_temp'); $BXParser->CreateTemporaryTables(); $NS = array(); $fp = fopen(static::_DIR_ . '/data/yml_catalog_example.xml', 'r'); $BXParser->ReadXMLToDatabase($fp, $NS, 0, 10240); }
/** * <p>Создает таблицы для загрузки XML.</p> <p><b>Примечание:</b> для MySQL если определена константа MYSQL_TABLE_TYPE (<a href="http://dev.1c-bitrix.ru/api_help/main/general/constants.php#mysql_table_type">Специальные константы</a>), то таблицы будут созданы заданного ей типа. <br></p> * * * * * @return bool <p>В случае если таблицы создать не удалось функция возвращает * false.</p> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/index.php">CIBlockXMLFile</a> </li> * </ul><br> * * * @static * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/createtemporarytables.php * @author Bitrix */ public static function CreateTemporaryTables($with_sess_id = false) { if(!is_object($this) || strlen($this->_table_name) <= 0) { $ob = new CIBlockXMLFile; return $ob->CreateTemporaryTables(); } else { global $DB; if(defined("MYSQL_TABLE_TYPE") && strlen(MYSQL_TABLE_TYPE) > 0) $DB->Query("SET storage_engine = '".MYSQL_TABLE_TYPE."'", true); $res = $DB->Query("create table ".$this->_table_name." ( ID int(11) not null auto_increment, ".($with_sess_id? "SESS_ID varchar(32),": "")." PARENT_ID int(11), LEFT_MARGIN int(11), RIGHT_MARGIN int(11), DEPTH_LEVEL int(11), NAME varchar(255), VALUE longtext, ATTRIBUTES text, PRIMARY KEY (ID) ) "); return $res; } }