Ejemplo n.º 1
0
 public function getIBlockItems($IBLOCK_ID)
 {
     $items = array();
     foreach (CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $this->SECTION_ID) as $PID => $arLink) {
         if ($arLink["SMART_FILTER"] !== "Y") {
             continue;
         }
         $rsProperty = CIBlockProperty::GetByID($PID);
         $arProperty = $rsProperty->Fetch();
         if ($arProperty) {
             $items[$arProperty["ID"]] = array("ID" => $arProperty["ID"], "IBLOCK_ID" => $arProperty["IBLOCK_ID"], "CODE" => $arProperty["CODE"], "NAME" => $arProperty["NAME"], "PROPERTY_TYPE" => $arProperty["PROPERTY_TYPE"], "VALUES" => array());
             if ($arProperty["PROPERTY_TYPE"] == "N") {
                 $items[$arProperty["ID"]]["VALUES"] = array("MIN" => array("CONTROL_ID" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MIN"), "CONTROL_NAME" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MIN")), "MAX" => array("CONTROL_ID" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MAX"), "CONTROL_NAME" => htmlspecialcharsbx($this->FILTER_NAME . "_" . $arProperty["ID"] . "_MAX")));
             }
         }
     }
     return $items;
 }
Ejemplo n.º 2
0
	public function getIBlockItems($IBLOCK_ID)
	{
		$items = array();

		foreach(CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $this->SECTION_ID) as $PID => $arLink)
		{
			if($arLink["SMART_FILTER"] !== "Y")
				continue;

			$rsProperty = CIBlockProperty::GetByID($PID);
			$arProperty = $rsProperty->Fetch();
			if($arProperty)
			{
				$items[$arProperty["ID"]] = array(
					"ID" => $arProperty["ID"],
					"IBLOCK_ID" => $arProperty["IBLOCK_ID"],
					"CODE" => $arProperty["CODE"],
					"NAME" => $arProperty["NAME"],
					"PROPERTY_TYPE" => $arProperty["PROPERTY_TYPE"],
					"USER_TYPE" => $arProperty["USER_TYPE"],
					"USER_TYPE_SETTINGS" => $arProperty["USER_TYPE_SETTINGS"],
					"VALUES" => array(),
				);

				if($arProperty["PROPERTY_TYPE"] == "N")
				{
					$minID = $this->SAFE_FILTER_NAME.'_'.$arProperty['ID'].'_MIN';
					$maxID = $this->SAFE_FILTER_NAME.'_'.$arProperty['ID'].'_MAX';
					$items[$arProperty["ID"]]["VALUES"] = array(
						"MIN" => array(
							"CONTROL_ID" => $minID,
							"CONTROL_NAME" => $minID,
						),
						"MAX" => array(
							"CONTROL_ID" => $maxID,
							"CONTROL_NAME" => $maxID,
						),
					);
				}
			}
		}
		return $items;
	}
Ejemplo n.º 3
0
        echo GetMessage("IB_E_PROP_CODE_SHORT");
        ?>
</td>
					<td><?php 
        echo GetMessage("IB_E_PROP_MODIFY_SHORT");
        ?>
</td>
					<td><?php 
        echo GetMessage("IB_E_PROP_DELETE_SHORT");
        ?>
</td>
				</tr>
				<?php 
        $arPropList = array();
        if (0 < $ID) {
            $arPropLinks = CIBlockSectionPropertyLink::GetArray($ID, 0);
            $rsProps = CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $ID, "CHECK_PERMISSIONS" => "N"));
            while ($arProp = $rsProps->Fetch()) {
                if ('L' == $arProp['PROPERTY_TYPE']) {
                    $arProp['VALUES'] = array();
                    $rsLists = CIBlockProperty::GetPropertyEnum($arProp['ID'], array('SORT' => 'ASC', 'ID' => 'ASC'));
                    while ($res = $rsLists->Fetch()) {
                        $arProp['VALUES'][$res["ID"]] = array('ID' => $res["ID"], 'VALUE' => $res["VALUE"], 'SORT' => $res['SORT'], 'XML_ID' => $res["XML_ID"], 'DEF' => $res['DEF']);
                    }
                }
                if (array_key_exists($arProp["ID"], $arPropLinks)) {
                    $arProp["SECTION_PROPERTY"] = "Y";
                    $arProp["SMART_FILTER"] = $arPropLinks[$arProp["ID"]]["SMART_FILTER"];
                    $arProp["DISPLAY_TYPE"] = $arPropLinks[$arProp["ID"]]["DISPLAY_TYPE"];
                    $arProp["DISPLAY_EXPANDED"] = $arPropLinks[$arProp["ID"]]["DISPLAY_EXPANDED"];
                    $arProp["FILTER_HINT"] = $arPropLinks[$arProp["ID"]]["FILTER_HINT"];
Ejemplo n.º 4
0
 function ExportSmartFilter($level, $iblockId, $sectionId = false, $PROPERTY_MAP, $productIblockId = 0)
 {
     $propertyLinksBySection = array();
     if ($sectionId === false) {
         $propertyLinksBySection[0] = CIBlockSectionPropertyLink::GetArray($iblockId, 0);
         foreach ($propertyLinksBySection[0] as $PID => $arLink) {
             if ($arLink["INHERITED"] != "N" || !array_key_exists($PID, $PROPERTY_MAP)) {
                 unset($propertyLinksBySection[0][$PID]);
             } else {
                 if ($productIblockId > 0) {
                     $iblock_xml_id = $this->GetIBlockXML_ID($productIblockId, CIBlock::GetArrayByID($productIblockId, "XML_ID"));
                     $propertyLinksBySection[0][$PID]["IBLOCK_XML_ID"] = $iblock_xml_id;
                 }
             }
         }
         $arFilter = array("IBLOCK_ID" => $productIblockId ? $productIblockId : $iblockId, "CHECK_PERMISSIONS" => "N");
         $rsSections = CIBlockSection::GetList(array("left_margin" => "asc"), $arFilter, false, array("ID", "XML_ID", "IBLOCK_ID"));
         while ($arSection = $rsSections->Fetch()) {
             $section_xml_id = $this->GetSectionXML_ID($arSection["IBLOCK_ID"], $arSection["ID"], $arSection["XML_ID"]);
             $iblock_xml_id = $this->GetIBlockXML_ID($arSection["IBLOCK_ID"], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "XML_ID"));
             $propertyLinksBySection[$arSection["ID"]] = CIBlockSectionPropertyLink::GetArray($iblockId, $arSection["ID"]);
             foreach ($propertyLinksBySection[$arSection["ID"]] as $PID => $arLink) {
                 if ($arLink["INHERITED"] != "N" || !array_key_exists($PID, $PROPERTY_MAP)) {
                     unset($propertyLinksBySection[$arSection["ID"]][$PID]);
                 } else {
                     $propertyLinksBySection[$arSection["ID"]][$PID]["IBLOCK_XML_ID"] = $iblock_xml_id;
                     $propertyLinksBySection[$arSection["ID"]][$PID]["SECTION_XML_ID"] = $section_xml_id;
                 }
             }
         }
     } else {
         $propertyLinksBySection[$sectionId] = CIBlockSectionPropertyLink::GetArray($iblockId, $sectionId);
         foreach ($propertyLinksBySection[$sectionId] as $PID => $arLink) {
             if ($arLink["INHERITED"] != "N" || !array_key_exists($PID, $PROPERTY_MAP)) {
                 unset($propertyLinksBySection[$sectionId][$PID]);
             }
         }
     }
     $first = true;
     foreach ($propertyLinksBySection as $arPropLink) {
         if (!empty($arPropLink)) {
             if ($first) {
                 fwrite($this->fp, str_repeat("\t", $level) . "<" . GetMessage("IBLOCK_XML2_SECTION_PROPERTIES") . ">\n");
                 $first = false;
             }
             foreach ($arPropLink as $PID => $arLink) {
                 $xmlLink = array(GetMessage("IBLOCK_XML2_ID") => $PROPERTY_MAP[$PID], GetMessage("IBLOCK_XML2_SMART_FILTER") => $arLink["SMART_FILTER"] == "Y" ? "true" : "false", GetMessage("IBLOCK_XML2_SMART_FILTER_DISPLAY_TYPE") => $arLink["DISPLAY_TYPE"], GetMessage("IBLOCK_XML2_SMART_FILTER_DISPLAY_EXPANDED") => $arLink["DISPLAY_EXPANDED"] == "Y" ? "true" : "false", GetMessage("IBLOCK_XML2_SMART_FILTER_HINT") => $arLink["FILTER_HINT"]);
                 if (isset($arLink["IBLOCK_XML_ID"])) {
                     $xmlLink[GetMessage("IBLOCK_XML2_BX_LINKED_IBLOCK")] = $arLink["IBLOCK_XML_ID"];
                 }
                 if (isset($arLink["SECTION_XML_ID"])) {
                     $xmlLink[GetMessage("IBLOCK_XML2_GROUP")] = $arLink["SECTION_XML_ID"];
                 }
                 fwrite($this->fp, $this->formatXMLNode($level + 1, GetMessage("IBLOCK_XML2_PROPERTY"), $xmlLink));
             }
         }
     }
     if (!$first) {
         fwrite($this->fp, str_repeat("\t", $level) . "</" . GetMessage("IBLOCK_XML2_SECTION_PROPERTIES") . ">\n");
     }
 }
Ejemplo n.º 5
0
 public function executeComponent()
 {
     if (!CModule::IncludeModule('sale')) {
         ShowError("Module sale not installed!");
         return;
     }
     if (!CModule::IncludeModule('catalog')) {
         ShowError("Module catalog not installed!");
         return;
     }
     $this->arResult["BITRIX_CATEGORY_ID"] = isset($this->arParams["BITRIX_CATEGORY_ID"]) ? $this->arParams["BITRIX_CATEGORY_ID"] : 0;
     $this->arResult["IBLOCK_ID"] = isset($this->arParams["IBLOCK_ID"]) ? $this->arParams["IBLOCK_ID"] : 0;
     if (isset($this->arParams["EBAY_CATEGORY_ID"])) {
         $this->arResult["EBAY_CATEGORY_ID"] = $this->arParams["EBAY_CATEGORY_ID"];
     } else {
         $this->arResult["EBAY_CATEGORY_ID"] = $this->getMappedEbayCategoryId($this->arResult["BITRIX_CATEGORY_ID"]);
     }
     $this->arResult["TOP_CATEGORIES_LIST"] = $this->getTopCategories();
     $this->arResult["VARIATIONS_BLOCK_ID"] = 'SALE_EBAY_CAT_' . $this->arResult["EBAY_CATEGORY_ID"] . '_VARIATIONS';
     $siteRes = CIBlock::GetSite($this->arResult["IBLOCK_ID"]);
     //todo: It can be many sites for one iblock.
     if ($site = $siteRes->Fetch()) {
         $this->arResult["SITE_ID"] = $site["LID"];
     } else {
         $this->arResult["SITE_ID"] = "";
     }
     if (strlen($this->arResult["EBAY_CATEGORY_ID"]) > 0) {
         $this->arResult["CATEGORY_AND_PARENTS_INFO"] = $this->getCategoryAndParentsInfo($this->arResult["EBAY_CATEGORY_ID"]);
         if (isset($this->arResult["CATEGORY_AND_PARENTS_INFO"][1]["CATEGORY_ID"])) {
             $this->arResult["TOP_CATEGORY_ID"] = $this->arResult["CATEGORY_AND_PARENTS_INFO"][1]["CATEGORY_ID"];
         }
         $this->arResult["EBAY_CATEGORY_VARIATIONS"] = \Bitrix\Sale\TradingPlatform\Ebay\Helper::getEbayCategoryVariations($this->arResult["EBAY_CATEGORY_ID"], $this->arResult["SITE_ID"]);
         if (isset($this->arParams["VARIATIONS_VALUES"])) {
             $this->arResult["VARIATIONS_VALUES"] = $this->arParams["VARIATIONS_VALUES"];
         } else {
             $this->arResult["VARIATIONS_VALUES"] = $this->getVariationsValues($this->arResult["IBLOCK_ID"], $this->arResult["EBAY_CATEGORY_ID"], $this->arResult["EBAY_CATEGORY_VARIATIONS"]);
         }
     } else {
         $this->arResult["VARIATIONS_VALUES"] = array('' => '');
         $this->arResult["EBAY_CATEGORY_VARIATIONS"] = array();
     }
     $this->arResult["CATEGORY_PROPS"] = \CIBlockSectionPropertyLink::GetArray($this->arParams["IBLOCK_ID"], $this->arParams["BITRIX_CATEGORY_ID"]);
     $rsProps = \CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $this->arParams["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
     while ($arProp = $rsProps->Fetch()) {
         if (isset($this->arResult["CATEGORY_PROPS"][$arProp["ID"]])) {
             $this->arResult["CATEGORY_PROPS"][$arProp["ID"]]["NAME"] = $arProp["NAME"];
         }
     }
     $this->arResult["IBLOCK_IDS"] = array($this->arParams["IBLOCK_ID"] => Loc::getMessage("SALE_EBAY_SEC_CATEGORY_PROP"));
     $arOffers = \CCatalogSKU::GetInfoByProductIBlock($this->arParams["IBLOCK_ID"]);
     if (is_array($arOffers) && !empty($arOffers)) {
         $this->arResult["OFFERS_IBLOCK_ID"] = $arOffers["IBLOCK_ID"];
         $this->arResult["CATEGORY_OFFERS_PROPS"] = \CIBlockSectionPropertyLink::GetArray($arOffers["IBLOCK_ID"], $this->arParams["BITRIX_CATEGORY_ID"]);
         $rsProps = \CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $arOffers["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
         while ($arProp = $rsProps->Fetch()) {
             if (isset($this->arResult["CATEGORY_OFFERS_PROPS"][$arProp["ID"]])) {
                 $this->arResult["CATEGORY_OFFERS_PROPS"][$arProp["ID"]]["NAME"] = $arProp["NAME"];
             }
         }
         $this->arResult["IBLOCK_IDS"][$arOffers["IBLOCK_ID"]] = Loc::getMessage("SALE_EBAY_SEC_OFFERS_PROP");
     }
     $this->IncludeComponentTemplate();
 }
Ejemplo n.º 6
0
 function Delete($ID, $bCheckPermissions = true)
 {
     $err_mess = "FILE: " . __FILE__ . "<br>LINE: ";
     global $DB, $APPLICATION, $USER;
     $ID = IntVal($ID);
     $APPLICATION->ResetException();
     $db_events = GetModuleEvents("iblock", "OnBeforeIBlockSectionDelete");
     while ($arEvent = $db_events->Fetch()) {
         if (ExecuteModuleEventEx($arEvent, array($ID)) === false) {
             $err = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME'];
             if ($ex = $APPLICATION->GetException()) {
                 $err .= ': ' . $ex->GetString();
             }
             $APPLICATION->throwException($err);
             return false;
         }
     }
     $s = CIBlockSection::GetList(array(), array("ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N"));
     if ($s = $s->Fetch()) {
         CIBlock::_transaction_lock($s["IBLOCK_ID"]);
         $iblockelements = CIBlockElement::GetList(array(), array("SECTION_ID" => $ID, "SHOW_HISTORY" => "Y", "IBLOCK_ID" => $s["IBLOCK_ID"]), false, false, array("ID", "IBLOCK_ID", "WF_PARENT_ELEMENT_ID"));
         while ($iblockelement = $iblockelements->Fetch()) {
             $strSql = "\n\t\t\t\t\tSELECT IBLOCK_SECTION_ID\n\t\t\t\t\tFROM b_iblock_section_element\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ELEMENT_ID = " . $iblockelement["ID"] . "\n\t\t\t\t\t\tAND IBLOCK_SECTION_ID<>" . $ID . "\n\t\t\t\t\t\tAND ADDITIONAL_PROPERTY_ID IS NULL\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\tIBLOCK_SECTION_ID\n\t\t\t\t";
             $db_section_element = $DB->Query($strSql);
             if ($ar_section_element = $db_section_element->Fetch()) {
                 $DB->Query("\n\t\t\t\t\t\tUPDATE b_iblock_element\n\t\t\t\t\t\tSET IBLOCK_SECTION_ID=" . $ar_section_element["IBLOCK_SECTION_ID"] . "\n\t\t\t\t\t\tWHERE ID=" . IntVal($iblockelement["ID"]) . "\n\t\t\t\t\t", false, $err_mess . __LINE__);
             } elseif (IntVal($iblockelement["WF_PARENT_ELEMENT_ID"]) <= 0) {
                 if (!CIBlockElement::Delete($iblockelement["ID"])) {
                     return false;
                 }
             } else {
                 $DB->Query("\n\t\t\t\t\t\tUPDATE b_iblock_element\n\t\t\t\t\t\tSET IBLOCK_SECTION_ID=NULL, IN_SECTIONS='N'\n\t\t\t\t\t\tWHERE ID=" . IntVal($iblockelement["ID"]) . "\n\t\t\t\t\t", false, $err_mess . __LINE__);
             }
         }
         $iblocksections = CIBlockSection::GetList(array(), array("SECTION_ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N"), false, array("ID"));
         while ($iblocksection = $iblocksections->Fetch()) {
             if (!CIBlockSection::Delete($iblocksection["ID"], $bCheckPermissions)) {
                 return false;
             }
         }
         CFile::Delete($s["PICTURE"]);
         CFile::Delete($s["DETAIL_PICTURE"]);
         static $arDelCache;
         if (!is_array($arDelCache)) {
             $arDelCache = array();
         }
         if (!is_set($arDelCache, $s["IBLOCK_ID"])) {
             $arDelCache[$s["IBLOCK_ID"]] = false;
             $db_ps = $DB->Query("SELECT ID,IBLOCK_ID,VERSION,MULTIPLE FROM b_iblock_property WHERE PROPERTY_TYPE='G' AND (LINK_IBLOCK_ID=" . $s["IBLOCK_ID"] . " OR LINK_IBLOCK_ID=0 OR LINK_IBLOCK_ID IS NULL)", false, $err_mess . __LINE__);
             while ($ar_ps = $db_ps->Fetch()) {
                 if ($ar_ps["VERSION"] == 2) {
                     if ($ar_ps["MULTIPLE"] == "Y") {
                         $strTable = "b_iblock_element_prop_m" . $ar_ps["IBLOCK_ID"];
                     } else {
                         $strTable = "b_iblock_element_prop_s" . $ar_ps["IBLOCK_ID"];
                     }
                 } else {
                     $strTable = "b_iblock_element_property";
                 }
                 $arDelCache[$s["IBLOCK_ID"]][$strTable][] = $ar_ps["ID"];
             }
         }
         if ($arDelCache[$s["IBLOCK_ID"]]) {
             foreach ($arDelCache[$s["IBLOCK_ID"]] as $strTable => $arProps) {
                 if (strncmp("b_iblock_element_prop_s", $strTable, 23) == 0) {
                     foreach ($arProps as $prop_id) {
                         $strSql = "UPDATE " . $strTable . " SET PROPERTY_" . $prop_id . "=null,DESCRIPTION_" . $prop_id . "=null WHERE PROPERTY_" . $prop_id . "=" . $s["ID"];
                         if (!$DB->Query($strSql, false, $err_mess . __LINE__)) {
                             return false;
                         }
                     }
                 } elseif (strncmp("b_iblock_element_prop_m", $strTable, 23) == 0) {
                     $strSql = "SELECT IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"];
                     $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
                     while ($ar = $rs->Fetch()) {
                         $strSql = "\n\t\t\t\t\t\t\t\tUPDATE " . str_replace("prop_m", "prop_s", $strTable) . "\n\t\t\t\t\t\t\t\tSET\tPROPERTY_" . $ar["IBLOCK_PROPERTY_ID"] . "=null,\n\t\t\t\t\t\t\t\t\tDESCRIPTION_" . $ar["IBLOCK_PROPERTY_ID"] . "=null\n\t\t\t\t\t\t\t\tWHERE IBLOCK_ELEMENT_ID = " . $ar["IBLOCK_ELEMENT_ID"] . "\n\t\t\t\t\t\t\t";
                         if (!$DB->Query($strSql, false, $err_mess . __LINE__)) {
                             return false;
                         }
                     }
                     $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"];
                     if (!$DB->Query($strSql, false, $err_mess . __LINE__)) {
                         return false;
                     }
                 } else {
                     $strSql = "DELETE FROM " . $strTable . " WHERE IBLOCK_PROPERTY_ID IN (" . implode(", ", $arProps) . ") AND VALUE_NUM=" . $s["ID"];
                     if (!$DB->Query($strSql, false, $err_mess . __LINE__)) {
                         return false;
                     }
                 }
             }
         }
         CIBlockSectionPropertyLink::DeleteBySection($ID);
         $DB->Query("DELETE FROM b_iblock_section_element WHERE IBLOCK_SECTION_ID=" . IntVal($ID), false, $err_mess . __LINE__);
         if (CModule::IncludeModule("search")) {
             CSearch::DeleteIndex("iblock", "S" . $ID);
         }
         $GLOBALS["USER_FIELD_MANAGER"]->Delete("IBLOCK_" . $s["IBLOCK_ID"] . "_SECTION", $ID);
         //Delete the hole in the tree
         $ss = $DB->Query("\n\t\t\t\tSELECT\n\t\t\t\t\tIBLOCK_ID,\n\t\t\t\t\tLEFT_MARGIN,\n\t\t\t\t\tRIGHT_MARGIN\n\t\t\t\tFROM\n\t\t\t\t\tb_iblock_section\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $s["ID"] . "\n\t\t\t");
         $ss = $ss->Fetch();
         if ($ss["RIGHT_MARGIN"] > 0 && $ss["LEFT_MARGIN"] > 0) {
             $DB->Query("\n\t\t\t\t\tUPDATE b_iblock_section SET\n\t\t\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t\t\t,RIGHT_MARGIN = RIGHT_MARGIN - 2\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ID = " . $ss["IBLOCK_ID"] . "\n\t\t\t\t\t\tAND RIGHT_MARGIN > " . $ss["RIGHT_MARGIN"] . "\n\t\t\t\t");
             $DB->Query("\n\t\t\t\t\tUPDATE b_iblock_section SET\n\t\t\t\t\t\tTIMESTAMP_X=" . ($DB->type == "ORACLE" ? "NULL" : "TIMESTAMP_X") . "\n\t\t\t\t\t\t,LEFT_MARGIN = LEFT_MARGIN - 2\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tIBLOCK_ID = " . $ss["IBLOCK_ID"] . "\n\t\t\t\t\t\tAND LEFT_MARGIN > " . $ss["LEFT_MARGIN"] . "\n\t\t\t\t");
         }
         $obSectionRights = new CIBlockSectionRights($s["IBLOCK_ID"], $ID);
         $obSectionRights->DeleteAllRights();
         /************* QUOTA *************/
         $_SESSION["SESS_RECOUNT_DB"] = "Y";
         /************* QUOTA *************/
         $arIBlockFields = CIBlock::GetArrayByID($s["IBLOCK_ID"], "FIELDS");
         if ($arIBlockFields["LOG_SECTION_DELETE"]["IS_REQUIRED"] == "Y") {
             $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0;
             $db_events = GetModuleEvents("main", "OnBeforeEventLog");
             $arEvent = $db_events->Fetch();
             if (!$arEvent || ExecuteModuleEventEx($arEvent, array($USER_ID)) === false) {
                 $rsSection = CIBlockSection::GetList(array(), array("=ID" => $ID, "CHECK_PERMISSIONS" => $bCheckPermissions ? "Y" : "N"), false, array("LIST_PAGE_URL", "NAME", "CODE"));
                 $arSection = $rsSection->GetNext();
                 $res = array("ID" => $ID, "CODE" => $arSection["CODE"], "NAME" => $arSection["NAME"], "SECTION_NAME" => CIBlock::GetArrayByID($s["IBLOCK_ID"], "SECTION_NAME"), "USER_ID" => $USER_ID, "IBLOCK_PAGE_URL" => $arSection["LIST_PAGE_URL"]);
                 CEventLog::Log("IBLOCK", "IBLOCK_SECTION_DELETE", "iblock", $s["IBLOCK_ID"], serialize($res));
             }
         }
         $res = $DB->Query("DELETE FROM b_iblock_section WHERE ID=" . IntVal($ID), false, $err_mess . __LINE__);
         if ($res) {
             $db_events = GetModuleEvents("iblock", "OnAfterIBlockSectionDelete");
             while ($arEvent = $db_events->Fetch()) {
                 ExecuteModuleEventEx($arEvent, array($s));
             }
             if (defined("BX_COMP_MANAGED_CACHE")) {
                 $GLOBALS["CACHE_MANAGER"]->ClearByTag("iblock_id_" . $s["IBLOCK_ID"]);
             }
         }
         return $res;
     }
     return true;
 }
Ejemplo n.º 7
0
 /**
  * <p>Функция удаляет информационный блок.</p>
  *
  *
  *
  *
  * @param int $ID  Код информационного блока.
  *
  *
  *
  * @return bool <a href="http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockdelete.php">OnBeforeIBlockDelete</a><a
  * name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?<br>if($USER-&gt;IsAdmin())<br>{<br>	$DB-&gt;StartTransaction();<br>	if(!CIBlock::Delete($iblock_id))<br>	{<br>		$strWarning .= GetMessage("IBLOCK_DELETE_ERROR");<br>		$DB-&gt;Rollback();<br>	}<br>	else<br>		$DB-&gt;Commit();<br>}<br>?&gt;<br>
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/delete.php
  * @author Bitrix
  */
 public static function Delete($ID)
 {
     $err_mess = "FILE: " . __FILE__ . "<br>LINE: ";
     /** @global CDatabase $DB */
     global $DB;
     /** @global CMain $APPLICATION */
     global $APPLICATION;
     /** @global CUserTypeManager $USER_FIELD_MANAGER */
     global $USER_FIELD_MANAGER;
     /** @global CCacheManager $CACHE_MANAGER */
     global $CACHE_MANAGER;
     $ID = IntVal($ID);
     $APPLICATION->ResetException();
     foreach (GetModuleEvents("iblock", "OnBeforeIBlockDelete", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID)) === false) {
             $err = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME'];
             $ex = $APPLICATION->GetException();
             if (is_object($ex)) {
                 $err .= ': ' . $ex->GetString();
             }
             $APPLICATION->throwException($err);
             return false;
         }
     }
     foreach (GetModuleEvents("iblock", "OnIBlockDelete", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID));
     }
     $iblockSections = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $ID, "DEPTH_LEVEL" => 1, "CHECK_PERMISSIONS" => "N"), false, array("ID"));
     while ($iblockSection = $iblockSections->Fetch()) {
         if (!CIBlockSection::Delete($iblockSection["ID"], false)) {
             return false;
         }
     }
     $iblockElements = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $ID, "SHOW_NEW" => "Y", "CHECK_PERMISSIONS" => "N"), false, false, array("IBLOCK_ID", "ID"));
     while ($iblockElement = $iblockElements->Fetch()) {
         if (!CIBlockElement::Delete($iblockElement["ID"])) {
             return false;
         }
     }
     $props = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $ID, "CHECK_PERMISSIONS" => "N"));
     while ($property = $props->Fetch()) {
         if (!CIBlockProperty::Delete($property["ID"])) {
             return false;
         }
     }
     $seq = new CIBlockSequence($ID);
     $seq->Drop(true);
     $obIBlockRights = new CIBlockRights($ID);
     $obIBlockRights->DeleteAllRights();
     CIBlockSectionPropertyLink::DeleteByIBlock($ID);
     $DB->Query("delete from b_iblock_offers_tmp where PRODUCT_IBLOCK_ID=" . $ID, false, $err_mess . __LINE__);
     $DB->Query("delete from b_iblock_offers_tmp where OFFERS_IBLOCK_ID=" . $ID, false, $err_mess . __LINE__);
     if (!$DB->Query("DELETE FROM b_iblock_messages WHERE IBLOCK_ID = " . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     if (!$DB->Query("DELETE FROM b_iblock_fields WHERE IBLOCK_ID = " . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     $USER_FIELD_MANAGER->OnEntityDelete("IBLOCK_" . $ID . "_SECTION");
     if (!$DB->Query("DELETE FROM b_iblock_group WHERE IBLOCK_ID=" . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     if (!$DB->Query("DELETE FROM b_iblock_rss WHERE IBLOCK_ID=" . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     if (!$DB->Query("DELETE FROM b_iblock_site WHERE IBLOCK_ID=" . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     if (!$DB->Query("DELETE FROM b_iblock WHERE ID=" . $ID, false, $err_mess . __LINE__)) {
         return false;
     }
     $DB->Query("DROP TABLE b_iblock_element_prop_s" . $ID, true, $err_mess . __LINE__);
     $DB->Query("DROP TABLE b_iblock_element_prop_m" . $ID, true, $err_mess . __LINE__);
     $DB->Query("DROP SEQUENCE sq_b_iblock_element_prop_m" . $ID, true, $err_mess . __LINE__);
     CIBlock::CleanCache($ID);
     if (defined("BX_COMP_MANAGED_CACHE")) {
         $CACHE_MANAGER->ClearByTag("iblock_id_" . $ID);
     }
     $_SESSION["SESS_RECOUNT_DB"] = "Y";
     return true;
 }
Ejemplo n.º 8
0
if(!empty($PROP)):
	if ($arIBlock["SECTION_PROPERTY"] === "Y" || defined("CATALOG_PRODUCT"))
	{
		$arPropLinks = array("IBLOCK_ELEMENT_PROP_VALUE");
		if(is_array($str_IBLOCK_ELEMENT_SECTION) && !empty($str_IBLOCK_ELEMENT_SECTION))
		{
			foreach($str_IBLOCK_ELEMENT_SECTION as $section_id)
			{
				foreach(CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $section_id) as $PID => $arLink)
					$arPropLinks[$PID] = "PROPERTY_".$PID;
			}
		}
		else
		{
			foreach(CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, 0) as $PID => $arLink)
				$arPropLinks[$PID] = "PROPERTY_".$PID;
		}
		$tabControl->AddFieldGroup("IBLOCK_ELEMENT_PROPERTY", GetMessage("IBLOCK_ELEMENT_PROP_VALUE"), $arPropLinks, $bPropertyAjax);
	}

	$tabControl->AddSection("IBLOCK_ELEMENT_PROP_VALUE", GetMessage("IBLOCK_ELEMENT_PROP_VALUE"));

	foreach($PROP as $prop_code=>$prop_fields):
		$prop_values = $prop_fields["VALUE"];
		$tabControl->BeginCustomField("PROPERTY_".$prop_fields["ID"], $prop_fields["NAME"], $prop_fields["IS_REQUIRED"]==="Y");
		?>
		<tr id="tr_PROPERTY_<?echo $prop_fields["ID"];?>"<?if ($prop_fields["PROPERTY_TYPE"]=="F"):?> class="adm-detail-file-row"<?endif?>>
			<td class="adm-detail-valign-top" width="40%"><?if($prop_fields["HINT"]!=""):
				?><span id="hint_<?echo $prop_fields["ID"];?>"></span><script type="text/javascript">BX.hint_replace(BX('hint_<?echo $prop_fields["ID"];?>'), '<?echo CUtil::JSEscape($prop_fields["HINT"])?>');</script>&nbsp;<?
			endif;?><?echo $tabControl->GetCustomLabelHTML();?>:</td>
Ejemplo n.º 9
0
 /**
  * Returns list of properties IDs linked to the section according their "TYPE".
  * Property has to be not only linked to the section, but has to be marked as smart filter one.
  * - N - maps to Indexer::NUMERIC
  * - S - to Indexer::STRING
  * - F, E, G, L - to Indexer::DICTIONARY
  *
  * @param integer $sectionId Section for with properties will be returned.
  *
  * @return integer[]
  */
 protected function getSectionFilterProperty($sectionId)
 {
     if (!isset($this->sectionFilter[$sectionId])) {
         $properties = array();
         foreach (\CIBlockSectionPropertyLink::getArray($this->iblockId, $sectionId) as $PID => $link) {
             if ($link["SMART_FILTER"] === "Y") {
                 if ($link["PROPERTY_TYPE"] === "N") {
                     $properties[$link["PROPERTY_ID"]] = Storage::NUMERIC;
                 } elseif ($link["USER_TYPE"] === "DateTime") {
                     $properties[$link["PROPERTY_ID"]] = Storage::DATETIME;
                 } elseif ($link["PROPERTY_TYPE"] === "S") {
                     $properties[$link["PROPERTY_ID"]] = Storage::STRING;
                 } else {
                     $properties[$link["PROPERTY_ID"]] = Storage::DICTIONARY;
                 }
             }
         }
         if ($this->skuIblockId) {
             foreach (\CIBlockSectionPropertyLink::getArray($this->skuIblockId, $sectionId) as $PID => $link) {
                 if ($link["SMART_FILTER"] === "Y") {
                     if ($link["PROPERTY_TYPE"] === "N") {
                         $properties[$link["PROPERTY_ID"]] = Storage::NUMERIC;
                     } elseif ($link["USER_TYPE"] === "DateTime") {
                         $properties[$link["PROPERTY_ID"]] = Storage::DATETIME;
                     } elseif ($link["PROPERTY_TYPE"] === "S") {
                         $properties[$link["PROPERTY_ID"]] = Storage::STRING;
                     } else {
                         $properties[$link["PROPERTY_ID"]] = Storage::DICTIONARY;
                     }
                 }
             }
         }
         $this->sectionFilter[$sectionId] = $properties;
     }
     return $this->sectionFilter[$sectionId];
 }
Ejemplo n.º 10
0
						if(tbl.rows[i].style.display != 'none')
							display = 'none';
					}
					tr.style.display = display;
				}
			}
			</script>
		</td></tr>
		<?
		$arCatalog = false;
		if (CModule::IncludeModule("catalog"))
			$arCatalog = CCatalog::GetSkuInfoByProductID($IBLOCK_ID);

		if (is_array($arCatalog))
		{
			$arPropLinks = CIBlockSectionPropertyLink::GetArray($arCatalog["IBLOCK_ID"], 0);
		?>
		<tr colspan="2" class="heading">
			<td align="center"><?echo GetMessage("CAT_CEDIT_PROP_SKU_SECTION");?></td>
		</tr>
		<tr colspan="2"><td align="center">
			<table class="internal" id="table_SKU_SECTION_PROPERTY">
			<tr class="heading">
				<td><?echo GetMessage("CAT_CEDIT_PROP_TABLE_NAME");?></td>
				<td><?echo GetMessage("CAT_CEDIT_PROP_TABLE_TYPE");?></td>
				<td><?echo GetMessage("CAT_CEDIT_PROP_TABLE_SMART_FILTER");?></td>
				<td><?echo GetMessage("CAT_CEDIT_PROP_TABLE_ACTION");?></td></tr>
			<?
			if(CIBlockRights::UserHasRightTo($arCatalog["IBLOCK_ID"], $arCatalog["IBLOCK_ID"], "iblock_edit"))
				$arShadow = $arHidden = array(
					-1 => GetMessage("CAT_CEDIT_PROP_SELECT_CHOOSE"),
Ejemplo n.º 11
0
	function ExportProperties(&$PROPERTY_MAP)
	{
		$PROPERTY_MAP = array();

		fwrite($this->fp, "\t\t<".GetMessage("IBLOCK_XML2_PROPERTIES").">\n");

		if($this->bExtended)
		{
			$arElementFields = array(
				"CML2_ACTIVE" => GetMessage("IBLOCK_XML2_BX_ACTIVE"),
				"CML2_CODE" => GetMessage("IBLOCK_XML2_SYMBOL_CODE"),
				"CML2_SORT" => GetMessage("IBLOCK_XML2_SORT"),
				"CML2_ACTIVE_FROM" => GetMessage("IBLOCK_XML2_START_TIME"),
				"CML2_ACTIVE_TO" => GetMessage("IBLOCK_XML2_END_TIME"),
				"CML2_PREVIEW_TEXT" => GetMessage("IBLOCK_XML2_ANONS"),
				"CML2_DETAIL_TEXT" => GetMessage("IBLOCK_XML2_DETAIL"),
				"CML2_PREVIEW_PICTURE" => GetMessage("IBLOCK_XML2_PREVIEW_PICTURE"),
			);

			foreach($arElementFields as $key => $value)
				fwrite($this->fp, $this->formatXMLNode(3, GetMessage("IBLOCK_XML2_PROPERTY"), array(
					GetMessage("IBLOCK_XML2_ID") => $key,
					GetMessage("IBLOCK_XML2_NAME") => $value,
					GetMessage("IBLOCK_XML2_MULTIPLE") => "false",
				)));
		}

		$arFilter = array(
			"IBLOCK_ID" => $this->arIBlock["ID"],
			"ACTIVE" => "Y",
		);
		$arSort = array(
			"sort" => "asc",
		);

		$obProp = new CIBlockProperty();
		$rsProp = $obProp->GetList($arSort, $arFilter);
		while($arProp = $rsProp->Fetch())
		{
			fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY").">\n");

			$xml_id = $this->GetPropertyXML_ID($this->arIBlock["ID"], $arProp["NAME"], $arProp["ID"], $arProp["XML_ID"]);
			$PROPERTY_MAP[$arProp["ID"]] = $xml_id;
			fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_ID"), $xml_id));

			fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_NAME"), $arProp["NAME"]));
			fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_MULTIPLE"), ($arProp["MULTIPLE"]=="Y"? "true": "false")));
			if($arProp["PROPERTY_TYPE"]=="L")
			{
				fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_CHOICE_VALUES").">\n");
				$rsEnum = CIBlockProperty::GetPropertyEnum($arProp["ID"]);
				while($arEnum = $rsEnum->Fetch())
				{
					fwrite($this->fp, $this->formatXMLNode(5, GetMessage("IBLOCK_XML2_VALUE"), $arEnum["VALUE"]));
					if($this->bExtended)
					{
						fwrite($this->fp,
							"\t\t\t\t\t<".GetMessage("IBLOCK_XML2_CHOICE").">\n"
							.$this->formatXMLNode(6, GetMessage("IBLOCK_XML2_ID"), $arEnum["XML_ID"])
							.$this->formatXMLNode(6, GetMessage("IBLOCK_XML2_VALUE"), $arEnum["VALUE"])
							.$this->formatXMLNode(6, GetMessage("IBLOCK_XML2_BY_DEFAULT"), ($arEnum["DEF"]=="Y"? "true": "false"))
							.$this->formatXMLNode(6, GetMessage("IBLOCK_XML2_SORT"), intval($arEnum["SORT"]))
							."\t\t\t\t\t</".GetMessage("IBLOCK_XML2_CHOICE").">\n"
						);
					}
				}
				fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_CHOICE_VALUES").">\n");
			}

			if($this->bExtended)
			{
				fwrite($this->fp,
					$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_SORT"), intval($arProp["SORT"]))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_CODE"), $arProp["CODE"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_PROPERTY_TYPE"), $arProp["PROPERTY_TYPE"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_ROWS"), $arProp["ROW_COUNT"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_COLUMNS"), $arProp["COL_COUNT"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_LIST_TYPE"), $arProp["LIST_TYPE"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_FILE_EXT"), $arProp["FILE_TYPE"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_FIELDS_COUNT"), $arProp["MULTIPLE_CNT"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_LINKED_IBLOCK"), $this->GetIBlockXML_ID($arProp["LINK_IBLOCK_ID"]))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_WITH_DESCRIPTION"), ($arProp["WITH_DESCRIPTION"]=="Y"? "true": "false"))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_SEARCH"), ($arProp["SEARCHABLE"]=="Y"? "true": "false"))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_FILTER"), ($arProp["FILTRABLE"]=="Y"? "true": "false"))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_USER_TYPE"), $arProp["USER_TYPE"])
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_IS_REQUIRED"), ($arProp["IS_REQUIRED"]=="Y"? "true": "false"))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_BX_DEFAULT_VALUE"), serialize($arProp["DEFAULT_VALUE"]))
					.$this->formatXMLNode(4, GetMessage("IBLOCK_XML2_SERIALIZED"), 1)
				);
			}
			fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY").">\n");
		}
		fwrite($this->fp, "\t\t</".GetMessage("IBLOCK_XML2_PROPERTIES").">\n");

		if($this->bExtended)
		{
			$arPropLink = CIBlockSectionPropertyLink::GetArray($this->arIBlock["ID"], 0);
			foreach($arPropLink as $PID => $arLink)
				if($arLink["INHERITED"] != "N" || !array_key_exists($PID, $PROPERTY_MAP))
					unset($arPropLink[$PID]);
			if(!empty($arPropLink))
			{
				fwrite($this->fp, "\t\t<".GetMessage("IBLOCK_XML2_SECTION_PROPERTIES").">\n");
				foreach($arPropLink as $PID => $arLink)
				{
					fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY").">\n");
					fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($PROPERTY_MAP[$PID])."</".GetMessage("IBLOCK_XML2_ID").">\n");
					fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_SMART_FILTER").">".($arLink["SMART_FILTER"] == "Y"? "true": "false")."</".GetMessage("IBLOCK_XML2_SMART_FILTER").">\n");
					fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY").">\n");
				}
				fwrite($this->fp, "\t\t</".GetMessage("IBLOCK_XML2_SECTION_PROPERTIES").">\n");
			}
		}
	}
Ejemplo n.º 12
0
 /**
  * @param int $iblockId Iblock Id.
  * @param int $sectionId Section Id.
  * @return array Iblock properties list.
  */
 public static function getPropertiesList($iblockId, $sectionId = 0)
 {
     $result = \CIBlockSectionPropertyLink::GetArray($iblockId, $sectionId);
     $rsProps = \CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $iblockId, "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
     while ($arProp = $rsProps->Fetch()) {
         if (isset($result[$arProp["ID"]])) {
             $result[$arProp["ID"]]["NAME"] = $arProp["NAME"];
         }
     }
     return $result;
 }
Ejemplo n.º 13
0
             $arProperty["PROPERTY_TYPE"] = $_POST["PROPERTY_PROPERTY_TYPE"];
         }
     }
     if (!empty($arListValues)) {
         $arProperty["VALUES"] = $arListValues;
     }
 } elseif (is_array($arPropCheck)) {
     $arProperty = $arPropCheck;
     if ($arProperty['PROPERTY_TYPE'] == "L") {
         $arProperty['VALUES'] = array();
         $rsLists = CIBlockProperty::GetPropertyEnum($arProperty['ID'], array('SORT' => 'ASC', 'ID' => 'ASC'));
         while ($res = $rsLists->Fetch()) {
             $arProperty['VALUES'][$res["ID"]] = array('ID' => $res["ID"], 'VALUE' => $res["VALUE"], 'SORT' => $res['SORT'], 'XML_ID' => $res["XML_ID"], 'DEF' => $res['DEF']);
         }
     }
     $arPropLink = CIBlockSectionPropertyLink::GetArray($intIBlockID, 0);
     if (isset($arPropLink[$arProperty["ID"]])) {
         $arProperty["SECTION_PROPERTY"] = "Y";
         $arProperty["SMART_FILTER"] = $arPropLink[$arProperty["ID"]]["SMART_FILTER"];
     } else {
         $arProperty["SECTION_PROPERTY"] = "N";
         $arProperty["SMART_FILTER"] = "N";
     }
 } else {
     $arProperty = $arDefPropInfo;
     $arProperty["IBLOCK_ID"] = $intIBlockID;
 }
 if (!$bSectionPopup) {
     $aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("BT_ADM_IEP_TAB"), "ICON" => "iblock", "TITLE" => GetMessage("BT_ADM_IEP_TAB_TITLE")));
     $tabControl = new CAdminTabControl("tabControl", $aTabs);
     if ($ID > 0) {
Ejemplo n.º 14
0
            $arResult["VARIATIONS_LIST"] = \Bitrix\Sale\TradingPlatform\Ebay\Helper::getEbayCategoryVariations($category, $siteId);
            break;
        case "get_variation_values":
            $variationId = isset($_REQUEST['variationId']) ? trim($_REQUEST['variationId']) : '';
            $variationRes = Bitrix\Sale\TradingPlatform\Ebay\CategoryVariationTable::getById($variationId);
            if ($variation = $variationRes->fetch()) {
                $arResult["VARIATION_VALUES"] = $variation["VALUE"];
            }
            break;
        case "set_category_property_link":
            if (!\Bitrix\Main\Loader::includeModule('iblock')) {
                $arResult["ERROR"] = "Can't include module Iblock!";
            }
            $bitrixCategoryId = isset($_REQUEST['bitrixCategoryId']) ? trim($_REQUEST['bitrixCategoryId']) : '';
            $properyId = isset($_REQUEST['properyId']) ? trim($_REQUEST['properyId']) : '';
            CIBlockSectionPropertyLink::Add($bitrixCategoryId, $properyId);
            break;
        case "get_category_children":
            $ebayCategoryId = isset($_REQUEST['ebayCategoryId']) ? trim($_REQUEST['ebayCategoryId']) : '';
            $categoriesRes = \Bitrix\Sale\TradingPlatform\Ebay\CategoryTable::getList(array('select' => array('CATEGORY_ID', 'PARENT_ID', 'NAME'), 'order' => array('NAME' => 'ASC'), 'filter' => array('PARENT_ID' => $ebayCategoryId)));
            while ($cat = $categoriesRes->fetch()) {
                if ($cat["CATEGORY_ID"] != $ebayCategoryId) {
                    $arResult["CATEGORY_CHILDREN"][$cat["CATEGORY_ID"]] = $cat;
                }
            }
            break;
        default:
            $arResult["ERROR"] = "Wrong action!";
            break;
    }
} else {
Ejemplo n.º 15
0
				<td><?php 
    echo GetMessage("IBSEC_E_PROP_TABLE_SMART_FILTER");
    ?>
</td>
				<td><?php 
    echo GetMessage("IBSEC_E_PROP_TABLE_ACTION");
    ?>
</td>
			</tr>
			<?php 
    if (CIBlockRights::UserHasRightTo($IBLOCK_ID, $IBLOCK_ID, "iblock_edit")) {
        $arShadow = $arHidden = array(-1 => GetMessage("IBSEC_E_PROP_SELECT_CHOOSE"), 0 => GetMessage("IBSEC_E_PROP_SELECT_CREATE"));
    } else {
        $arShadow = $arHidden = array(-1 => GetMessage("IBSEC_E_PROP_SELECT_CHOOSE"));
    }
    $arPropLinks = CIBlockSectionPropertyLink::GetArray($arIBlock["ID"], $ID, $ID <= 0);
    $rsProps = CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $arIBlock["ID"], "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
    $rows = 0;
    while ($arProp = $rsProps->Fetch()) {
        if (array_key_exists($arProp["ID"], $arPropLinks)) {
            $rows++;
            $arLink = $arPropLinks[$arProp["ID"]];
            if ($arLink["INHERITED"] == "N") {
                $arShadow[$arProp["ID"]] = $arProp["NAME"];
            }
        } else {
            $arLink = false;
            $arHidden[$arProp["ID"]] = $arProp["NAME"];
            $arShadow[$arProp["ID"]] = $arProp["NAME"];
        }
        ?>
Ejemplo n.º 16
0
 /**
  * <p>Метод изменяет параметры свойства с кодом <i>ID</i>. Перед изменением параметров вызываются обработчики события <a href="http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockpropertyupdate.php">OnBeforeIBlockPropertyUpdate</a> из которых можно отменить изменения или переопределить поля. А после изменения параметром вызывается событие <a href="http://dev.1c-bitrix.ru/api_help/iblock/events/onafteriblockpropertyupdate.php">OnAfterIBlockPropertyUpdate</a>. Метод динамичный.</p>
  *
  *
  * @param int $ID  ID изменяемой записи. </htm
  *
  * @param array $arFields  Массив Array("поле"=&gt;"значение", ...). Содержит значения <a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/fields.php#fproperty">всех полей</a> изменяемого
  * свойства. Кроме того, с помощью поля "VALUES", значением которого
  * должен быть массив вида Array(Array("VALUE"=&gt;"значение", "DEF"=&gt;"по
  * умолчанию (Y/N)", "SORT"=&gt;"индекс сортировки"),...), можно установить
  * варианты выбора для свойств типа "список" (подробнее смотрите
  * метод <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/index.php">CIBlockProperty</a>::<a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/updateenum.php">UpdateEnum()</a>).
  *
  * @return bool 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?<br>$arFields = Array(<br>  "NAME" =&gt; "Цвет",<br>  "ACTIVE" =&gt; "Y",<br>  "SORT" =&gt; "100",<br>  "CODE" =&gt; "color",<br>  "PROPERTY_TYPE" =&gt; "L",<br>  "IBLOCK_ID" =&gt; 11<br>  );<br><br>$arFields["VALUES"][0] = Array(<br>  "VALUE" =&gt; "Красный",<br>  "DEF" =&gt; "N",<br>  "SORT" =&gt; "100"<br>}<br><br>$arFields["VALUES"][1] = Array(<br>  "VALUE" =&gt; "Желтый",<br>  "DEF" =&gt; "N",<br>  "SORT" =&gt; "200"<br>}<br><br>$arFields["VALUES"][2] = Array(<br>  "VALUE" =&gt; "Зеленый",<br>  "DEF" =&gt; "Y",<br>  "SORT" =&gt; "300"<br>}<br><br>$ibp = new CIBlockProperty;<br>if(!$ibp-&gt;Update($ID, $arFields))<br>	echo $ibp-&gt;LAST_ERROR;<br>?
  * 
  * В случае обновления информации в пользовательском типе свойства для сохранения ключа USER_TYPE_SETTINGS необходимо указать еще ключ USER_TYPE с реальным значением. В противном случае ключ USER_TYPE_SETTINGS не обновится. Неверными будут следующие варианты:
  * 
  * 
  * $arFields = array(
  *    'PROPERTY_TYPE' =&gt; 'E',
  *    'USER_TYPE_SETTINGS' =&gt; array(
  *       'WIDTH' =&gt; '10',
  *       'HEIGHT' =&gt; '10',
  *    ),
  * );
  * $ibp = new CIBlockProperty();
  * $ibp-&gt;Update($ID, $arFields));
  * 
  * $arFields = array(
  *    'PROPERTY_TYPE' =&gt; 'E',
  *    'USER_TYPE_SETTINGS' =&gt; array(
  *       'WIDTH' =&gt; '10',
  *       'HEIGHT' =&gt; '10',
  *    ),
  *    'USER_TYPE' =&gt; '',
  * );
  * $ibp = new CIBlockProperty();
  * $ibp-&gt;Update($ID, $arFields));
  * 
  * $arFields = array(
  *    'PROPERTY_TYPE' =&gt; 'E',
  *    'USER_TYPE_SETTINGS' =&gt; array(
  *       'WIDTH' =&gt; '10',
  *       'HEIGHT' =&gt; '10',
  *    ),
  *    'USER_TYPE' =&gt; 'xxx'
  * );
  * $ibp = new CIBlockProperty();
  * $ibp-&gt;Update($ID, $arFields));
  * 
  * //включить индексацию свойства для поиска
  *  $arFields = Array(
  *      'SEARCHABLE'=&gt;'Y'
  * );
  * $ibp = new CIBlockProperty;
  * if(!$ibp-&gt;Update($prop['ID'], $arFields))
  *      echo $ibp-&gt;LAST_ERROR;
  * 
  * 
  * 
  * // добавление свойства в умный фильтр: 
  * $arFields = Array('SMART_FILTER' =&gt; 'Y', 'IBLOCK_ID' =&gt; 123);
  * $ibp = new CIBlockProperty();
  * if(!$ibp-&gt;Update($prop['ID'], $arFields))
  * echo $ibp-&gt;LAST_ERROR; 
  * 
  * //IBLOCK_ID в arFields указывать обязательно, иначе свойство не будет включено в умный фильтр, и при этом не выдаст ошибки.
  * //Чтобы исключить свойство из умного фильтра в arFileds заменить:  'SMART_FILTER'=&gt;'N'
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/add.php">CIBlockProperty::Add</a>
  * </li> <li><a href="http://dev.1c-bitrix.ru/api_help/iblock/fields.php#fproperty">Поля свойства</a></li>
  * <li><a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockpropertyupdate.php">OnBeforeIBlockPropertyUpdate</a></li>
  * <li><a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/events/onafteriblockpropertyupdate.php">OnAfterIBlockPropertyUpdate</a></li>
  * </ul> <br><p><b>Примечание:</b> если используются <b>Инфоблоки 2.0</b> и
  * изменяется базовый тип свойства, то все текущие значения свойств
  * у существующих элементов очищаются.</p> <br><a name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/update.php
  * @author Bitrix
  */
 public function Update($ID, $arFields, $bCheckDescription = false)
 {
     global $DB;
     $ID = IntVal($ID);
     if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
         $arFields["ACTIVE"] = "N";
     }
     if (is_set($arFields, "SEARCHABLE") && $arFields["SEARCHABLE"] != "Y") {
         $arFields["SEARCHABLE"] = "N";
     }
     if (is_set($arFields, "FILTRABLE") && $arFields["FILTRABLE"] != "Y") {
         $arFields["FILTRABLE"] = "N";
     }
     if (is_set($arFields, "MULTIPLE") && $arFields["MULTIPLE"] != "Y") {
         $arFields["MULTIPLE"] = "N";
     }
     if (is_set($arFields, "LIST_TYPE") && $arFields["LIST_TYPE"] != "C") {
         $arFields["LIST_TYPE"] = "L";
     }
     if (!$this->CheckFields($arFields, $ID)) {
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } elseif (!$this->_Update($ID, $arFields, $bCheckDescription)) {
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } else {
         if (isset($arFields["USER_TYPE"])) {
             $arUserType = CIBlockProperty::GetUserType($arFields["USER_TYPE"]);
             if (array_key_exists("ConvertToDB", $arUserType)) {
                 $arValue = array("VALUE" => $arFields["DEFAULT_VALUE"]);
                 $arValue = call_user_func_array($arUserType["ConvertToDB"], array($arFields, $arValue));
                 if (is_array($arValue) && isset($arValue["VALUE"]) && strlen($arValue["VALUE"])) {
                     $arFields["DEFAULT_VALUE"] = $arValue["VALUE"];
                 } else {
                     $arFields["DEFAULT_VALUE"] = false;
                 }
             }
             if (array_key_exists("PrepareSettings", $arUserType)) {
                 $arFieldsResult = call_user_func_array($arUserType["PrepareSettings"], array($arFields));
                 if (is_array($arFieldsResult) && array_key_exists('USER_TYPE_SETTINGS', $arFieldsResult)) {
                     $arFields = array_merge($arFields, $arFieldsResult);
                     $arFields["USER_TYPE_SETTINGS"] = serialize($arFields["USER_TYPE_SETTINGS"]);
                 } else {
                     $arFields["USER_TYPE_SETTINGS"] = serialize($arFieldsResult);
                 }
             } else {
                 $arFields["USER_TYPE_SETTINGS"] = false;
             }
         }
         unset($arFields["ID"]);
         unset($arFields["VERSION"]);
         unset($arFields["TIMESTAMP_X"]);
         $strUpdate = $DB->PrepareUpdate("b_iblock_property", $arFields);
         if (strlen($strUpdate) > 0) {
             $strSql = "UPDATE b_iblock_property SET " . $strUpdate . " WHERE ID=" . $ID;
             $DB->QueryBind($strSql, array("USER_TYPE_SETTINGS" => $arFields["USER_TYPE_SETTINGS"]));
         }
         if (is_set($arFields, "VALUES")) {
             $this->UpdateEnum($ID, $arFields["VALUES"]);
         }
         if (array_key_exists("IBLOCK_ID", $arFields) && CIBlock::GetArrayByID($arFields["IBLOCK_ID"], "SECTION_PROPERTY") === "Y") {
             if (!array_key_exists("SECTION_PROPERTY", $arFields) || $arFields["SECTION_PROPERTY"] !== "N") {
                 $arLink = array("SMART_FILTER" => $arFields["SMART_FILTER"]);
                 if (array_key_exists("DISPLAY_TYPE", $arFields)) {
                     $arLink["DISPLAY_TYPE"] = $arFields["DISPLAY_TYPE"];
                 }
                 if (array_key_exists("DISPLAY_EXPANDED", $arFields)) {
                     $arLink["DISPLAY_EXPANDED"] = $arFields["DISPLAY_EXPANDED"];
                 }
                 if (array_key_exists("FILTER_HINT", $arFields)) {
                     $arLink["FILTER_HINT"] = $arFields["FILTER_HINT"];
                 }
                 CIBlockSectionPropertyLink::Set(0, $ID, $arLink);
             } else {
                 CIBlockSectionPropertyLink::Delete(0, $ID);
             }
         }
         global $BX_IBLOCK_PROP_CACHE;
         if (is_set($arFields, "IBLOCK_ID")) {
             unset($BX_IBLOCK_PROP_CACHE[$arFields["IBLOCK_ID"]]);
         } else {
             $BX_IBLOCK_PROP_CACHE = array();
         }
         $Result = true;
     }
     $arFields["ID"] = $ID;
     $arFields["RESULT"] =& $Result;
     foreach (GetModuleEvents("iblock", "OnAfterIBlockPropertyUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(&$arFields));
     }
     return $Result;
 }
Ejemplo n.º 17
0
			<td width="40%"><label for="PROPERTY_SMART_FILTER_Y"><?php 
        echo GetMessage("BT_ADM_IEP_PROP_SMART_FILTER");
        ?>
</label></td>
			<td>
				<input type="hidden" id="PROPERTY_SMART_FILTER_N" name="PROPERTY_SMART_FILTER" value="N">
				<input type="checkbox" id="PROPERTY_SMART_FILTER_Y" name="PROPERTY_SMART_FILTER" value="Y" <?php 
        if ('N' != $arProperty['SMART_FILTER']) {
            echo ' checked="checked"';
        }
        ?>
>
			</td>
		</tr>
		<?php 
        $displayTypes = CIBlockSectionPropertyLink::getDisplayTypes($arProperty["PROPERTY_TYPE"], $arProperty["USER_TYPE"]);
        if ($displayTypes) {
            ?>
		<tr id="tr_DISPLAY_TYPE" style="display: <?php 
            echo $arProperty['SECTION_PROPERTY'] != 'N' ? 'table-row' : 'none';
            ?>
">
			<td width="40%"><?php 
            echo GetMessage("BT_ADM_IEP_PROP_DISPLAY_TYPE");
            ?>
</td>
			<td>
		<?php 
            echo SelectBoxFromArray('PROPERTY_DISPLAY_TYPE', array("REFERENCE_ID" => array_keys($displayTypes), "REFERENCE" => array_values($displayTypes)), $arProperty["DISPLAY_TYPE"], '', '');
            ?>
			</td>
Ejemplo n.º 18
0
 public function getIBlockItems($IBLOCK_ID)
 {
     $items = array();
     foreach (CIBlockSectionPropertyLink::GetArray($IBLOCK_ID, $this->SECTION_ID) as $PID => $arLink) {
         if ($arLink["SMART_FILTER"] !== "Y") {
             continue;
         }
         if ($arLink['FILTER_HINT'] != '') {
             $arLink['FILTER_HINT'] = CTextParser::closeTags($arLink['FILTER_HINT']);
         }
         $rsProperty = CIBlockProperty::GetByID($PID);
         $arProperty = $rsProperty->Fetch();
         if ($arProperty) {
             $items[$arProperty["ID"]] = array("ID" => $arProperty["ID"], "IBLOCK_ID" => $arProperty["IBLOCK_ID"], "CODE" => $arProperty["CODE"], "NAME" => $arProperty["NAME"], "PROPERTY_TYPE" => $arProperty["PROPERTY_TYPE"], "USER_TYPE" => $arProperty["USER_TYPE"], "USER_TYPE_SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], "DISPLAY_TYPE" => $arLink["DISPLAY_TYPE"], "DISPLAY_EXPANDED" => $arLink["DISPLAY_EXPANDED"], "FILTER_HINT" => $arLink["FILTER_HINT"], "VALUES" => array());
             if ($arProperty["PROPERTY_TYPE"] == "N" || $arLink["DISPLAY_TYPE"] == "U") {
                 $minID = $this->SAFE_FILTER_NAME . '_' . $arProperty['ID'] . '_MIN';
                 $maxID = $this->SAFE_FILTER_NAME . '_' . $arProperty['ID'] . '_MAX';
                 $items[$arProperty["ID"]]["VALUES"] = array("MIN" => array("CONTROL_ID" => $minID, "CONTROL_NAME" => $minID), "MAX" => array("CONTROL_ID" => $maxID, "CONTROL_NAME" => $maxID));
             }
         }
     }
     return $items;
 }