Example #1
0
 function ImportElement($arXMLElement, &$counter, $bWF, $arParent)
 {
     global $USER;
     $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0;
     $arElement = array("ACTIVE" => "Y", "PROPERTY_VALUES" => array());
     if (isset($arXMLElement[$this->mess["IBLOCK_XML2_VERSION"]])) {
         $arElement["TMP_ID"] = $arXMLElement[$this->mess["IBLOCK_XML2_VERSION"]];
     } else {
         $arElement["TMP_ID"] = $this->GetElementCRC($arXMLElement);
     }
     if (isset($arXMLElement[$this->mess["IBLOCK_XML2_ID"]])) {
         $arElement["XML_ID"] = $arXMLElement[$this->mess["IBLOCK_XML2_ID"]];
     }
     $obElement = new CIBlockElement();
     $obElement->CancelWFSetMove();
     $rsElement = $obElement->GetList(array("ID" => "asc"), array("=XML_ID" => $arElement["XML_ID"], "IBLOCK_ID" => $this->next_step["IBLOCK_ID"]), false, false, array("ID", "TMP_ID", "ACTIVE", "CODE", "PREVIEW_PICTURE", "DETAIL_PICTURE"));
     $bMatch = false;
     if ($arDBElement = $rsElement->Fetch()) {
         $bMatch = $arElement["TMP_ID"] == $arDBElement["TMP_ID"];
     }
     if ($bMatch && $this->use_crc) {
         //Check Active flag in XML is not set to false
         if ($this->CheckIfElementIsActive($arXMLElement)) {
             //In case element is not active in database we have to activate it and its offers
             if ($arDBElement["ACTIVE"] != "Y") {
                 $obElement->Update($arDBElement["ID"], array("ACTIVE" => "Y"), $bWF);
                 $this->ChangeOffersStatus($arDBElement["ID"], "Y", $bWF);
                 $counter["UPD"]++;
             }
         }
         $arElement["ID"] = $arDBElement["ID"];
     } elseif (isset($arXMLElement[$this->mess["IBLOCK_XML2_NAME"]])) {
         if ($arDBElement) {
             if ($arDBElement["PREVIEW_PICTURE"] > 0) {
                 $this->arElementFilesId["PREVIEW_PICTURE"] = array($arDBElement["PREVIEW_PICTURE"]);
             }
             if ($arDBElement["DETAIL_PICTURE"] > 0) {
                 $this->arElementFilesId["DETAIL_PICTURE"] = array($arDBElement["DETAIL_PICTURE"]);
             }
             $rsProperties = $obElement->GetProperty($this->next_step["IBLOCK_ID"], $arDBElement["ID"], "sort", "asc");
             while ($arProperty = $rsProperties->Fetch()) {
                 if (!array_key_exists($arProperty["ID"], $arElement["PROPERTY_VALUES"])) {
                     $arElement["PROPERTY_VALUES"][$arProperty["ID"]] = array("bOld" => true);
                 }
                 $arElement["PROPERTY_VALUES"][$arProperty["ID"]][$arProperty['PROPERTY_VALUE_ID']] = array("VALUE" => $arProperty['VALUE'], "DESCRIPTION" => $arProperty["DESCRIPTION"]);
                 if ($arProperty["PROPERTY_TYPE"] == "F" && $arProperty["VALUE"] > 0) {
                     $this->arElementFilesId[$arProperty["ID"]][] = $arProperty["VALUE"];
                 }
             }
         }
         if ($this->bCatalog && $this->next_step["bOffer"]) {
             $p = strpos($arXMLElement[$this->mess["IBLOCK_XML2_ID"]], "#");
             if ($p !== false) {
                 $link_xml_id = substr($arXMLElement[$this->mess["IBLOCK_XML2_ID"]], 0, $p);
             } else {
                 $link_xml_id = $arXMLElement[$this->mess["IBLOCK_XML2_ID"]];
             }
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_LINK"]] = array("n0" => array("VALUE" => $this->GetElementByXML_ID($this->arProperties[$this->PROPERTY_MAP["CML2_LINK"]]["LINK_IBLOCK_ID"], $link_xml_id), "DESCRIPTION" => false));
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_NAME"]])) {
             $arElement["NAME"] = $arXMLElement[$this->mess["IBLOCK_XML2_NAME"]];
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_DELETE_MARK"]])) {
             $value = $arXMLElement[$this->mess["IBLOCK_XML2_DELETE_MARK"]];
             $arElement["ACTIVE"] = $value == "true" || intval($value) ? "N" : "Y";
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_BX_TAGS"], $arXMLElement)) {
             $arElement["TAGS"] = $arXMLElement[$this->mess["IBLOCK_XML2_BX_TAGS"]];
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_DESCRIPTION"], $arXMLElement)) {
             if (strlen($arXMLElement[$this->mess["IBLOCK_XML2_DESCRIPTION"]]) > 0) {
                 $arElement["DETAIL_TEXT"] = $arXMLElement[$this->mess["IBLOCK_XML2_DESCRIPTION"]];
             } else {
                 $arElement["DETAIL_TEXT"] = "";
             }
             if (preg_match('/<[a-zA-Z0-9]+.*?>/', $arElement["DETAIL_TEXT"])) {
                 $arElement["DETAIL_TEXT_TYPE"] = "html";
             } else {
                 $arElement["DETAIL_TEXT_TYPE"] = "text";
             }
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_FULL_TITLE"], $arXMLElement)) {
             if (strlen($arXMLElement[$this->mess["IBLOCK_XML2_FULL_TITLE"]]) > 0) {
                 $arElement["PREVIEW_TEXT"] = $arXMLElement[$this->mess["IBLOCK_XML2_FULL_TITLE"]];
             } else {
                 $arElement["PREVIEW_TEXT"] = "";
             }
             if (preg_match('/<[a-zA-Z0-9]+.*?>/', $arElement["PREVIEW_TEXT"])) {
                 $arElement["PREVIEW_TEXT_TYPE"] = "html";
             } else {
                 $arElement["PREVIEW_TEXT_TYPE"] = "text";
             }
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_INHERITED_TEMPLATES"], $arXMLElement)) {
             $arElement["IPROPERTY_TEMPLATES"] = array();
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_INHERITED_TEMPLATES"]] as $TEMPLATE) {
                 $id = $TEMPLATE[$this->mess["IBLOCK_XML2_ID"]];
                 $template = $TEMPLATE[$this->mess["IBLOCK_XML2_VALUE"]];
                 if (strlen($id) > 0 && strlen($template) > 0) {
                     $arElement["IPROPERTY_TEMPLATES"][$id] = $template;
                 }
             }
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_BAR_CODE2"], $arXMLElement)) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BAR_CODE"]] = array("n0" => array("VALUE" => $arXMLElement[$this->mess["IBLOCK_XML2_BAR_CODE2"]], "DESCRIPTION" => false));
         } elseif (array_key_exists($this->mess["IBLOCK_XML2_BAR_CODE"], $arXMLElement)) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BAR_CODE"]] = array("n0" => array("VALUE" => $arXMLElement[$this->mess["IBLOCK_XML2_BAR_CODE"]], "DESCRIPTION" => false));
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_ARTICLE"], $arXMLElement)) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_ARTICLE"]] = array("n0" => array("VALUE" => $arXMLElement[$this->mess["IBLOCK_XML2_ARTICLE"]], "DESCRIPTION" => false));
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_MANUFACTURER"], $arXMLElement) && $this->PROPERTY_MAP["CML2_MANUFACTURER"] > 0) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_MANUFACTURER"]] = array("n0" => array("VALUE" => $this->CheckManufacturer($arXMLElement[$this->mess["IBLOCK_XML2_MANUFACTURER"]]), "DESCRIPTION" => false));
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_PICTURE"], $arXMLElement)) {
             $rsFiles = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arParent["ID"], "NAME" => $this->mess["IBLOCK_XML2_PICTURE"]));
             $arFile = $rsFiles->Fetch();
             if ($arFile) {
                 $description = "";
                 if (strlen($arFile["ATTRIBUTES"])) {
                     $arAttributes = unserialize($arFile["ATTRIBUTES"]);
                     if (is_array($arAttributes) && array_key_exists($this->mess["IBLOCK_XML2_DESCRIPTION"], $arAttributes)) {
                         $description = $arAttributes[$this->mess["IBLOCK_XML2_DESCRIPTION"]];
                     }
                 }
                 if (strlen($arFile["VALUE"]) > 0) {
                     $arElement["DETAIL_PICTURE"] = $this->ResizePicture($arFile["VALUE"], $this->detail, "DETAIL_PICTURE", $this->PROPERTY_MAP["CML2_PICTURES"]);
                     if (is_array($arElement["DETAIL_PICTURE"])) {
                         $arElement["DETAIL_PICTURE"]["description"] = $description;
                         $this->arFileDescriptionsMap[$arFile["VALUE"]][] =& $arElement["DETAIL_PICTURE"]["description"];
                     }
                     if (is_array($this->preview)) {
                         $arElement["PREVIEW_PICTURE"] = $this->ResizePicture($arFile["VALUE"], $this->preview, "PREVIEW_PICTURE");
                         if (is_array($arElement["PREVIEW_PICTURE"])) {
                             $arElement["PREVIEW_PICTURE"]["description"] = $description;
                             $this->arFileDescriptionsMap[$arFile["VALUE"]][] =& $arElement["PREVIEW_PICTURE"]["description"];
                         }
                     }
                 } else {
                     $arElement["DETAIL_PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arFile["ID"]));
                     if (is_array($arElement["DETAIL_PICTURE"])) {
                         $arElement["DETAIL_PICTURE"]["description"] = $description;
                     }
                 }
                 $prop_id = $this->PROPERTY_MAP["CML2_PICTURES"];
                 if ($prop_id > 0) {
                     $i = 1;
                     while ($arFile = $rsFiles->Fetch()) {
                         $description = "";
                         if (strlen($arFile["ATTRIBUTES"])) {
                             $arAttributes = unserialize($arFile["ATTRIBUTES"]);
                             if (is_array($arAttributes) && array_key_exists($this->mess["IBLOCK_XML2_DESCRIPTION"], $arAttributes)) {
                                 $description = $arAttributes[$this->mess["IBLOCK_XML2_DESCRIPTION"]];
                             }
                         }
                         if (strlen($arFile["VALUE"]) > 0) {
                             $arPropFile = $this->ResizePicture($arFile["VALUE"], $this->detail, $this->PROPERTY_MAP["CML2_PICTURES"], "DETAIL_PICTURE");
                         } else {
                             $arPropFile = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arFile["ID"]));
                         }
                         if (is_array($arPropFile)) {
                             $arPropFile = array("VALUE" => $arPropFile, "DESCRIPTION" => $description);
                         }
                         $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i] = $arPropFile;
                         if (strlen($arFile["VALUE"]) > 0) {
                             $this->arFileDescriptionsMap[$arFile["VALUE"]][] =& $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i]["DESCRIPTION"];
                         }
                         $i++;
                     }
                     if (is_array($arElement["PROPERTY_VALUES"][$prop_id])) {
                         foreach ($arElement["PROPERTY_VALUES"][$prop_id] as $PROPERTY_VALUE_ID => $PROPERTY_VALUE) {
                             if (!$PROPERTY_VALUE_ID) {
                                 unset($arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID]);
                             } elseif (substr($PROPERTY_VALUE_ID, 0, 1) !== "n") {
                                 $arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID] = array("tmp_name" => "", "del" => "Y");
                             }
                         }
                         unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
                     }
                 }
             }
         }
         $cleanCml2FilesProperty = false;
         if (array_key_exists($this->mess["IBLOCK_XML2_FILE"], $arXMLElement) && strlen($this->PROPERTY_MAP["CML2_FILES"]) > 0) {
             $prop_id = $this->PROPERTY_MAP["CML2_FILES"];
             $rsFiles = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $arParent["ID"], "NAME" => $this->mess["IBLOCK_XML2_FILE"]));
             $i = 1;
             while ($arFile = $rsFiles->Fetch()) {
                 if (strlen($arFile["VALUE"]) > 0) {
                     $file = $this->MakeFileArray($arFile["VALUE"], array($prop_id));
                 } else {
                     $file = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arFile["ID"]));
                 }
                 $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i] = array("VALUE" => $file, "DESCRIPTION" => $file["description"]);
                 if (strlen($arFile["ATTRIBUTES"])) {
                     $desc = unserialize($arFile["ATTRIBUTES"]);
                     if (is_array($desc) && array_key_exists($this->mess["IBLOCK_XML2_DESCRIPTION"], $desc)) {
                         $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i]["DESCRIPTION"] = $desc[$this->mess["IBLOCK_XML2_DESCRIPTION"]];
                     }
                 }
                 $i++;
             }
             $cleanCml2FilesProperty = true;
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_GROUPS"]])) {
             $arElement["IBLOCK_SECTION"] = array();
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_GROUPS"]] as $value) {
                 if (array_key_exists($value, $this->SECTION_MAP)) {
                     $arElement["IBLOCK_SECTION"][] = $this->SECTION_MAP[$value];
                 }
             }
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_PRICES"], $arXMLElement)) {
             //Collect price information for future use
             $arElement["PRICES"] = array();
             if (is_array($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]])) {
                 foreach ($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]] as $price) {
                     if (isset($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]]) && array_key_exists($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]], $this->PRICES_MAP)) {
                         $price["PRICE"] = $this->PRICES_MAP[$price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]]];
                         $arElement["PRICES"][] = $price;
                     }
                 }
             }
             $arElement["DISCOUNTS"] = array();
             if (isset($arXMLElement[$this->mess["IBLOCK_XML2_DISCOUNTS"]])) {
                 foreach ($arXMLElement[$this->mess["IBLOCK_XML2_DISCOUNTS"]] as $discount) {
                     if (isset($discount[$this->mess["IBLOCK_XML2_DISCOUNT_CONDITION"]]) && $discount[$this->mess["IBLOCK_XML2_DISCOUNT_CONDITION"]] === $this->mess["IBLOCK_XML2_DISCOUNT_COND_VOLUME"]) {
                         $discount_value = $this->ToInt($discount[$this->mess["IBLOCK_XML2_DISCOUNT_COND_VALUE"]]);
                         $discount_percent = $this->ToFloat($discount[$this->mess["IBLOCK_XML2_DISCOUNT_COND_PERCENT"]]);
                         if ($discount_value > 0 && $discount_percent > 0) {
                             $arElement["DISCOUNTS"][$discount_value] = $discount_percent;
                         }
                     }
                 }
             }
         }
         if (array_key_exists($this->mess["IBLOCK_XML2_AMOUNT"], $arXMLElement)) {
             $arElementTmp = array();
             $arElement["QUANTITY_RESERVED"] = 0;
             if ($arElement["ID"]) {
                 $arElementTmp = CCatalogProduct::GetById($arElement["ID"]);
             }
             if (is_array($arElementTmp) && !empty($arElementTmp) && isset($arElementTmp["QUANTITY_RESERVED"])) {
                 $arElement["QUANTITY_RESERVED"] = $arElementTmp["QUANTITY_RESERVED"];
             }
             $arElement["QUANTITY"] = $this->ToFloat($arXMLElement[$this->mess["IBLOCK_XML2_AMOUNT"]]) - doubleval($arElement["QUANTITY_RESERVED"]);
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_ITEM_ATTRIBUTES"]])) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_ATTRIBUTES"]] = array();
             $i = 0;
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_ITEM_ATTRIBUTES"]] as $value) {
                 $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_ATTRIBUTES"]]["n" . $i] = array("VALUE" => $value[$this->mess["IBLOCK_XML2_VALUE"]], "DESCRIPTION" => $value[$this->mess["IBLOCK_XML2_NAME"]]);
                 $i++;
             }
         }
         $i = 0;
         $weightKey = false;
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_TRAITS_VALUES"]])) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TRAITS"]] = array();
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_TRAITS_VALUES"]] as $value) {
                 if (!array_key_exists("PREVIEW_TEXT", $arElement) && $value[$this->mess["IBLOCK_XML2_NAME"]] == $this->mess["IBLOCK_XML2_FULL_TITLE2"]) {
                     $arElement["PREVIEW_TEXT"] = $value[$this->mess["IBLOCK_XML2_VALUE"]];
                     if (strpos($arElement["PREVIEW_TEXT"], "<") !== false) {
                         $arElement["PREVIEW_TEXT_TYPE"] = "html";
                     } else {
                         $arElement["PREVIEW_TEXT_TYPE"] = "text";
                     }
                 } elseif ($value[$this->mess["IBLOCK_XML2_NAME"]] == $this->mess["IBLOCK_XML2_HTML_DESCRIPTION"]) {
                     if (strlen($value[$this->mess["IBLOCK_XML2_VALUE"]]) > 0) {
                         $arElement["DETAIL_TEXT"] = $value[$this->mess["IBLOCK_XML2_VALUE"]];
                         $arElement["DETAIL_TEXT_TYPE"] = "html";
                     }
                 } elseif ($value[$this->mess["IBLOCK_XML2_NAME"]] == $this->mess["IBLOCK_XML2_FILE"]) {
                     if (strlen($value[$this->mess["IBLOCK_XML2_VALUE"]]) > 0) {
                         $prop_id = $this->PROPERTY_MAP["CML2_FILES"];
                         $j = 1;
                         while (isset($arElement["PROPERTY_VALUES"][$prop_id]["n" . $j])) {
                             $j++;
                         }
                         $file = $this->MakeFileArray($value[$this->mess["IBLOCK_XML2_VALUE"]], array($prop_id));
                         if (is_array($file)) {
                             $arElement["PROPERTY_VALUES"][$prop_id]["n" . $j] = array("VALUE" => $file, "DESCRIPTION" => "");
                             unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
                             $this->arFileDescriptionsMap[$value[$this->mess["IBLOCK_XML2_VALUE"]]][] =& $arElement["PROPERTY_VALUES"][$prop_id]["n" . $j]["DESCRIPTION"];
                             $cleanCml2FilesProperty = true;
                         }
                     }
                 } elseif ($value[$this->mess["IBLOCK_XML2_NAME"]] == $this->mess["IBLOCK_XML2_FILE_DESCRIPTION"]) {
                     if (strlen($value[$this->mess["IBLOCK_XML2_VALUE"]]) > 0) {
                         list($fileName, $description) = explode("#", $value[$this->mess["IBLOCK_XML2_VALUE"]]);
                         if (isset($this->arFileDescriptionsMap[$fileName])) {
                             foreach ($this->arFileDescriptionsMap[$fileName] as $k => $tmp) {
                                 $this->arFileDescriptionsMap[$fileName][$k] = $description;
                             }
                         }
                     }
                 } else {
                     if ($value[$this->mess["IBLOCK_XML2_NAME"]] == $this->mess["IBLOCK_XML2_WEIGHT"]) {
                         $arElement["BASE_WEIGHT"] = $this->ToFloat($value[$this->mess["IBLOCK_XML2_VALUE"]]) * 1000;
                         $weightKey = "n" . $i;
                     }
                     $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TRAITS"]]["n" . $i] = array("VALUE" => $value[$this->mess["IBLOCK_XML2_VALUE"]], "DESCRIPTION" => $value[$this->mess["IBLOCK_XML2_NAME"]]);
                     $i++;
                 }
             }
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_WEIGHT"]])) {
             if ($weightKey !== false) {
             } elseif (!isset($arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TRAITS"]])) {
                 $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TRAITS"]] = array();
                 $weightKey = "n0";
             } else {
                 $weightKey = "n" . $i;
             }
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TRAITS"]][$weightKey] = array("VALUE" => $arXMLElement[$this->mess["IBLOCK_XML2_WEIGHT"]], "DESCRIPTION" => $this->mess["IBLOCK_XML2_WEIGHT"]);
             $arElement["BASE_WEIGHT"] = $this->ToFloat($arXMLElement[$this->mess["IBLOCK_XML2_WEIGHT"]]) * 1000;
         }
         if ($cleanCml2FilesProperty) {
             $prop_id = $this->PROPERTY_MAP["CML2_FILES"];
             if (is_array($arElement["PROPERTY_VALUES"][$prop_id])) {
                 foreach ($arElement["PROPERTY_VALUES"][$prop_id] as $PROPERTY_VALUE_ID => $PROPERTY_VALUE) {
                     if (!$PROPERTY_VALUE_ID) {
                         unset($arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID]);
                     } elseif (substr($PROPERTY_VALUE_ID, 0, 1) !== "n") {
                         $arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID] = array("tmp_name" => "", "del" => "Y");
                     }
                 }
                 unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
             }
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_TAXES_VALUES"]])) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TAXES"]] = array();
             $i = 0;
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_TAXES_VALUES"]] as $value) {
                 $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_TAXES"]]["n" . $i] = array("VALUE" => $value[$this->mess["IBLOCK_XML2_TAX_VALUE"]], "DESCRIPTION" => $value[$this->mess["IBLOCK_XML2_NAME"]]);
                 $i++;
             }
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_BASE_UNIT"]])) {
             $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BASE_UNIT"]] = array("n0" => $this->convertBaseUnitFromXmlToPropertyValue($arXMLElement[$this->mess["IBLOCK_XML2_BASE_UNIT"]]));
         }
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_PROPERTIES_VALUES"]])) {
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_PROPERTIES_VALUES"]] as $value) {
                 if (!array_key_exists($this->mess["IBLOCK_XML2_ID"], $value)) {
                     continue;
                 }
                 $prop_id = $value[$this->mess["IBLOCK_XML2_ID"]];
                 unset($value[$this->mess["IBLOCK_XML2_ID"]]);
                 //Handle properties which is actually element fields
                 if (!array_key_exists($prop_id, $this->PROPERTY_MAP)) {
                     if ($prop_id == "CML2_CODE") {
                         $arElement["CODE"] = isset($value[$this->mess["IBLOCK_XML2_VALUE"]]) ? $value[$this->mess["IBLOCK_XML2_VALUE"]] : "";
                     } elseif ($prop_id == "CML2_ACTIVE") {
                         $value = array_pop($value);
                         $arElement["ACTIVE"] = $value == "true" || intval($value) ? "Y" : "N";
                     } elseif ($prop_id == "CML2_SORT") {
                         $arElement["SORT"] = array_pop($value);
                     } elseif ($prop_id == "CML2_ACTIVE_FROM") {
                         $arElement["ACTIVE_FROM"] = CDatabase::FormatDate(array_pop($value), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL"));
                     } elseif ($prop_id == "CML2_ACTIVE_TO") {
                         $arElement["ACTIVE_TO"] = CDatabase::FormatDate(array_pop($value), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL"));
                     } elseif ($prop_id == "CML2_PREVIEW_TEXT") {
                         if (array_key_exists($this->mess["IBLOCK_XML2_VALUE"], $value)) {
                             if (isset($value[$this->mess["IBLOCK_XML2_VALUE"]])) {
                                 $arElement["PREVIEW_TEXT"] = $value[$this->mess["IBLOCK_XML2_VALUE"]];
                             } else {
                                 $arElement["PREVIEW_TEXT"] = "";
                             }
                             if (isset($value[$this->mess["IBLOCK_XML2_TYPE"]])) {
                                 $arElement["PREVIEW_TEXT_TYPE"] = $value[$this->mess["IBLOCK_XML2_TYPE"]];
                             } else {
                                 $arElement["PREVIEW_TEXT_TYPE"] = "html";
                             }
                         }
                     } elseif ($prop_id == "CML2_DETAIL_TEXT") {
                         if (array_key_exists($this->mess["IBLOCK_XML2_VALUE"], $value)) {
                             if (isset($value[$this->mess["IBLOCK_XML2_VALUE"]])) {
                                 $arElement["DETAIL_TEXT"] = $value[$this->mess["IBLOCK_XML2_VALUE"]];
                             } else {
                                 $arElement["DETAIL_TEXT"] = "";
                             }
                             if (isset($value[$this->mess["IBLOCK_XML2_TYPE"]])) {
                                 $arElement["DETAIL_TEXT_TYPE"] = $value[$this->mess["IBLOCK_XML2_TYPE"]];
                             } else {
                                 $arElement["DETAIL_TEXT_TYPE"] = "html";
                             }
                         }
                     } elseif ($prop_id == "CML2_PREVIEW_PICTURE") {
                         if (!is_array($this->preview) || !$arElement["PREVIEW_PICTURE"]) {
                             $arElement["PREVIEW_PICTURE"] = $this->MakeFileArray($value[$this->mess["IBLOCK_XML2_VALUE"]], array("PREVIEW_PICTURE"));
                             $arElement["PREVIEW_PICTURE"]["COPY_FILE"] = "Y";
                         }
                     }
                     continue;
                 }
                 $prop_id = $this->PROPERTY_MAP[$prop_id];
                 $prop_type = $this->arProperties[$prop_id]["PROPERTY_TYPE"];
                 if (!array_key_exists($prop_id, $arElement["PROPERTY_VALUES"])) {
                     $arElement["PROPERTY_VALUES"][$prop_id] = array();
                 }
                 //check for bitrix extended format
                 if (array_key_exists($this->mess["IBLOCK_XML2_PROPERTY_VALUE"], $value)) {
                     $i = 1;
                     $strPV = $this->mess["IBLOCK_XML2_PROPERTY_VALUE"];
                     $lPV = strlen($strPV);
                     foreach ($value as $k => $prop_value) {
                         if (substr($k, 0, $lPV) === $strPV) {
                             if (array_key_exists($this->mess["IBLOCK_XML2_SERIALIZED"], $prop_value)) {
                                 $prop_value[$this->mess["IBLOCK_XML2_VALUE"]] = $this->Unserialize($prop_value[$this->mess["IBLOCK_XML2_VALUE"]]);
                             }
                             if ($prop_type == "F") {
                                 $prop_value[$this->mess["IBLOCK_XML2_VALUE"]] = $this->MakeFileArray($prop_value[$this->mess["IBLOCK_XML2_VALUE"]], array($prop_id));
                             } elseif ($prop_type == "G") {
                                 $prop_value[$this->mess["IBLOCK_XML2_VALUE"]] = $this->GetSectionByXML_ID($this->arProperties[$prop_id]["LINK_IBLOCK_ID"], $prop_value[$this->mess["IBLOCK_XML2_VALUE"]]);
                             } elseif ($prop_type == "E") {
                                 $prop_value[$this->mess["IBLOCK_XML2_VALUE"]] = $this->GetElementByXML_ID($this->arProperties[$prop_id]["LINK_IBLOCK_ID"], $prop_value[$this->mess["IBLOCK_XML2_VALUE"]]);
                             } elseif ($prop_type == "L") {
                                 $prop_value[$this->mess["IBLOCK_XML2_VALUE"]] = $this->GetEnumByXML_ID($this->arProperties[$prop_id]["ID"], $prop_value[$this->mess["IBLOCK_XML2_VALUE"]]);
                             }
                             if (array_key_exists("bOld", $arElement["PROPERTY_VALUES"][$prop_id])) {
                                 if ($prop_type == "F") {
                                     foreach ($arElement["PROPERTY_VALUES"][$prop_id] as $PROPERTY_VALUE_ID => $PROPERTY_VALUE) {
                                         $arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID] = array("tmp_name" => "", "del" => "Y");
                                     }
                                     unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
                                 } else {
                                     $arElement["PROPERTY_VALUES"][$prop_id] = array();
                                 }
                             }
                             $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i] = array("VALUE" => $prop_value[$this->mess["IBLOCK_XML2_VALUE"]], "DESCRIPTION" => $prop_value[$this->mess["IBLOCK_XML2_DESCRIPTION"]]);
                         }
                         $i++;
                     }
                 } else {
                     if ($prop_type == "L" && !array_key_exists($this->mess["IBLOCK_XML2_VALUE_ID"], $value)) {
                         $l_key = $this->mess["IBLOCK_XML2_VALUE"];
                     } else {
                         $l_key = $this->mess["IBLOCK_XML2_VALUE_ID"];
                     }
                     $i = 0;
                     foreach ($value as $k => $prop_value) {
                         if (array_key_exists("bOld", $arElement["PROPERTY_VALUES"][$prop_id])) {
                             if ($prop_type == "F") {
                                 foreach ($arElement["PROPERTY_VALUES"][$prop_id] as $PROPERTY_VALUE_ID => $PROPERTY_VALUE) {
                                     $arElement["PROPERTY_VALUES"][$prop_id][$PROPERTY_VALUE_ID] = array("tmp_name" => "", "del" => "Y");
                                 }
                                 unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
                             } else {
                                 $arElement["PROPERTY_VALUES"][$prop_id] = array();
                             }
                         }
                         if ($prop_type == "L" && $k == $l_key) {
                             $prop_value = $this->GetEnumByXML_ID($this->arProperties[$prop_id]["ID"], $prop_value);
                         } elseif ($prop_type == "N" && isset($this->next_step["sdp"])) {
                             if (strlen($prop_value) > 0) {
                                 $prop_value = $this->ToFloat($prop_value);
                             }
                         }
                         $arElement["PROPERTY_VALUES"][$prop_id]["n" . $i] = array("VALUE" => $prop_value, "DESCRIPTION" => false);
                         $i++;
                     }
                 }
             }
         }
         //If there is no BaseUnit specified check prices for it
         if ((!array_key_exists($this->PROPERTY_MAP["CML2_BASE_UNIT"], $arElement["PROPERTY_VALUES"]) || is_array($arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BASE_UNIT"]]) && array_key_exists("bOld", $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BASE_UNIT"]])) && isset($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]])) {
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]] as $price) {
                 if (isset($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]]) && array_key_exists($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]], $this->PRICES_MAP) && array_key_exists($this->mess["IBLOCK_XML2_MEASURE"], $price)) {
                     $arElement["PROPERTY_VALUES"][$this->PROPERTY_MAP["CML2_BASE_UNIT"]] = array("n0" => $this->convertBaseUnitFromXmlToPropertyValue($price[$this->mess["IBLOCK_XML2_MEASURE"]]));
                     break;
                 }
             }
         }
         if ($arDBElement) {
             foreach ($arElement["PROPERTY_VALUES"] as $prop_id => $prop) {
                 if (is_array($arElement["PROPERTY_VALUES"][$prop_id]) && array_key_exists("bOld", $arElement["PROPERTY_VALUES"][$prop_id])) {
                     if ($this->arProperties[$prop_id]["PROPERTY_TYPE"] == "F") {
                         unset($arElement["PROPERTY_VALUES"][$prop_id]);
                     } else {
                         unset($arElement["PROPERTY_VALUES"][$prop_id]["bOld"]);
                     }
                 }
             }
             if (intval($arElement["MODIFIED_BY"]) <= 0 && $USER_ID > 0) {
                 $arElement["MODIFIED_BY"] = $USER_ID;
             }
             if (!array_key_exists("CODE", $arElement) && is_array($this->translit_on_update)) {
                 $arElement["CODE"] = CUtil::translit($arElement["NAME"], LANGUAGE_ID, $this->translit_on_update);
                 //Check if name was not changed in a way to update CODE
                 if (substr($arDBElement["CODE"], 0, strlen($arElement["CODE"])) === $arElement["CODE"]) {
                     unset($arElement["CODE"]);
                 } else {
                     $arElement["CODE"] = $this->CheckElementCode($this->next_step["IBLOCK_ID"], $arElement["CODE"]);
                 }
             }
             //Check if detail picture hasn't been changed
             if (isset($arElement["DETAIL_PICTURE"]) && !isset($arElement["PREVIEW_PICTURE"]) && is_array($arElement["DETAIL_PICTURE"]) && isset($arElement["DETAIL_PICTURE"]["external_id"]) && $this->arElementFilesId && $this->arElementFilesId["DETAIL_PICTURE"] && isset($this->arElementFiles[$this->arElementFilesId["DETAIL_PICTURE"][0]]) && $this->arElementFiles[$this->arElementFilesId["DETAIL_PICTURE"][0]]["EXTERNAL_ID"] === $arElement["DETAIL_PICTURE"]["external_id"] && $this->arElementFiles[$this->arElementFilesId["DETAIL_PICTURE"][0]]["DESCRIPTION"] === $arElement["DETAIL_PICTURE"]["description"]) {
                 unset($arElement["DETAIL_PICTURE"]);
             }
             $obElement->Update($arDBElement["ID"], $arElement, $bWF, true, $this->iblock_resize);
             //In case element was not active in database we have to activate its offers
             if ($arDBElement["ACTIVE"] != "Y") {
                 $this->ChangeOffersStatus($arDBElement["ID"], "Y", $bWF);
             }
             $arElement["ID"] = $arDBElement["ID"];
             if ($arElement["ID"]) {
                 $counter["UPD"]++;
             } else {
                 $this->LAST_ERROR = $obElement->LAST_ERROR;
                 $counter["ERR"]++;
             }
         } else {
             if (!array_key_exists("CODE", $arElement) && is_array($this->translit_on_add)) {
                 $arElement["CODE"] = $this->CheckElementCode($this->next_step["IBLOCK_ID"], CUtil::translit($arElement["NAME"], LANGUAGE_ID, $this->translit_on_add));
             }
             $arElement["IBLOCK_ID"] = $this->next_step["IBLOCK_ID"];
             $this->fillDefaultPropertyValues($arElement, $this->arProperties);
             $arElement["ID"] = $obElement->Add($arElement, $bWF, true, $this->iblock_resize);
             if ($arElement["ID"]) {
                 $counter["ADD"]++;
             } else {
                 $this->LAST_ERROR = $obElement->LAST_ERROR;
                 $counter["ERR"]++;
             }
         }
     } elseif (array_key_exists($this->mess["IBLOCK_XML2_PRICES"], $arXMLElement)) {
         //Collect price information for future use
         $arElement["PRICES"] = array();
         if (is_array($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]])) {
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_PRICES"]] as $price) {
                 if (isset($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]]) && array_key_exists($price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]], $this->PRICES_MAP)) {
                     $price["PRICE"] = $this->PRICES_MAP[$price[$this->mess["IBLOCK_XML2_PRICE_TYPE_ID"]]];
                     $arElement["PRICES"][] = $price;
                 }
             }
         }
         $arElement["DISCOUNTS"] = array();
         if (isset($arXMLElement[$this->mess["IBLOCK_XML2_DISCOUNTS"]])) {
             foreach ($arXMLElement[$this->mess["IBLOCK_XML2_DISCOUNTS"]] as $discount) {
                 if (isset($discount[$this->mess["IBLOCK_XML2_DISCOUNT_CONDITION"]]) && $discount[$this->mess["IBLOCK_XML2_DISCOUNT_CONDITION"]] === $this->mess["IBLOCK_XML2_DISCOUNT_COND_VOLUME"]) {
                     $discount_value = $this->ToInt($discount[$this->mess["IBLOCK_XML2_DISCOUNT_COND_VALUE"]]);
                     $discount_percent = $this->ToFloat($discount[$this->mess["IBLOCK_XML2_DISCOUNT_COND_PERCENT"]]);
                     if ($discount_value > 0 && $discount_percent > 0) {
                         $arElement["DISCOUNTS"][$discount_value] = $discount_percent;
                     }
                 }
             }
         }
         if ($arDBElement) {
             $arElement["ID"] = $arDBElement["ID"];
             $counter["UPD"]++;
         }
     }
     if (isset($arXMLElement[$this->mess["IBLOCK_XML2_STORE_AMOUNT_LIST"]])) {
         $arElement["STORE_AMOUNT"] = array();
         foreach ($arXMLElement[$this->mess["IBLOCK_XML2_STORE_AMOUNT_LIST"]] as $storeAmount) {
             if (isset($storeAmount[$this->mess["IBLOCK_XML2_STORE_ID"]])) {
                 $storeXMLID = $storeAmount[$this->mess["IBLOCK_XML2_STORE_ID"]];
                 $amount = $this->ToFloat($storeAmount[$this->mess["IBLOCK_XML2_AMOUNT"]]);
                 $arElement["STORE_AMOUNT"][$storeXMLID] = $amount;
             }
         }
     } elseif (array_key_exists($this->mess["IBLOCK_XML2_STORES"], $arXMLElement) || array_key_exists($this->mess["IBLOCK_XML2_STORE"], $arXMLElement)) {
         $arElement["STORE_AMOUNT"] = array();
         $rsStores = $this->_xml_file->GetList(array("ID" => "asc"), array("><LEFT_MARGIN" => array($arParent["LEFT_MARGIN"], $arParent["RIGHT_MARGIN"]), "NAME" => $this->mess["IBLOCK_XML2_STORE"]), array("ID", "ATTRIBUTES"));
         while ($arStore = $rsStores->Fetch()) {
             if (strlen($arStore["ATTRIBUTES"]) > 0) {
                 $info = unserialize($arStore["ATTRIBUTES"]);
                 if (is_array($info) && array_key_exists($this->mess["IBLOCK_XML2_STORE_ID"], $info) && array_key_exists($this->mess["IBLOCK_XML2_STORE_AMOUNT"], $info)) {
                     $arElement["STORE_AMOUNT"][$info[$this->mess["IBLOCK_XML2_STORE_ID"]]] = $this->ToFloat($info[$this->mess["IBLOCK_XML2_STORE_AMOUNT"]]);
                 }
             }
         }
     }
     if ($bMatch && $this->use_crc) {
         //nothing to do
     } elseif ($arElement["ID"] && $this->bCatalog && $this->isCatalogIblock) {
         $CML_LINK = $this->PROPERTY_MAP["CML2_LINK"];
         $arProduct = array("ID" => $arElement["ID"]);
         if (isset($arElement["QUANTITY"])) {
             $arProduct["QUANTITY"] = $arElement["QUANTITY"];
         } elseif (isset($arElement["STORE_AMOUNT"]) && !empty($arElement["STORE_AMOUNT"])) {
             $arProduct["QUANTITY"] = array_sum($arElement["STORE_AMOUNT"]);
         }
         $CML_LINK_ELEMENT = $arElement["PROPERTY_VALUES"][$CML_LINK];
         if (is_array($CML_LINK_ELEMENT) && isset($CML_LINK_ELEMENT["n0"])) {
             $CML_LINK_ELEMENT = $CML_LINK_ELEMENT["n0"];
         }
         if (is_array($CML_LINK_ELEMENT) && isset($CML_LINK_ELEMENT["VALUE"])) {
             $CML_LINK_ELEMENT = $CML_LINK_ELEMENT["VALUE"];
         }
         if (isset($arElement["BASE_WEIGHT"])) {
             $arProduct["WEIGHT"] = $arElement["BASE_WEIGHT"];
         } elseif ($CML_LINK_ELEMENT > 0) {
             $rsWeight = CIBlockElement::GetProperty($this->arProperties[$CML_LINK]["LINK_IBLOCK_ID"], $CML_LINK_ELEMENT, array(), array("CODE" => "CML2_TRAITS"));
             while ($arWeight = $rsWeight->Fetch()) {
                 if ($arWeight["DESCRIPTION"] == $this->mess["IBLOCK_XML2_WEIGHT"]) {
                     $arProduct["WEIGHT"] = $this->ToFloat($arWeight["VALUE"]) * 1000;
                 }
             }
         }
         if ($CML_LINK_ELEMENT > 0) {
             $rsUnit = CIBlockElement::GetProperty($this->arProperties[$CML_LINK]["LINK_IBLOCK_ID"], $CML_LINK_ELEMENT, array(), array("CODE" => "CML2_BASE_UNIT"));
             while ($arUnit = $rsUnit->Fetch()) {
                 if ($arUnit["DESCRIPTION"] > 0) {
                     $arProduct["MEASURE"] = $arUnit["DESCRIPTION"];
                 }
             }
         }
         if (isset($arElement["PRICES"])) {
             //Here start VAT handling
             //Check if all the taxes exists in BSM catalog
             $arTaxMap = array();
             $rsTaxProperty = CIBlockElement::GetProperty($this->arProperties[$CML_LINK]["LINK_IBLOCK_ID"], $arElement["PROPERTY_VALUES"][$CML_LINK], "sort", "asc", array("CODE" => "CML2_TAXES"));
             while ($arTaxProperty = $rsTaxProperty->Fetch()) {
                 if (strlen($arTaxProperty["VALUE"]) > 0 && strlen($arTaxProperty["DESCRIPTION"]) > 0 && !array_key_exists($arTaxProperty["DESCRIPTION"], $arTaxMap)) {
                     $arTaxMap[$arTaxProperty["DESCRIPTION"]] = array("RATE" => $this->ToFloat($arTaxProperty["VALUE"]), "ID" => $this->CheckTax($arTaxProperty["DESCRIPTION"], $this->ToFloat($arTaxProperty["VALUE"])));
                 }
             }
             //First find out if all the prices have TAX_IN_SUM true
             $TAX_IN_SUM = "Y";
             foreach ($arElement["PRICES"] as $price) {
                 if ($price["PRICE"]["TAX_IN_SUM"] !== "true") {
                     $TAX_IN_SUM = "N";
                     break;
                 }
             }
             //If there was found not included tax we'll make sure
             //that all prices has the same flag
             if ($TAX_IN_SUM === "N") {
                 foreach ($arElement["PRICES"] as $price) {
                     if ($price["PRICE"]["TAX_IN_SUM"] !== "false") {
                         $TAX_IN_SUM = "Y";
                         break;
                     }
                 }
                 //Check if there is a mix of tax in sum
                 //and correct it by recalculating all the prices
                 if ($TAX_IN_SUM === "Y") {
                     foreach ($arElement["PRICES"] as $key => $price) {
                         if ($price["PRICE"]["TAX_IN_SUM"] !== "true") {
                             $TAX_NAME = $price["PRICE"]["TAX_NAME"];
                             if (array_key_exists($TAX_NAME, $arTaxMap)) {
                                 $PRICE_WO_TAX = $this->ToFloat($price[$this->mess["IBLOCK_XML2_PRICE_FOR_ONE"]]);
                                 $PRICE = $PRICE_WO_TAX + $PRICE_WO_TAX / 100.0 * $arTaxMap[$TAX_NAME]["RATE"];
                                 $arElement["PRICES"][$key][$this->mess["IBLOCK_XML2_PRICE_FOR_ONE"]] = $PRICE;
                             }
                         }
                     }
                 }
             }
             foreach ($arElement["PRICES"] as $price) {
                 $TAX_NAME = $price["PRICE"]["TAX_NAME"];
                 if (array_key_exists($TAX_NAME, $arTaxMap)) {
                     $arProduct["VAT_ID"] = $arTaxMap[$TAX_NAME]["ID"];
                     break;
                 }
             }
             $arProduct["VAT_INCLUDED"] = $TAX_IN_SUM;
         }
         CCatalogProduct::Add($arProduct);
         if (isset($arElement["PRICES"])) {
             $this->SetProductPrice($arElement["ID"], $arElement["PRICES"], $arElement["DISCOUNTS"]);
         }
         if (isset($arElement["STORE_AMOUNT"])) {
             $this->ImportStoresAmount($arElement["STORE_AMOUNT"], $arElement["ID"], $counter);
         }
     }
     return $arElement["ID"];
 }
Example #2
0
         $bFieldsPres = True;
         break;
     }
 }
 if (!$bFieldsPres) {
     $strError .= GetMessage("IBLOCK_ADM_IMP_NO_FIELDS") . "<br>";
 }
 if (strlen($strError) <= 0) {
     $csvFile->SetPos($CUR_FILE_POS);
     if ($CUR_FILE_POS <= 0 && $bFirstHeaderTmp) {
         $arRes = $csvFile->Fetch();
     }
     $io = CBXVirtualIo::GetInstance();
     $bs = new CIBlockSection();
     $el = new CIBlockElement();
     $el->CancelWFSetMove();
     $tmpid = md5(uniqid(""));
     $arIBlockProperty = array();
     $bThereIsGroups = False;
     if ($CUR_FILE_POS > 0 && is_set($_SESSION, $CUR_LOAD_SESS_ID)) {
         if (is_set($_SESSION[$CUR_LOAD_SESS_ID], "tmpid")) {
             $tmpid = $_SESSION[$CUR_LOAD_SESS_ID]["tmpid"];
         }
         if (is_set($_SESSION[$CUR_LOAD_SESS_ID], "line_num")) {
             $line_num = intval($_SESSION[$CUR_LOAD_SESS_ID]["line_num"]);
         }
         if (is_set($_SESSION[$CUR_LOAD_SESS_ID], "correct_lines")) {
             $correct_lines = intval($_SESSION[$CUR_LOAD_SESS_ID]["correct_lines"]);
         }
         if (is_set($_SESSION[$CUR_LOAD_SESS_ID], "error_lines")) {
             $error_lines = intval($_SESSION[$CUR_LOAD_SESS_ID]["error_lines"]);