Esempio n. 1
0
 }
 // set starting filter value
 $arFilter = array("IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "SHOW_NEW" => "Y");
 // check type of user association to iblock elements and add user association to filter
 //echo "<pre>"; print_r($arParams); echo "</pre>";
 if ($arParams["ELEMENT_ASSOC"] == "PROPERTY_ID" && intval($arParams["ELEMENT_ASSOC_PROPERTY"]) > 0 && in_array($arParams["ELEMENT_ASSOC_PROPERTY"], $arPropertyIDs)) {
     $arFilter["PROPERTY_" . $arParams["ELEMENT_ASSOC_PROPERTY"]] = $USER->GetID();
 } else {
     $arFilter["CREATED_BY"] = $USER->GetID();
 }
 //echo "<pre>"; print_r($arFilter); echo "</pre>";
 // deleteting element
 if (check_bitrix_sessid() && $_REQUEST["delete"] == "Y" && $arResult["CAN_DELETE"]) {
     $arParams["ID"] = intval($_REQUEST["CODE"]);
     // try to get element with id, for user and for iblock
     $rsElement = CIBLockElement::GetList(array(), array_merge($arFilter, array("ID" => $arParams["ID"])));
     if ($arElement = $rsElement->GetNext()) {
         // delete one
         $DB->StartTransaction();
         if (!CIBlockElement::Delete($arElement["ID"])) {
             $DB->Rollback();
         } else {
             $DB->Commit();
         }
     }
 }
 if ($bWorkflowIncluded) {
     $rsWFStatus = CWorkflowStatus::GetList($by = "c_sort", $order = "asc", array("ACTIVE" => "Y"), $is_filtered);
     $arResult["WF_STATUS"] = array();
     while ($arStatus = $rsWFStatus->GetNext()) {
         $arResult["WF_STATUS"][$arStatus["ID"]] = $arStatus["TITLE"];
Esempio n. 2
0
 public function GetElement($types, $MS)
 {
     $strXML = "";
     $arSort = array("ID" => "ASC");
     $arResult["OFFER"] = array();
     if (self::CheckArray($this->IBLOCK_ID)) {
         foreach ($this->IBLOCK_ID as $ibl) {
             $rsElements = CIBlockElement::Getlist($arSort, $this->arFilter[$ibl], false, false, $this->arSelect);
             if ($this->DETAIL_PAGE_URL) {
                 $rsElements->SetUrlTemplates($this->DETAIL_PAGE_URL);
             }
             while ($arOffer = $rsElements->GetNext()) {
                 $flag = 0;
                 if ($this->USE_SKU && $this->sku_IBLOCK_ID[$ibl] > 0) {
                     if (is_array($this->arSKU_Filter[$ibl]) && sizeof($this->arSKU_Filter[$ibl]) > 0) {
                         $skuFILTER = $this->arSKU_Filter[$ibl];
                         $skuFILTER["IBLOCK_ID"] = $this->sku_IBLOCK_ID[$ibl];
                         $skuFILTER[CGMExport::GetProp($this->sku_PROPERTY[$ibl])] = $arOffer["ID"];
                         $skuFILTER["ACTIVE"] = "Y";
                     } else {
                         $skuFILTER["IBLOCK_ID"] = $this->sku_IBLOCK_ID[$ibl];
                         $skuFILTER["ACTIVE"] = "Y";
                         $skuFILTER[CGMExport::GetProp($this->sku_PROPERTY[$ibl])] = $arOffer["ID"];
                     }
                     $arOfferInOb = CIBLockElement::GetList($arSort, $skuFILTER, false, false, $this->arSelect);
                     if ($this->DETAIL_PAGE_URL) {
                         $arOfferInOb->SetUrlTemplates($this->DETAIL_PAGE_URL);
                     }
                     while ($arOfferIn = $arOfferInOb->GetNext()) {
                         $flag = 1;
                         $arOfferIn1["g:availability"] = "in stock";
                         $arOfferIn1["g:id"] = $arOfferIn["ID"];
                         $arOfferIn1["g:condition"] = $this->CONDITIONS;
                         $arOfferIn1["g:item_group_id"] = $arOffer["ID"];
                         switch ($this->NAMESCHEMA) {
                             case "NAME_OFFER":
                                 $arOfferIn1["title"] = text2xml($arOffer["NAME"], true, true, $this->ENCODING);
                                 break;
                             case "NAME_OFFER_SKU":
                                 $arOfferIn1["title"] = text2xml($arOffer["NAME"] . "/" . $arOfferIn["NAME"], true, true, $this->ENCODING);
                                 break;
                             default:
                                 $arOfferIn1["title"] = text2xml($arOfferIn["NAME"], true, true, $this->ENCODING);
                                 break;
                         }
                         $arOfferIn1["g:price"] = $this->yandex_GetPrice(array("IBLOCK_ID" => $this->sku_IBLOCK_ID[$ibl], "ID" => $arOfferIn["ID"]));
                         if ($arOfferIn1["g:price"] > 0) {
                             $arOfferIn1["g:price"] .= " " . $this->baseCur;
                         }
                         $tr = CCatalogProduct::GetByID($arOfferIn["ID"]);
                         if ($tr["QUANTITY_TRACE"] == "N") {
                             $arOfferIn1["g:availability"] = "in stock";
                         } else {
                             if ($tr["QUANTITY"] > 0) {
                                 $arOfferIn1["g:availability"] = "in stock";
                             } else {
                                 if ($this->FORORDER) {
                                     $arOfferIn1["g:availability"] = "preorder";
                                 } else {
                                     $arOfferIn1["g:availability"] = "out of stock";
                                 }
                             }
                         }
                         $arOfferIn1["g:product_type"] = str_replace(">", "&gt;", $this->GOOGLE_CATEGORY[$arOffer["IBLOCK_SECTION_ID"]]["THIS"]);
                         $arOfferIn1["g:google_product_category"] = str_replace(">", "&gt;", $this->GOOGLE_CATEGORY[$arOffer["IBLOCK_SECTION_ID"] ? $arOffer["IBLOCK_SECTION_ID"] : $arOffer["IBLOCK_ID"]]["GOOGLE"]);
                         if ($arOffer["DETAIL_PAGE_URL"]) {
                             $arOfferIn1["g:link_href"] = "http://" . $this->DOMAIN_NAME . $arOffer["DETAIL_PAGE_URL"] . "#" . $arOfferIn["ID"];
                         } else {
                             $arOfferIn1["g:link_href"] = "http://" . $this->DOMAIN_NAME . $arOffer["DETAIL_PAGE_URL"];
                         }
                         if ($arOfferIn["PREVIEW_PICTURE"]) {
                             $db_file = CFile::GetByID($arOfferIn["PREVIEW_PICTURE"]);
                             if ($ar_file = $db_file->Fetch()) {
                                 $arOfferIn1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                             }
                         }
                         if ($arOfferIn["DETAIL_PICTURE"]) {
                             $db_file = CFile::GetByID($arOfferIn["DETAIL_PICTURE"]);
                             if ($ar_file = $db_file->Fetch()) {
                                 $arOfferIn1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                             }
                         }
                         if ($this->GetPropInData("g:image_link", $this->XML_DATA)) {
                             $ph = CIBlockElement::GetProperty($this->sku_IBLOCK_ID, $arOfferIn["ID"], array("sort" => "asc"), array("ID" => $this->GetPropInData("g:image_link", $this->XML_DATA)));
                             while ($ob = $ph->GetNext()) {
                                 $arFile = CFile::GetFileArray($ob["VALUE"]);
                                 if (!empty($arFile)) {
                                     if (strpos($arFile["SRC"], "http") === false) {
                                         $pic = "http://" . $this->DOMAIN_NAME . implode("/", array_map("rawurlencode", explode("/", $arFile["SRC"])));
                                     } else {
                                         $ar = explode("http://", $arFile["SRC"]);
                                         $pic = "http://" . implode("/", array_map("rawurlencode", explode("/", $ar[1])));
                                     }
                                     $arOfferIn1["g:image_link"][] = $pic;
                                 }
                             }
                         }
                         if (!$arOfferIn["g:image_link"]) {
                             if ($arOffer["PREVIEW_PICTURE"]) {
                                 $db_file = CFile::GetByID($arOffer["PREVIEW_PICTURE"]);
                                 if ($ar_file = $db_file->Fetch()) {
                                     $arOfferIn1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                                 }
                             }
                             if ($arOffer["DETAIL_PICTURE"]) {
                                 $db_file = CFile::GetByID($arOffer["DETAIL_PICTURE"]);
                                 if ($ar_file = $db_file->Fetch()) {
                                     $arOfferIn1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                                 }
                             }
                             if ($this->GetPropInData("g:image_link", $this->XML_DATA)) {
                                 $ph = CIBlockElement::GetProperty($this->IBLOCK_ID, $arOffer["ID"], array("value_id" => "asc"), array("ID" => $this->GetPropInData("g:image_link", $this->XML_DATA)))->Fetch();
                                 $db_file = CFile::GetByID($ph["VALUE"]);
                                 if ($ar_file = $db_file->Fetch()) {
                                     $arOfferIn1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                                 }
                             }
                         }
                         if ($arOfferIn["PREVIEW_TEXT"]) {
                             $arOfferIn["PREVIEW_TEXT"] = text2xml($arOfferIn["PREVIEW_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOfferIn["~PREVIEW_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOfferIn["~PREVIEW_TEXT"]), true, true, $this->ENCODING);
                         }
                         if ($arOfferIn["DETAIL_TEXT"]) {
                             $arOfferIn["DETAIL_TEXT"] = text2xml($arOfferIn["DETAIL_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOfferIn["~DETAIL_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOfferIn["~DETAIL_TEXT"]), true, true, $this->ENCODING);
                         }
                         $arOfferIn1["description"] = strlen($arOfferIn["PREVIEW_TEXT"]) > strlen($arOfferIn["DETAIL_TEXT"]) ? $arOfferIn["PREVIEW_TEXT"] : $arOfferIn["DETAIL_TEXT"];
                         if ($this->GetPropInData("description", $this->XML_DATA)) {
                             $ph = CIBlockElement::GetProperty($this->sku_IBLOCK_ID, $arOfferIn["ID"], array("value_id" => "asc"), array("ID" => $this->GetPropInData("description", $this->XML_DATA)))->Fetch();
                             $arOfferIn1["description"] = text2xml($ph["VALUE"], true, true, $this->ENCODING);
                         }
                         if (!$arOfferIn1["description"]) {
                             if ($arOffer["PREVIEW_TEXT"]) {
                                 $arOffer["PREVIEW_TEXT"] = text2xml($arOffer["PREVIEW_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~PREVIEW_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~PREVIEW_TEXT"]), true, true, $this->ENCODING);
                             }
                             if ($arOffer["DETAIL_TEXT"]) {
                                 $arOffer["DETAIL_TEXT"] = text2xml($arOffer["DETAIL_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~DETAIL_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~DETAIL_TEXT"]), true, true, $this->ENCODING);
                             }
                             $arOfferIn1["description"] = strlen($arOffer["PREVIEW_TEXT"]) > strlen($arOffer["DETAIL_TEXT"]) ? $arOffer["PREVIEW_TEXT"] : $arOffer["DETAIL_TEXT"];
                         }
                         $tmpmas = $this->GetXMLData($arOfferIn);
                         if (is_array($tmpmas) && sizeof($tmpmas) > 0) {
                             foreach ($tmpmas as $code => $xml) {
                                 $arOfferIn1[$xml["PARAM"]][] = $xml["VALUE"];
                             }
                         }
                         if (intval($arOfferIn1["g:price"]) <= 0) {
                             continue;
                         }
                         foreach ($arOfferIn1 as $id => $val) {
                             if (is_array($val) && sizeof($val) > 0) {
                                 $arOfferIn1[$id] = array_filter(array_unique($val));
                                 if (sizeof($arOfferIn1[$id]) == 1) {
                                     $arOfferIn1[$id] = array_shift($arOfferIn1[$id]);
                                 }
                             }
                         }
                         $strXML .= $this->BuildXml($arOfferIn1, $types, $MS);
                         unset($arOfferIn1);
                     }
                     if ($flag == 1) {
                         continue;
                     }
                 }
                 $arOffer1["g:availability"] = true;
                 $arOffer1["g:id"] = $arOffer["ID"];
                 $arOffer1["g:condition"] = $this->CONDITIONS;
                 $arOffer1["title"] = text2xml($arOffer["NAME"], true, true, $this->ENCODING);
                 if (!$this->isCat) {
                     if ($this->GetPropInData("quantity", $this->XML_DATA)) {
                         $av = CIBlockElement::GetProperty($arOffer["IBLOCK_ID"], $arOffer["ID"], array("sort" => "asc"), array("ID" => $this->GetPropInData("quantity", $this->XML_DATA)))->Fetch();
                         if (IntVal($av["VALUE"]) > 0) {
                             $arOffer1["g:availability"] = "in stock";
                         } else {
                             if ($this->FORORDER) {
                                 $arOffer1["g:availability"] = "preorder";
                             } else {
                                 $arOffer1["g:availability"] = "out of stock";
                             }
                         }
                     }
                 }
                 $arOffer1["g:price"] = $this->yandex_GetPrice(array("IBLOCK_ID" => $ibl, "ID" => $arOffer['ID']));
                 if ($arOffer1["g:price"] > 0) {
                     $arOffer1["g:price"] .= " " . $this->baseCur;
                 }
                 if ($this->isCat) {
                     $tr = CCatalogProduct::GetByID($arOffer["ID"]);
                     if ($tr["QUANTITY_TRACE"] == "N") {
                         $arOffer1["g:availability"] = "in stock";
                     } else {
                         if ($tr["QUANTITY"] > 0) {
                             $arOffer1["g:availability"] = "in stock";
                         } else {
                             if ($this->FORORDER) {
                                 $arOffer1["g:availability"] = "preorder";
                             } else {
                                 $arOffer1["g:availability"] = "out of stock";
                             }
                         }
                     }
                 }
                 $arOffer1["g:product_type"] = str_replace(">", "&gt;", $this->GOOGLE_CATEGORY[$arOffer["IBLOCK_SECTION_ID"]]["THIS"]);
                 $arOffer1["g:google_product_category"] = str_replace(">", "&gt;", $this->GOOGLE_CATEGORY[$arOffer["IBLOCK_SECTION_ID"] ? $arOffer["IBLOCK_SECTION_ID"] : $arOffer["IBLOCK_ID"]]["GOOGLE"]);
                 if ($arOffer["DETAIL_PAGE_URL"]) {
                     $arOffer1["g:link_href"] = "http://" . $this->DOMAIN_NAME . $arOffer["DETAIL_PAGE_URL"];
                 }
                 if ($arOffer["PREVIEW_PICTURE"]) {
                     $db_file = CFile::GetByID($arOffer["PREVIEW_PICTURE"]);
                     if ($ar_file = $db_file->Fetch()) {
                         $arOffer1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                     }
                 }
                 if ($arOffer["DETAIL_PICTURE"]) {
                     $db_file = CFile::GetByID($arOffer["DETAIL_PICTURE"]);
                     if ($ar_file = $db_file->Fetch()) {
                         $arOffer1["g:image_link"] = "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])));
                     }
                 }
                 if ($this->GetPropInData("g:image_link", $this->XML_DATA)) {
                     $ph = CIBlockElement::GetProperty($arOffer['IBLOCK_ID'], $arOffer["ID"], array("sort" => "asc"), array("ID" => $this->GetPropInData("g:image_link", $this->XML_DATA)));
                     while ($ob = $ph->GetNext()) {
                         $arFile = CFile::GetFileArray($ob["VALUE"]);
                         if (!empty($arFile)) {
                             if (strpos($arFile["SRC"], "http") === false) {
                                 $pic = "http://" . $this->DOMAIN_NAME . implode("/", array_map("rawurlencode", explode("/", $arFile["SRC"])));
                             } else {
                                 $ar = explode("http://", $arFile["SRC"]);
                                 $pic = "http://" . implode("/", array_map("rawurlencode", explode("/", $ar[1])));
                             }
                             $arOffer1["g:image_link"][] = $pic;
                         }
                     }
                 }
                 if ($arOffer["PREVIEW_TEXT"]) {
                     $arOffer["PREVIEW_TEXT"] = text2xml($arOffer["PREVIEW_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~PREVIEW_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~PREVIEW_TEXT"]), true, true, $this->ENCODING);
                 }
                 if ($arOffer["DETAIL_TEXT"]) {
                     $arOffer["DETAIL_TEXT"] = text2xml($arOffer["DETAIL_TEXT_TYPE"] == "html" ? strip_tags(preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~DETAIL_TEXT"])) : preg_replace_callback("'&[^;]*;'", "yandex_replace_special", $arOffer["~DETAIL_TEXT"]), true, true, $this->ENCODING);
                 }
                 $arOffer1["description"] = strlen($arOffer["PREVIEW_TEXT"]) > strlen($arOffer["DETAIL_TEXT"]) ? $arOffer["PREVIEW_TEXT"] : $arOffer["DETAIL_TEXT"];
                 if ($this->GetPropInData("description", $this->XML_DATA)) {
                     $ph = CIBlockElement::GetProperty($arOffer, $arOffer["ID"], array("value_id" => "asc"), array("ID" => $this->GetPropInData("description", $this->XML_DATA)))->Fetch();
                     $arOffer1["description"] = text2xml($ph["VALUE"], true, true, $this->ENCODING);
                 }
                 $tmpmas = $this->GetXMLData($arOffer);
                 if (is_array($tmpmas) && sizeof($tmpmas) > 0) {
                     foreach ($tmpmas as $code => $xml) {
                         $arOffer1[$xml["PARAM"]][$code] = $xml["VALUE"];
                     }
                 }
                 if (intval($arOffer1["g:price"]) <= 0) {
                     continue;
                 }
                 $strXML .= $this->BuildXml($arOffer1, $types, $MS);
                 unset($arOffer1);
             }
         }
     }
     return $strXML;
 }