Example #1
0
 static function onBeforeElementAddHandler($arFields)
 {
     $IBLOCK_ID = Config\Option::get("citfact.replaceurl", "IBLOCK_ID", "");
     $SECTION_ID = Config\Option::get("citfact.replaceurl", "SECTION_BREND_ID", "BRENDI");
     $CODE_PROP = Config\Option::get("citfact.replaceurl", "PROPERTY_CODE_BRENDI", "BRENDI");
     if ($IBLOCK_ID == $arFields["IBLOCK_ID"]) {
         $propertyBrand = \CIBlockProperty::GetByID($CODE_PROP, $arFields["IBLOCK_ID"]);
         if ($arResultProperty = $propertyBrand->GetNext()) {
             $propertyBrandValue = \CIBlockPropertyEnum::GetByID($arFields["PROPERTY_VALUES"][$arResultProperty["ID"]][0]["VALUE"]);
         }
         $rqParentSection = \CIBlockSection::GetByID($SECTION_ID);
         if ($arParentSection = $rqParentSection->GetNext()) {
             $arFilter = array('IBLOCK_ID' => $arParentSection['IBLOCK_ID'], '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'], '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'], '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']);
             // выберет потомков без учета активности
             $rqSectChild = \CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter);
             while ($arSectChild = $rqSectChild->GetNext()) {
                 $arSections[$arSectChild["NAME"]] = $arSectChild["ID"];
             }
         }
         if (array_key_exists($propertyBrandValue["VALUE"], $arSections)) {
             $arFields["IBLOCK_SECTION"][] = $arSections[$propertyBrandValue["VALUE"]];
         } else {
             $arParams = array("replace_space" => "-", "replace_other" => "-");
             $trans = \Cutil::translit($propertyBrandValue["VALUE"], "ru", $arParams);
             $bs = new \CIBlockSection();
             $arFieldsNewSection = array("ACTIVE" => "Y", "IBLOCK_SECTION_ID" => $SECTION_ID, "IBLOCK_ID" => $IBLOCK_ID, "NAME" => $propertyBrandValue["VALUE"], "CODE" => $trans);
             $resultAdd = $bs->Add($arFieldsNewSection);
             $arFields["IBLOCK_SECTION"][] = $resultAdd;
         }
     }
     return true;
 }
/**
 * Тип свойства - список
 * По коду и значению свойства получить id этого значения
 * В случае отсутствия, значение будет создано и будет возвращен его id
 *
 * <code>
 * $propertyCountryValue = getPropertyEnumValueId($IBLOCK_ID, 'COUNTRIES', 'Япония');
 * $be = new CIBlockElement;
 * $be->Add(array(
 *    "ACTIVE" => 'Y',
 *    "IBLOCK_ID" => $IBLOCK_ID,
 *    "NAME" => $name,
 *    "PROPERTY_VALUES" => array(
 *       'COUNTRIES' => $propertyCountryValue,
 *    )
 *  );
 * </code>
 * @param $IBLOCK_ID int id инфоблока, в котором находится данное свойство
 * @param $prop string код свойства
 * @param $value string значение свойства
 * @return bool|int ID значения свойства или false, если не удалось найти свойство с таким кодом или не удалось создать запись с данным значением
 */
function getPropertyEnumValueId($IBLOCK_ID, $prop, $value)
{
    $property = CIBlockProperty::GetByID($prop, $IBLOCK_ID)->Fetch();
    if (!$property) {
        return false;
    }
    $ar_enum_list = CIBlockProperty::GetPropertyEnum($prop, array("SORT" => "asc"), array("IBLOCK_ID" => $IBLOCK_ID, 'VALUE' => $value))->Fetch();
    if (!$ar_enum_list) {
        $ibpenum = new CIBlockPropertyEnum();
        if ($PropID = $ibpenum->Add(array('PROPERTY_ID' => $property['ID'], 'VALUE' => $value))) {
            $ar_enum_list['ID'] = $PropID;
        } else {
            return false;
        }
    }
    return $ar_enum_list['ID'];
}
Example #3
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;
 }
Example #4
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;
	}
Example #5
0
        }
        ?>
			<?php 
    }
    ?>
			
			<?php 
    foreach ($arResult["ITEMS"] as $arItem) {
        if (!isset($arItem["PRICE"]) && ($arItem["PROPERTY_TYPE"] == "N" && !empty($arItem["VALUES"]["MIN"]["VALUE"]) || $arItem["PROPERTY_TYPE"] != "N" && !empty($arItem["VALUES"])) && !($arItem["PROPERTY_TYPE"] == "N" && $arItem["VALUES"]["MIN"]["VALUE"] == $arItem["VALUES"]["MAX"]["VALUE"])) {
            ?>

					<?php 
            if ($arItem["CODE"] != "HIT" && $arItem["CODE"] != "RECOMMEND" && $arItem["CODE"] != "NEW" && $arItem["CODE"] != "STOCK") {
                ?>
							<?php 
                $prop = CIBlockProperty::GetByID($arItem["ID"], $arParams["IBLOCK_ID"])->GetNext();
                ?>
							<span class="filter-name"><?php 
                echo $arItem["NAME"];
                if ($prop["HINT"]) {
                    ?>
<span class="hint"><span class="icon"><i>i</i></span><div class="tooltip"><?php 
                    echo $prop["HINT"];
                    ?>
</div></span><?php 
                }
                ?>
</span>	
					<?php 
            } elseif (!$specialtitle) {
                ?>
Example #6
0
        include_once $cPrologPath;
    }
}
if ($this->StartResultCache(36000, false)) {
    $arResult["FIELDS"] = array();
    $arResult["BASE_FIELDS"] = array();
    $sort = 10;
    foreach ($showBaseFields as $baseField) {
        $msgName = "BRSOFT_FC_" . $baseField;
        $arField = array("CODE" => $baseField, "REQUIRED" => in_array($baseField, $reqBaseFields) ? true : false, "NAME" => GetMessage($msgName), "SORT" => $sort, "TYPE" => "BASE", "HINT" => GetMessage($msgName), "INPUT_TYPE" => $baseField == "NAME" ? "S" : "T");
        $arResult["FIELDS"][] = $arField;
        $sort += 100;
    }
    foreach ($showFields as $field) {
        $arField = array("TYPE" => "PROPERTY");
        $dbField = CIBlockProperty::GetByID($field, $iblock_id);
        if ($rsField = $dbField->GetNext()) {
            $input_type = "S";
            //default value
            switch ($rsField["PROPERTY_TYPE"]) {
                case 'S':
                    switch ($rsField["USER_TYPE"]) {
                        case 'DateTime':
                            $input_type = "D";
                            break;
                        case 'HTML':
                            $input_type = "H";
                            break;
                            // html/text usertype
                        // html/text usertype
                        default:
Example #7
0
 /**
  * @param int|string $iblockCode
  * @param $arPropFields
  * @param bool $bFailOnNonExist
  * @return array
  */
 public function getTestIBlockProp($iblockCode, $arPropFields, $bFailOnNonExist = false)
 {
     $arTestIBlock = $this->getTestIBlock(array('CODE' => $iblockCode), true);
     $this->assertTrue(is_array($arTestIBlock));
     $this->assertArrayHasKey('ID', $arTestIBlock);
     if (!array_key_exists('CODE', $arPropFields)) {
         $this->fail('Error: Infoblock property code is empty');
     }
     if (array_key_exists($arTestIBlock['CODE'], self::$_arTestIBProps) && array_key_exists($arPropFields['CODE'], self::$_arTestIBProps[$arTestIBlock['CODE']])) {
         return self::$_arTestIBProps[$arTestIBlock['CODE']][$arPropFields['CODE']];
     }
     $rsProperty = \CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $arTestIBlock['ID'], 'CODE' => $arPropFields['CODE']));
     $arProperty = $rsProperty->Fetch();
     if (!$arProperty) {
         if ($bFailOnNonExist) {
             $this->fail('Error: Property CODE="' . $arPropFields['CODE'] . '" does not exist');
         }
         if (!array_key_exists('NAME', $arPropFields) || empty($arPropFields['NAME'])) {
             $arPropFields['NAME'] = $arPropFields['CODE'];
         }
         if (array_key_exists('PROPERTY_TYPE', $arPropFields) && $arPropFields['PROPERTY_TYPE'] == 'L' && (!is_array($arPropFields['VALUES']) || empty($arPropFields['VALUES']))) {
             $this->fail('Error: Can\'t create property of type = list without values');
         }
         $arPropFieldsDef = array('IBLOCK_ID' => $arTestIBlock['ID'], 'PROPERTY_TYPE' => 'S', 'MULTIPLE' => 'N', 'ACTIVE' => 'Y', 'SORT' => '100');
         $arPropFields = array_merge($arPropFieldsDef, $arPropFields);
         $obProperty = new \CIBlockProperty();
         /** @global \CDatabase $DB */
         global $DB;
         $DB->StartTransaction();
         $newPropID = $obProperty->Add($arPropFields);
         if ($newPropID > 0) {
             $DB->Commit();
             $rsProperty = \CIBlockProperty::GetByID($newPropID);
             $arProperty = $rsProperty->Fetch();
             if (!$arProperty) {
                 $this->fail('Error: can\'t get just created infoblock property');
             }
         } else {
             $DB->Rollback();
             $this->fail('Error: Can\'t create property: ' . $obProperty->LAST_ERROR);
         }
     }
     if (!array_key_exists($arTestIBlock['CODE'], self::$_arTestIBProps)) {
         self::$_arTestIBProps[$arTestIBlock['CODE']] = array();
     }
     self::$_arTestIBProps[$arTestIBlock['CODE']][$arProperty['CODE']] = $arProperty;
     return self::$_arTestIBProps[$arTestIBlock['CODE']][$arPropFields['CODE']];
 }
Example #8
0
 }
 $res = CIBlockProperty::GetByID("MANUFACTURER", $IBLOCK_CATALOG_ID, false);
 if ($ar_res = $res->GetNext()) {
     $arFields1 = array('LINK_IBLOCK_ID' => $_SESSION['YOUSTORE_BRAND_IBLOCKID']);
     $ibp = new CIBlockProperty();
     $ibp->Update($ar_res['ID'], $arFields1);
 }
 unset($_SESSION['YOUSTORE_BRAND_IBLOCKID']);
 $res = CIBlockProperty::GetByID("ACCESSORIES", $IBLOCK_CATALOG_ID, false);
 if ($ar_res = $res->GetNext()) {
     $arFields1 = array('LINK_IBLOCK_ID' => $IBLOCK_CATALOG_ID);
     $ibp = new CIBlockProperty();
     $ibp->Update($ar_res['ID'], $arFields1);
 }
 if ($IBLOCK_OFFERS_ID) {
     $res = CIBlockProperty::GetByID("COLOR", $IBLOCK_OFFERS_ID, false);
     if ($ar_res = $res->GetNext()) {
         $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'b_color'), 'USER_TYPE' => 'directory');
         $ibp = new CIBlockProperty();
         $ibp->Update($ar_res['ID'], $arFields2);
     }
 }
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("OFFERS_IBLOCK_ID" => $IBLOCK_OFFERS_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
 WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
Example #9
0
 public static function GetProp($strProp)
 {
     $prop = '';
     $propert = array("ID", "CODE", "NAME", "ACTIVE", "DATE_CREATE", "CREATED_BY", "DETAIL_PAGE_URL", "SHOW_COUNTER", "QUANTITY");
     if (in_array($strProp, $propert)) {
         $prop = $strProp;
     } else {
         $res = CIBlockProperty::GetByID(intval($strProp));
         if ($ar_res = $res->GetNext()) {
             if ($ar_res['PROPERTY_TYPE'] == "L") {
                 $prop = "PROPERTY_" . $ar_res['CODE'];
             } else {
                 $prop = "PROPERTY_" . $ar_res['CODE'];
             }
         }
     }
     return $prop;
 }
Example #10
0
             }
             $arProductGroups[$PRODUCT_ID][] = $LAST_GROUP_CODE > 0 ? $LAST_GROUP_CODE : false;
         }
         $res = $PRODUCT_ID > 0;
     }
     if (!$res) {
         $strErrorR .= GetMessage("CATI_LINE_NO") . " " . $line_num . ". " . GetMessage("CATI_ERROR_LOADING") . " " . $el->LAST_ERROR . "<br>";
     }
 }
 if ('' === $strErrorR) {
     $PROP = array();
     for ($i = 0; $i < $NUM_FIELDS; $i++) {
         if (0 == strncmp(${"field_" . $i}, "IP_PROP", 7)) {
             $cur_prop_id = intval(substr(${"field_" . $i}, 7));
             if (!isset($arIBlockProperty[$cur_prop_id])) {
                 $res1 = CIBlockProperty::GetByID($cur_prop_id, $IBLOCK_ID);
                 if ($arRes1 = $res1->Fetch()) {
                     $arIBlockProperty[$cur_prop_id] = $arRes1;
                 } else {
                     $arIBlockProperty[$cur_prop_id] = array();
                 }
             }
             if (!empty($arIBlockProperty[$cur_prop_id]) && is_array($arIBlockProperty[$cur_prop_id])) {
                 if ('Y' == $CML2_LINK_IS_XML && $cur_prop_id == $arSku['SKU_PROPERTY_ID']) {
                     $arRes[$i] = trim($arRes[$i]);
                     if ('' != $arRes[$i]) {
                         if (!isset($arProductCache[$arRes[$i]])) {
                             $rsProducts = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arSku['PRODUCT_IBLOCK_ID'], '=XML_ID' => $arRes[$i]), false, false, array('ID'));
                             if ($arParentProduct = $rsProducts->Fetch()) {
                                 $arProductCache[$arRes[$i]] = $arParentProduct['ID'];
                             }
Example #11
0
 /**
  * <p>Метод устанавливает значения перечислений свойства типа "список". Метод динамичный.</p>
  *
  *
  * @param int $ID  Код свойства.
  *
  * @param array $arVALUES  Массив всех значений в формате Array("код существующего
  * значения"=&gt;"массив полей значения", ..., "массив полей нового
  * значения", ...). Где массив полей имеет вид: Array("VALUE"=&gt;"значение"[,
  * "SORT"=&gt;"порядок сортировки"][, "DEF"=&gt;"является значением по
  * умолчанию (Y|N)"][, "XML_ID"=&gt;"внешний код"]).
  *
  * @param bool $bForceDelete = true Если принимает значение <i>true</i>, то удаляются варианты значений, у
  * которых <i>VALUE</i> пустой. Значение <i>false</i> позволяет сохранить
  * значения, использованные хотя бы у одного элемента.
  * Необязательный параметр.
  *
  * @return mixed 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $cnt = 0;<br>$ar_all_values = Array();<br>$db_enum_list = CIBlockProperty::GetPropertyEnum($PROP_ID, Array('SORT'=&gt;'ASC'));<br>while($ar_enum = $db_enum_list-&gt;Fetch())<br>{<br>	$cnt++;<br>	$ar_all_values[$ar_enum['ID']] = Array('SORT'=&gt;$cnt, 'VALUE'=&gt;$ar_enum['VALUE']);<br>}<br>$CIBlockProp = new CIBlockProperty;
  * $CIBlockProp-&gt;UpdateEnum($PROP_ID, $ar_all_values); ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/iblock/fields.php#fiblockpropertyenum">Поля значений
  * свойства типа "список</a><a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/ceventmessage/index.php#flds">" </a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/index.php">CIBlockPropetyEnum</a>::<a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/update.php">Update()</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/index.php">CIBlockPropetyEnum</a>::<a
  * href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/add.php">Add()</a> </li> </ul> <a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/updateenum.php
  * @author Bitrix
  */
 public function UpdateEnum($ID, $arVALUES, $bForceDelete = true)
 {
     global $DB, $CACHE_MANAGER;
     $ID = IntVal($ID);
     if (!is_array($arVALUES) || empty($arVALUES) && $bForceDelete) {
         CIBlockPropertyEnum::DeleteByPropertyID($ID);
         return true;
     }
     $ar_XML_ID = array();
     $db_res = $this->GetPropertyEnum($ID);
     while ($res = $db_res->Fetch()) {
         $ar_XML_ID[$res["XML_ID"]] = $res["ID"];
     }
     $sqlWhere = "";
     if (!$bForceDelete) {
         $rsProp = CIBlockProperty::GetByID($ID);
         if ($arProp = $rsProp->Fetch()) {
             if ($arProp["VERSION"] == 1) {
                 $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_property\n\t\t\t\t\t\tWHERE b_iblock_element_property.IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID\n\t\t\t\t\t\tAND b_iblock_element_property.VALUE_ENUM = b_iblock_property_enum.ID\n\t\t\t\t\t)";
             } elseif ($arProp["MULTIPLE"] == "N") {
                 $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_prop_s" . $arProp["IBLOCK_ID"] . "\n\t\t\t\t\t\tWHERE b_iblock_element_prop_s" . $arProp["IBLOCK_ID"] . ".PROPERTY_" . $arProp["ID"] . " = b_iblock_property_enum.ID\n\t\t\t\t\t)";
             } else {
                 $sqlWhere = "AND NOT EXISTS (\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . "\n\t\t\t\t\t\tWHERE b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . ".IBLOCK_PROPERTY_ID = b_iblock_property_enum.PROPERTY_ID\n\t\t\t\t\t\tAND b_iblock_element_prop_m" . $arProp["IBLOCK_ID"] . ".VALUE_ENUM = b_iblock_property_enum.ID\n\t\t\t\t\t)";
             }
         }
     }
     $db_res = $this->GetPropertyEnum($ID);
     while ($res = $db_res->Fetch()) {
         $VALUE = $arVALUES[$res["ID"]];
         $VAL = is_array($VALUE) ? $VALUE["VALUE"] : $VALUE;
         unset($arVALUES[$res["ID"]]);
         if (strlen($VAL) <= 0) {
             unset($ar_XML_ID[$res["XML_ID"]]);
             $strSql = "\n\t\t\t\t\tDELETE FROM b_iblock_property_enum\n\t\t\t\t\tWHERE ID=" . $res["ID"] . "\n\t\t\t\t\t" . $sqlWhere . "\n\t\t\t\t";
             $DB->Query($strSql);
         } else {
             $DEF = "";
             $SORT = 0;
             $XML_ID = "";
             if (is_array($VALUE)) {
                 if (array_key_exists("DEF", $VALUE)) {
                     $DEF = $VALUE["DEF"] == "Y" ? "Y" : "N";
                 }
                 if (array_key_exists("SORT", $VALUE)) {
                     $SORT = intval($VALUE["SORT"]);
                 }
                 if ($SORT < 0) {
                     $SORT = 0;
                 }
                 if (array_key_exists("XML_ID", $VALUE) && strlen($VALUE["XML_ID"])) {
                     $XML_ID = substr($VALUE["XML_ID"], 0, 200);
                 } elseif (array_key_exists("EXTERNAL_ID", $VALUE) && strlen($VALUE["EXTERNAL_ID"])) {
                     $XML_ID = substr($VALUE["EXTERNAL_ID"], 0, 200);
                 }
             }
             if ($XML_ID) {
                 unset($ar_XML_ID[$res["XML_ID"]]);
                 if (array_key_exists($XML_ID, $ar_XML_ID)) {
                     $XML_ID = md5(uniqid(""));
                 }
                 $ar_XML_ID[$XML_ID] = $res["ID"];
             }
             $strSql = "\n\t\t\t\t\tUPDATE b_iblock_property_enum\n\t\t\t\t\tSET\n\t\t\t\t\t\t" . ($DEF ? " DEF = '" . $DEF . "', " : "") . "\n\t\t\t\t\t\t" . ($SORT ? " SORT = " . $SORT . ", " : "") . "\n\t\t\t\t\t\t" . ($XML_ID ? " XML_ID = '" . $DB->ForSQL($XML_ID, 200) . "', " : "") . "\n\t\t\t\t\t\tVALUE = '" . $DB->ForSQL($VAL, 255) . "'\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tID = " . $res["ID"] . "\n\t\t\t\t";
             $DB->Query($strSql);
         }
     }
     foreach ($arVALUES as $id => $VALUE) {
         $VAL = is_array($VALUE) ? $VALUE["VALUE"] : $VALUE;
         if (strlen($id) > 0 && strlen($VAL) > 0) {
             $DEF = "";
             $SORT = 0;
             $XML_ID = "";
             if (is_array($VALUE)) {
                 if (array_key_exists("DEF", $VALUE)) {
                     $DEF = $VALUE["DEF"] == "Y" ? "Y" : "N";
                 }
                 if (array_key_exists("SORT", $VALUE)) {
                     $SORT = intval($VALUE["SORT"]);
                 }
                 if ($SORT < 0) {
                     $SORT = 0;
                 }
                 if (array_key_exists("XML_ID", $VALUE) && strlen($VALUE["XML_ID"])) {
                     $XML_ID = substr($VALUE["XML_ID"], 0, 200);
                 } elseif (array_key_exists("EXTERNAL_ID", $VALUE) && strlen($VALUE["EXTERNAL_ID"])) {
                     $XML_ID = substr($VALUE["EXTERNAL_ID"], 0, 200);
                 }
             }
             if ($XML_ID) {
                 if (array_key_exists($XML_ID, $ar_XML_ID)) {
                     $XML_ID = md5(uniqid("", true));
                 }
                 $ar_XML_ID[$XML_ID] = 0;
             } else {
                 $XML_ID = md5(uniqid("", true));
                 $ar_XML_ID[$XML_ID] = 0;
             }
             $strSql = "\n\t\t\t\t\tINSERT INTO b_iblock_property_enum\n\t\t\t\t\t(\n\t\t\t\t\t\tPROPERTY_ID\n\t\t\t\t\t\t" . ($DEF ? ",DEF" : "") . "\n\t\t\t\t\t\t" . ($SORT ? ",SORT" : "") . "\n\t\t\t\t\t\t,VALUE\n\t\t\t\t\t\t,XML_ID\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t" . $ID . "\n\t\t\t\t\t\t" . ($DEF ? ",'" . $DEF . "'" : "") . "\n\t\t\t\t\t\t" . ($SORT ? "," . $SORT . "" : "") . "\n\t\t\t\t\t\t,'" . $DB->ForSQL($VAL, 255) . "'\n\t\t\t\t\t\t,'" . $DB->ForSQL($XML_ID, 200) . "'\n\t\t\t\t\t)\n\t\t\t\t";
             $DB->Query($strSql);
         }
     }
     if (CACHED_b_iblock_property_enum !== false) {
         $CACHE_MANAGER->CleanDir("b_iblock_property_enum");
     }
     if (defined("BX_COMP_MANAGED_CACHE")) {
         $CACHE_MANAGER->ClearByTag("iblock_property_enum_" . $ID);
     }
     return true;
 }
Example #12
0
    $arFields = array("ACTIVE" => "Y", "FIELDS" => array('CODE' => array('IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array('UNIQUE' => 'Y', 'TRANSLITERATION' => 'Y', 'TRANS_LEN' => 100, 'TRANS_CASE' => 'L', 'TRANS_SPACE' => '_', 'TRANS_OTHER' => '_', 'TRANS_EAT' => 'Y', 'USE_GOOGLE' => 'Y'))), "CODE" => $iblockCode, "XML_ID" => $iblockCode);
    $iblock->Update($iblockID, $arFields);
} else {
    $arSites = array();
    $db_res = CIBlock::GetSite($iblockID);
    while ($res = $db_res->Fetch()) {
        $arSites[] = $res["LID"];
    }
    if (!in_array(WIZARD_SITE_ID, $arSites)) {
        $arSites[] = WIZARD_SITE_ID;
        $iblock = new CIBlock();
        $iblock->Update($iblockID, array("LID" => $arSites));
    }
}
for ($t = 1; $t <= 7; $t++) {
    $res = CIBlockProperty::GetByID("TAB_" . $t . "_TYPE", $iblockID, false);
    if ($ar_res = $res->GetNext()) {
        $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'tab'), 'USER_TYPE' => 'directory');
        $ibp = new CIBlockProperty();
        $ibp->Update($ar_res['ID'], $arFields2);
    }
}
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/obzor/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("REVIEWS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("REVIEWS_IBLOCK_ID" => $iblockID));
Example #13
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;
 }
Example #14
0
    ShowError(GetMessage('CRM_IBLOCK_MODULE_NOT_INSTALLED'));
    return;
}
global $USER, $APPLICATION;
$arParams['PATH_TO_PRODUCTPROPS_LIST'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_LIST', $arParams['PATH_TO_PRODUCTPROPS_LIST'], '');
$arParams['PATH_TO_PRODUCTPROPS_ADD'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_ADD', $arParams['PATH_TO_PRODUCTPROPS_ADD'], '?add');
$arParams['PATH_TO_PRODUCTPROPS_EDIT'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_EDIT', $arParams['PATH_TO_PRODUCTPROPS_EDIT'], '?prop_id=#prop_id#&edit');
if (!isset($arParams['TYPE'])) {
    $arParams['TYPE'] = 'list';
}
$arResult['BUTTONS'] = array();
$propID = isset($arParams['PROP_ID']) ? intval($arParams['PROP_ID']) : 0;
$CrmPerms = new CCrmPerms($USER->GetID());
$propAdd = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE');
$arProp = null;
if ($propID > 0) {
    $iblockID = intval(CCrmCatalog::EnsureDefaultExists());
    $dbRes = CIBlockProperty::GetByID($propID, $iblockID);
    if (is_object($dbRes)) {
        $arProp = $dbRes->Fetch();
    }
    unset($dbRes);
}
$exists = intval($propID > 0) && is_array($arProp);
if ($arParams['TYPE'] !== 'list') {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_LIST'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_LIST_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_LIST'], array()), 'ICON' => 'btn-list');
}
if ($arParams['TYPE'] === 'list' && $propAdd) {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_ADD'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_ADD'], array()), 'ICON' => 'btn-new');
}
$this->IncludeComponentTemplate();
Example #15
0
function DoIBlockAfterSave($arg1, $arg2 = false)
{
    $ELEMENT_ID = false;
    $IBLOCK_ID = false;
    $OFFERS_IBLOCK_ID = false;
    $OFFERS_PROPERTY_ID = false;
    if (CModule::IncludeModule('currency')) {
        $strDefaultCurrency = CCurrency::GetBaseCurrency();
    }
    //Check for catalog event
    if (is_array($arg2) && $arg2["PRODUCT_ID"] > 0) {
        //Get iblock element
        $rsPriceElement = CIBlockElement::GetList(array(), array("ID" => $arg2["PRODUCT_ID"]), false, false, array("ID", "IBLOCK_ID"));
        if ($arPriceElement = $rsPriceElement->Fetch()) {
            $arCatalog = CCatalog::GetByID($arPriceElement["IBLOCK_ID"]);
            if (is_array($arCatalog)) {
                //Check if it is offers iblock
                if ($arCatalog["OFFERS"] == "Y") {
                    //Find product element
                    $rsElement = CIBlockElement::GetProperty($arPriceElement["IBLOCK_ID"], $arPriceElement["ID"], "sort", "asc", array("ID" => $arCatalog["SKU_PROPERTY_ID"]));
                    $arElement = $rsElement->Fetch();
                    if ($arElement && $arElement["VALUE"] > 0) {
                        $ELEMENT_ID = $arElement["VALUE"];
                        $IBLOCK_ID = $arCatalog["PRODUCT_IBLOCK_ID"];
                        $OFFERS_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
                        $OFFERS_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
                    }
                } elseif ($arCatalog["OFFERS_IBLOCK_ID"] > 0) {
                    $ELEMENT_ID = $arPriceElement["ID"];
                    $IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
                    $OFFERS_IBLOCK_ID = $arCatalog["OFFERS_IBLOCK_ID"];
                    $OFFERS_PROPERTY_ID = $arCatalog["OFFERS_PROPERTY_ID"];
                } else {
                    $ELEMENT_ID = $arPriceElement["ID"];
                    $IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
                    $OFFERS_IBLOCK_ID = false;
                    $OFFERS_PROPERTY_ID = false;
                }
            }
        }
    } elseif (is_array($arg1) && $arg1["ID"] > 0 && $arg1["IBLOCK_ID"] > 0) {
        //Check if iblock has offers
        $arOffers = CIBlockPriceTools::GetOffersIBlock($arg1["IBLOCK_ID"]);
        if (is_array($arOffers)) {
            $ELEMENT_ID = $arg1["ID"];
            $IBLOCK_ID = $arg1["IBLOCK_ID"];
            $OFFERS_IBLOCK_ID = $arOffers["OFFERS_IBLOCK_ID"];
            $OFFERS_PROPERTY_ID = $arOffers["OFFERS_PROPERTY_ID"];
        }
    }
    if ($ELEMENT_ID) {
        static $arPropCache = array();
        if (!array_key_exists($IBLOCK_ID, $arPropCache)) {
            //Check for MINIMAL_PRICE property
            $rsProperty = CIBlockProperty::GetByID("MINIMUM_PRICE", $IBLOCK_ID);
            $arProperty = $rsProperty->Fetch();
            if ($arProperty) {
                $arPropCache[$IBLOCK_ID] = $arProperty["ID"];
            } else {
                $arPropCache[$IBLOCK_ID] = false;
            }
        }
        if ($arPropCache[$IBLOCK_ID]) {
            //Compose elements filter
            if ($OFFERS_IBLOCK_ID) {
                $rsOffers = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $OFFERS_IBLOCK_ID, "PROPERTY_" . $OFFERS_PROPERTY_ID => $ELEMENT_ID), false, false, array("ID"));
                while ($arOffer = $rsOffers->Fetch()) {
                    $arProductID[] = $arOffer["ID"];
                }
                if (!is_array($arProductID)) {
                    $arProductID = array($ELEMENT_ID);
                }
            } else {
                $arProductID = array($ELEMENT_ID);
            }
            $minPrice = false;
            $maxPrice = false;
            //Get prices
            $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arProductID));
            while ($arPrice = $rsPrices->Fetch()) {
                if (CModule::IncludeModule('currency') && $strDefaultCurrency != $arPrice['CURRENCY']) {
                    $arPrice["PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["PRICE"], $arPrice["CURRENCY"], $strDefaultCurrency);
                }
                $PRICE = $arPrice["PRICE"];
                if ($minPrice === false || $minPrice > $PRICE) {
                    $minPrice = $PRICE;
                }
                if ($maxPrice === false || $maxPrice < $PRICE) {
                    $maxPrice = $PRICE;
                }
            }
            //Save found minimal price into property
            if ($minPrice !== false) {
                CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array("MINIMUM_PRICE" => $minPrice, "MAXIMUM_PRICE" => $maxPrice));
            }
        }
    }
}
Example #16
0
    while ($res = $db_res->Fetch()) {
        $arSites[] = $res["LID"];
    }
    if (!in_array(WIZARD_SITE_ID, $arSites)) {
        $arSites[] = WIZARD_SITE_ID;
        $iblock = new CIBlock();
        $iblock->Update($iblockID, array("LID" => $arSites));
    }
}
$res = CIBlockProperty::GetByID("BG", $iblockID, false);
if ($ar_res = $res->GetNext()) {
    $arFields1 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'background'), 'USER_TYPE' => 'directory');
    $ibp = new CIBlockProperty();
    $ibp->Update($ar_res['ID'], $arFields1);
}
$res = CIBlockProperty::GetByID("BG_DET", $iblockID, false);
if ($ar_res = $res->GetNext()) {
    $arFields2 = array('USER_TYPE_SETTINGS' => array('size' => '1', 'width' => '0', 'group' => 'N', 'multiple' => 'N', 'TABLE_NAME' => 'backgrounddet'), 'USER_TYPE' => 'directory');
    $ibp = new CIBlockProperty();
    $ibp->Update($ar_res['ID'], $arFields2);
}
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "about/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "ajax/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "auth/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "brands/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "catalog/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "include/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "personal/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "news/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "sales/", array("ACTIONS_IBLOCK_ID" => $iblockID));
WizardServices::ReplaceMacrosRecursive(WIZARD_SITE_PATH . "search/", array("ACTIONS_IBLOCK_ID" => $iblockID));
Example #17
0
 /**
  * Метод подготовки данных
  * Применяется в $this->add() и $this->update()
  * Использует атрибуты полей из массива $this->_arTableFieldsCheck для проверки входных параметров метода
  * @param int $prepareType - может принимать для зачения self::PREPARE_ADD или self::PREPARE_UPDATE
  * @param array $arFields - значения полей основной таблицы сущности
  * @param null|array $arTableFieldsCheck - если задан, то переопределяет штатный $this->_arTableFieldsCheck
  * @param null|array $arTableFieldsDefault - если задан, то переопределяет штатный $this->_arTableFieldsDefault
  * @return array
  */
 protected function prepareFieldsData($prepareType, &$arFields, $arTableFieldsCheck = null, $arTableFieldsDefault = null)
 {
     global $DB;
     $arFieldsPrepared = array();
     if ($arTableFieldsDefault == null) {
         $arTableFieldsDefault = $this->_arTableFieldsDefault;
     } else {
         $arTableFieldsDefault = array_merge($this->_arTableFieldsDefault, $arTableFieldsDefault);
     }
     if ($arTableFieldsCheck == null) {
         $arTableFieldsCheck = $this->_arTableFieldsCheck;
     } else {
         $arTableFieldsCheck = array_merge($this->_arTableFieldsCheck, $arTableFieldsCheck);
     }
     $arCheckResult = array('__BREAK' => false, '__MAGIC_WORD' => false);
     if (array_key_exists(OBX_MAGIC_WORD, $arFields)) {
         $arCheckResult['__MAGIC_WORD'] = true;
         unset($arFields[OBX_MAGIC_WORD]);
     }
     foreach ($arFields as $fieldName => &$fieldValue) {
         $arCheckResult[$fieldName] = null;
         if (array_key_exists($fieldName, $arTableFieldsCheck)) {
             $arCheckResult[$fieldName] = array('RAW_VALUE' => $fieldValue, 'FIELD_TYPE' => null, 'FIELD_TYPE_MASK' => 0, 'FIELD_ATTR' => array(), 'IS_EMPTY' => false, 'IS_NULL' => false, 'IS_CORRECT' => false, 'FROM_DEFAULTS' => false, 'CHECK_DATA' => array());
             $fieldType = $arTableFieldsCheck[$fieldName];
             $bValueIsCorrect = false;
             $bNotNull = false;
             $bNotZero = false;
             $bDefaultIfNull = false;
             $bUnsignedType = false;
             if ($fieldType & self::FLD_UNSIGNED) {
                 $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_UNSIGNED'] = self::FLD_UNSIGNED;
                 $bUnsignedType = true;
             }
             if ($fieldType & self::FLD_NOT_NULL) {
                 $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_NOT_NULL'] = self::FLD_NOT_NULL;
                 $bNotNull = true;
             }
             $bPassNull = !$bNotNull;
             if ($fieldType & self::FLD_NOT_ZERO) {
                 $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_NOT_ZERO'] = self::FLD_NOT_ZERO;
                 $bNotZero = true;
             }
             $bPassZero = !$bNotZero;
             if ($fieldType & self::FLD_DEFAULT) {
                 $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_DEFAULT'] = self::FLD_DEFAULT;
                 if ($prepareType == self::PREPARE_ADD) {
                     $bDefaultIfNull = true;
                 }
             }
             if ($fieldType & self::FLD_REQUIRED) {
                 $arCheckResult[$fieldName]['FIELD_ATTR']['FLD_REQUIRED'] = self::FLD_REQUIRED;
             }
             $bValueIsEmpty = empty($fieldValue);
             if ($bValueIsEmpty) {
                 $arCheckResult[$fieldName]['IS_EMPTY'] = true;
             }
             if ($fieldValue === null && $bPassNull) {
                 $bValueIsCorrect = true;
                 $bValueIsEmpty = true;
                 $arCheckResult[$fieldName]['IS_NULL'] = true;
                 $arCheckResult[$fieldName]['IS_EMPTY'] = true;
                 $arCheckResult[$fieldName]['IS_CORRECT'] = true;
             } else {
                 switch ($fieldType & ~self::FLD_ATTR_ALL) {
                     case self::FLD_T_NO_CHECK:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_NO_CHECK';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_NO_CHECK;
                         $bValueIsCorrect = true;
                         break;
                     case self::FLD_T_CHAR:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_CHAR';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_CHAR;
                         if ($bPassNull && $bValueIsEmpty) {
                             $fieldValue = null;
                         } elseif (!$bValueIsEmpty) {
                             $fieldValue = substr($fieldValue, 0, 1);
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_INT:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_INT';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_INT;
                         $bValueIsCorrect = $this->__checkNumericField(false, $fieldValue, $bUnsignedType, $bNotNull, $bNotZero);
                         break;
                     case self::FLD_T_STRING:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_STRING';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_STRING;
                         $valStrLen = strlen($fieldValue);
                         if ($valStrLen > 0) {
                             $fieldValue = $DB->ForSql(htmlspecialcharsEx($fieldValue));
                             $bValueIsCorrect = true;
                         } elseif ($bPassZero) {
                             $fieldValue = '';
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_CODE:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_CODE';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_CODE;
                         $fieldValue = trim($fieldValue);
                         if (preg_match('~^[a-zA-Z\\_][a-z0-9A-Z\\_]{0,15}$~', $fieldValue)) {
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_BCHAR:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_BCHAR';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_BCHAR;
                         $fieldValue = strtoupper(substr($fieldValue, 0, 1));
                         if ($fieldValue == 'Y' || !$bUnsignedType && $fieldValue == 'N') {
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_FLOAT:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_FLOAT';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_FLOAT;
                         $bValueIsCorrect = $this->__checkNumericField(true, $fieldValue, $bUnsignedType, $bNotNull, $bNotZero);
                         break;
                     case self::FLD_T_IDENT:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IDENT';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IDENT;
                         $fieldValue = trim($fieldValue);
                         if (is_numeric($fieldValue) && ($fieldValue = intval($fieldValue)) > 0 || preg_match('~^[a-z0-9A-Z\\_]{1,255}$~', $fieldValue)) {
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_DATETIME:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_DATETIME';
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = self::FLD_T_DATETIME;
                         $fieldValue = trim($fieldValue);
                         $bValueIsCorrect = true;
                         // TODO: Тут надо дописать обработку дат и времени
                         break;
                     case self::FLD_T_BX_LANG_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_BX_LANG_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_BX_LANG_ID;
                         $fieldValue = trim($fieldValue);
                         if (strlen($fieldValue) > 0 && preg_match('~^[a-zA-Z\\_][a-z0-9A-Z\\_]?$~', $fieldValue)) {
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_IBLOCK_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_ID;
                         $fieldValue = intval($fieldValue);
                         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                         $rs = \CIBlock::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_IBLOCK_PROP_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_PROP_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_PROP_ID;
                         $rs = \CIBlockProperty::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_IBLOCK_ELEMENT_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_ELEMENT_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_ELEMENT_ID;
                         $rs = \CIBlockElement::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_IBLOCK_SECTION_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_IBLOCK_SECTION_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_IBLOCK_SECTION_ID;
                         $rs = \CIBlockSection::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_USER_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_USER_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_USER_ID;
                         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                         $rs = \CUser::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                     case self::FLD_T_GROUP_ID:
                         $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_T_GROUP_ID';
                         $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_T_GROUP_ID;
                         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                         $rs = \CGroup::GetByID($fieldValue);
                         if ($arData = $rs->GetNext()) {
                             $arCheckResult[$fieldName]['CHECK_DATA'] = $arData;
                             $bValueIsCorrect = true;
                         }
                         break;
                 }
             }
             if ($fieldType & self::FLD_CUSTOM_CK) {
                 $arCheckResult[$fieldName]['FIELD_TYPE'] = 'FLD_CUSTOM_CK';
                 $arCheckResult[$fieldName]['FIELD_TYPE_MASK'] = self::FLD_CUSTOM_CK;
                 if ($bValueIsCorrect) {
                     $customCheckFunc = '__check_' . $fieldName;
                     if (is_callable(array($this, $customCheckFunc))) {
                         //$bValueIsCorrect = call_user_func($customCheckFunc, $fieldValue, $arCheckResult[$fieldName]['CHECK_DATA']);
                         $bValueIsCorrect = $this->{$customCheckFunc}($fieldValue, $arCheckResult[$fieldName]['CHECK_DATA']);
                     }
                 }
             }
             if (!$bValueIsCorrect && $fieldType & self::FLD_BRK_INCORR) {
                 $arCheckResult['__BREAK'] = true;
             }
             if ($bValueIsEmpty && $bDefaultIfNull) {
                 if (array_key_exists($fieldName, $arTableFieldsDefault)) {
                     $arCheckResult[$fieldName]['FROM_DEFAULTS'] = true;
                     $arFieldsPrepared[$fieldName] = $arTableFieldsDefault[$fieldName];
                 }
             } elseif ($bValueIsCorrect) {
                 $arCheckResult[$fieldName]['IS_CORRECT'] = true;
                 $arCheckResult[$fieldName]['VALUE'] = $fieldValue;
                 $arFieldsPrepared[$fieldName] = $fieldValue;
             }
         }
     }
     $arFields = $arFieldsPrepared;
     return $arCheckResult;
 }
Example #18
0
 /**
  * checkParams
  * @param array $params
  * @return mixed|void
  * @throws \Exception
  */
 public function checkParams($params)
 {
     $iBlock = new \CIBlock();
     if (!isset($params['iblockId']) || !strlen($params['iblockId'])) {
         throw new BimException('В параметрах не найден iblockId');
     }
     if (!isset($params['propertyId']) || empty($params['propertyId'])) {
         throw new BimException('В параметрах не найден propertyId');
     }
     $iblockDbRes = $iBlock->GetByID($params['iblockId']);
     if ($iblockDbRes === false || !$iblockDbRes->SelectedRowsCount()) {
         throw new BimException('Не найден инфоблок с iblockId = ' . $params['iblockId']);
     }
     $iblockData = $iblockDbRes->Fetch();
     if (!strlen($iblockData['CODE'])) {
         throw new BimException('В инфоблоке не указан символьный код');
     }
     $this->ownerItemDbData['iblockData'] = $iblockData;
     $this->ownerItemDbData['propertyData'] = array();
     foreach ($params['propertyId'] as $propertyId) {
         $propertyDbRes = \CIBlockProperty::GetByID($propertyId);
         if ($propertyDbRes === false || !$propertyDbRes->SelectedRowsCount()) {
             throw new BimException('Не найдено св-во с id = ' . $propertyId);
         }
         $propertyData = $propertyDbRes->Fetch();
         if (!strlen($propertyData['CODE'])) {
             throw new BimException('В свойстве c id =' . $propertyData['ID'] . ' не указан символьный код.');
         }
         $this->ownerItemDbData['propertyData'][] = $propertyData;
     }
 }
Example #19
0
 function UpdateActivityIBlock(&$arFields)
 {
     if ($arFields['RESULT']) {
         // absence
         $iblock = COption::GetOptionInt('intranet', 'iblock_absence');
         if (!$iblock) {
             $iblock = array();
             $dbRes = CSite::GetList($b = 'SORT', $o = 'ASC');
             while ($arRes = $dbRes->Fetch()) {
                 if ($ib = COption::GetOptionInt('intranet', 'iblock_absence', false, $arRes['ID'])) {
                     $iblock[] = $ib;
                 }
             }
         } else {
             $iblock = array($iblock);
         }
         if (count($iblock) > 0) {
             foreach ($iblock as $ib) {
                 if ($arFields['IBLOCK_ID'] == $ib) {
                     static $PROPERTY_USER = 0;
                     if ($PROPERTY_USER <= 0) {
                         $dbRes = CIBlockProperty::GetByID('USER', $arFields['IBLOCK_ID']);
                         if ($arRes = $dbRes->Fetch()) {
                             $PROPERTY_USER = $arRes['ID'];
                         }
                     }
                     if ($PROPERTY_USER > 0) {
                         //							$arPropertyValue = array_values($arFields['PROPERTY_VALUES']);
                         //							$USER_ID = $arPropertyValue[0];
                         $USER_ID = $arFields['PROPERTY_VALUES']['USER'];
                         $dbRes = CUser::GetByID($USER_ID);
                         if ($arUser = $dbRes->Fetch()) {
                             CIBlockElement::SetPropertyValues($arFields['ID'], $arFields['IBLOCK_ID'], $arUser['ACTIVE'], 'USER_ACTIVE');
                         }
                     }
                 }
             }
         }
         // -- absence
         // news
         if (intval($arFields["IBLOCK_ID"]) > 0) {
             $rsIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]);
             if ($arIBlock = $rsIBlock->Fetch()) {
                 if ($arIBlock["IBLOCK_TYPE_ID"] == "news" && CModule::IncludeModule("socialnetwork")) {
                     CSocNetAllowed::GetAllowedEntityTypes();
                     $dbLog = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "news", "SOURCE_ID" => $arFields["ID"]));
                     if ($arLog = $dbLog->Fetch()) {
                         if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) {
                             $arSoFields = array("=LOG_DATE" => strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $site_id)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $site_id) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction(), "=LOG_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE" => $arFields["NAME"], "MESSAGE" => strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"]));
                             $logID = CSocNetLog::Update($arLog["ID"], $arSoFields);
                             if (intval($logID) > 0) {
                                 $rsRights = CSocNetLogRights::GetList(array(), array("LOG_ID" => $logID));
                                 $arRights = $rsRights->Fetch();
                                 if (!$arRights) {
                                     CSocNetLogRights::Add($logID, "G2");
                                 }
                                 CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT");
                             }
                         } else {
                             CSocNetLog::Delete($arLog["ID"]);
                         }
                     } else {
                         if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) {
                             $dbIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]);
                             if ($arIBlock = $dbIBlock->Fetch()) {
                                 $rsSite = CIBlock::GetSite($arFields["IBLOCK_ID"]);
                                 if ($arSite = $rsSite->Fetch()) {
                                     $site_id = $arSite["SITE_ID"];
                                 }
                                 $val = COption::GetOptionString("intranet", "sonet_log_news_iblock", "", $site_id);
                                 if (strlen($val) > 0) {
                                     $arIBCode = unserialize($val);
                                     if (!is_array($arIBCode) || count($arIBCode) <= 0) {
                                         $arIBCode = array();
                                     }
                                 } else {
                                     $arIBCode = array();
                                 }
                                 if (in_array($arIBlock["CODE"], $arIBCode)) {
                                     $entity_url = str_replace("#SITE_DIR#", $arSite["DIR"], $arIBlock["LIST_PAGE_URL"]);
                                     if (strpos($entity_url, "/") === 0) {
                                         $entity_url = "/" . ltrim($entity_url, "/");
                                     }
                                     $url = str_replace(array("#SITE_DIR#", "#ID#", "#CODE#"), array($arSite["DIR"], $arFields["ID"], $arFields["CODE"]), $arIBlock["DETAIL_PAGE_URL"]);
                                     if (strpos($url, "/") === 0) {
                                         $url = "/" . ltrim($url, "/");
                                     }
                                     $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum");
                                     if (strlen($val) > 0) {
                                         $arIBlockForum = unserialize($val);
                                     } else {
                                         $arIBlockForum = array();
                                     }
                                     $strMessage = strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"]);
                                     $dtFormatSite = defined("ADMIN_SECTION") && ADMIN_SECTION === true ? SITE_ID : $site_id;
                                     $dtValue = strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $dtFormatSite)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $dtFormatSite) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction();
                                     $arSoFields = array("SITE_ID" => $site_id, "ENTITY_TYPE" => SONET_SUBSCRIBE_ENTITY_NEWS, "ENTITY_ID" => $arIBlock["ID"], "EVENT_ID" => "news", "USER_ID" => $GLOBALS["USER"]->GetID(), "=LOG_DATE" => $dtValue, "=LOG_UPDATE" => $dtValue, "TITLE_TEMPLATE" => GetMessage("INTR_SOCNET_LOG_NEWS_TITLE"), "TITLE" => $arFields["NAME"], "MESSAGE" => $strMessage, "TEXT_MESSAGE" => "", "URL" => $url, "MODULE_ID" => "intranet", "CALLBACK_FUNC" => false, "TMP_ID" => false, "PARAMS" => serialize(array("ENTITY_NAME" => $arIBlock["NAME"], "ENTITY_URL" => $entity_url)), "SOURCE_ID" => $arFields["ID"], "ENABLE_COMMENTS" => array_key_exists($arIBlock["ID"], $arIBlockForum) ? "Y" : "N");
                                     $logID = CSocNetLog::Add($arSoFields, false);
                                     if (intval($logID) > 0) {
                                         CSocNetLog::Update($logID, array("TMP_ID" => $logID));
                                         CSocNetLogRights::Add($logID, "G2");
                                         CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT");
                                     }
                                 }
                             }
                         }
                     }
                     if ($logID > 0 && strlen($arFields["ACTIVE_TO"]) > 0) {
                         $agent = "CIntranetEventHandlers::DeleteLogEntry(" . $arFields["ID"] . ");";
                         CAgent::RemoveAgent($agent, "intranet");
                         CAgent::AddAgent($agent, "intranet", "N", 0, $arFields["ACTIVE_TO"], "Y", $arFields["ACTIVE_TO"]);
                     }
                 }
             }
         }
         // --news
     }
 }
    $item['BASE_PRICE'] = CPrice::GetBasePrice($item['PRODUCT_ID']);
    $item["BASE_PRICE"]['PRICE'] = ceil($item["BASE_PRICE"]['PRICE']);
    $item['PRICE'] = ceil($item['PRICE']);
    if($ar_res['IBLOCK_CODE']=='tyres'){
        $rsProp = CIBlockProperty::GetByID('model', false, 'tyres');
        if($arProp = $rsProp->GetNext()){
            $rsElement = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$arProp['LINK_IBLOCK_ID'], 'ID'=>$ar_res['PROPERTIES']['model']['VALUE'], 'ACTIVE'=>'Y'), false, array('nTopCount'=>1), array('ID', 'IBLOCK_ID', 'PREVIEW_PICTURE'));
            if ($obElement = $rsElement->GetNextElement()) {
                $arFields = $obElement->GetFields();
                $arProps = $obElement->GetProperties(false, array('CODE'=>array('model_season', 'model_type', 'model_pin')));

                $item['IBLOCK_CODE']='tyres';
                $item['PREVIEW_PICTURE'] = CFile::ResizeImageGet($arFields['PREVIEW_PICTURE'], array('width'=>43, 'height'=>60), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                $item['PROPERTIES'] = $arProps;
            }
        }
    }elseif($ar_res['IBLOCK_CODE']=='wheels'){
        $rsProp = CIBlockProperty::GetByID('model', false, 'wheels');
        if($arProp = $rsProp->GetNext()){
            $rsElement = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$arProp['LINK_IBLOCK_ID'], 'ID'=>$ar_res['PROPERTIES']['model']['VALUE'], 'ACTIVE'=>'Y'), false, array('nTopCount'=>1), array('ID', 'IBLOCK_ID', 'PREVIEW_PICTURE'));
            if ($obElement = $rsElement->GetNextElement()) {
                $arFields = $obElement->GetFields();

                $item['IBLOCK_CODE']='wheels';
                $item['PREVIEW_PICTURE'] = CFile::ResizeImageGet($arFields['PREVIEW_PICTURE'], array('width'=>43, 'height'=>60), BX_RESIZE_IMAGE_PROPORTIONAL, true);
            }
        }
    }
}
?>
Example #21
0
 protected function _SyncGetValueByType($FIELD, &$arQueue)
 {
     $fld = $FIELD['FIELD'];
     $bProperty = ($prop = self::__prop($fld['FIELD_ID'])) != null;
     $value = $FIELD['VALUE'];
     switch ($fld['SP_FIELD_TYPE']) {
         case 'DateTime':
             $ts = strtotime($value);
             if ($ts) {
                 $value = ConvertTimeStamp($ts, 'FULL');
             }
             break;
         case 'Counter':
         case 'Integer':
             $value = intval($value);
             break;
         case 'Number':
             $value = doubleval($value);
             break;
         case 'User':
             $bParseAsUser = false;
             if ($bProperty) {
                 $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
                 if ($arRes = $dbRes->Fetch()) {
                     if ($arRes['USER_TYPE'] == 'UserID' || $arRes['USER_TYPE'] == 'employee') {
                         $bParseAsUser = true;
                     }
                 }
             } elseif ($fld['FIELD_ID'] == 'MODIFIED_BY' || $fld['FIELD_ID'] == 'CREATED_BY') {
                 $bParseAsUser = true;
             }
             //var_dump($value);
             if ($bParseAsUser) {
                 $value = self::_SyncGetUser($value);
             }
             break;
         case 'Choice':
             if ($bProperty) {
                 $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
                 if ($arRes = $dbRes->Fetch()) {
                     if ($arRes['PROPERTY_TYPE'] == 'L') {
                         $dbRes = CIBlockProperty::GetPropertyEnum($prop, array(), array('VALUE' => $value));
                         if ($arRes = $dbRes->Fetch()) {
                             $value = $arRes['ID'];
                         }
                     }
                 }
             }
             break;
         case 'Attachments':
             $value = intval($value);
             if ($value > 0) {
                 $arQueue[] = array('SP_METHOD' => 'GetAttachmentCollection', 'SP_METHOD_PARAMS' => array('SP_ID' => $FIELD['ROW']['ID']), 'CALLBACK' => array('CIntranetSharepoint', 'SetPropertyValue', array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID'])));
             }
             $value = null;
             break;
         case 'ContentTypeId':
         case 'Lookup':
         case 'Computed':
         case 'Text':
         default:
             $bParseAsFile = false;
             if ($bProperty) {
                 $dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
                 if ($arRes = $dbRes->Fetch()) {
                     if ($arRes['PROPERTY_TYPE'] == 'F') {
                         $bParseAsFile = true;
                     }
                 }
             } elseif ($fld['FIELD_ID'] == 'PREVIEW_PICTURE' || $fld['FIELD_ID'] == 'DETAIL_PICTURE') {
                 $bParseAsFile = true;
             }
             if ($bParseAsFile) {
                 $arQueue[] = array('SP_METHOD' => 'LoadFile', 'SP_METHOD_PARAMS' => array('URL' => $value), 'CALLBACK' => array('CIntranetSharepoint', 'SetPropertyValue', array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID'])));
                 $value = null;
             }
     }
     if ($bProperty) {
         return array('VALUE' => $value, 'PROPERTY' => $prop);
     } else {
         return array('VALUE' => $value, 'FIELD' => $fld['FIELD_ID']);
     }
 }
     if ($iblockId > 0) {
         $arIBlockIDs[] = $iblockId;
     }
 }
 $arIBlockIDs = array_values(array_unique($arIBlockIDs));
 for ($i = $IBN; $i < sizeof($arIBlockIDs); $i++) {
     $dbTasksList = GetTasksList($arIBlockIDs[$i], array("ID" => "ASC"), array(">ID" => $ID));
     $start_time = microtime(true);
     while ($task = $dbTasksList->Fetch()) {
         $ID = $task["ID"];
         $newTask = array("SITE_ID" => $task["LID"], "TITLE" => htmlspecialchars_decode($task["NAME"]), "DESCRIPTION" => $task["DETAIL_TEXT"], "RESPONSIBLE_ID" => $task["PROPERTY_TaskAssignedTo"], "CREATED_BY" => $task["CREATED_BY"], "CREATED_DATE" => $task["DATE_CREATE"], "CHANGED_BY" => $task["MODIFIED_BY"], "CHANGED_DATE" => $task["TIMESTAMP_X"], "XML_ID" => $task["XML_ID"], "PRIORITY" => 0, "STATUS" => 1, "DURATION_PLAN" => intval($task["PROPERTY_TaskSize"]), "DURATION_FACT" => intval($task["PROPERTY_TaskSizeReal"]), "DURATION_TYPE" => "hours", "TAGS" => $task["TAGS"]);
         if ($task["DATE_ACTIVE_TO"]) {
             $newTask["DEADLINE"] = $task["DATE_ACTIVE_TO"];
         }
         if (is_array($task["PROPERTY_TaskPriority"]) && sizeof($task["PROPERTY_TaskPriority"]) > 0) {
             $rsProperty = CIBlockProperty::GetByID(key($task["PROPERTY_TaskPriority"]));
             if ($arProperty = $rsProperty->Fetch()) {
                 if (in_array($arProperty["XML_ID"], array(1, 2, 3))) {
                     $newTask["PRIORITY"] = $arProperty["XML_ID"] - 1;
                 }
             }
         }
         if (isset($task["DocumentState"]["STATE_NAME"]) && array_key_exists($task["DocumentState"]["STATE_NAME"], $arStatusMappings)) {
             $newTask["STATUS"] = $arStatusMappings[$task["DocumentState"]["STATE_NAME"]];
         } elseif ($newTask["STATUS"] == 1 && $newTask["RESPONSIBLE_ID"] == $newTask["CREATED_BY"]) {
             $newTask["STATUS"] = 2;
         } elseif ($newTask["STATUS"] == 4 && $newTask["RESPONSIBLE_ID"] == $newTask["CREATED_BY"]) {
             $newTask["STATUS"] = 5;
         }
         if (is_array($task["PROPERTY_TaskFiles"]) && sizeof($task["PROPERTY_TaskFiles"]) > 0) {
             $newTask["FILES"] = $task["PROPERTY_TaskFiles"];
Example #23
0
	$BX_TV_PREFIX = intval($BX_TV_PREFIX)+1;

$arResult['FIRST_FLV_ITEM'] = false;
$arResult['FIRST_WMV_ITEM'] = false;

if($this->StartResultCache(false, array(($arParams["CACHE_GROUPS"]==="N"? false: $USER->GetGroups()), $BX_TV_PREFIX)))
{
	if(!CModule::IncludeModule("iblock"))
	{
		$this->AbortResultCache();
		ShowError(GetMessage("CC_BIT_MODULE_NOT_INSTALLED"));
		return;
	}

	$rsProperty = CIBlockProperty::GetByID(
		$arParams["PATH_TO_FILE"],
		$arParams["IBLOCK_ID"]
	);

	if(!$arProperty = $rsProperty->Fetch())
	{
		$this->AbortResultCache();
		return false;
	}

	$arResult = array(
		"RAW_SECTIONS" => array(),
		"RAW_ELEMENTS" => array(),
		"RAW_FILES" => array(),
		"PREFIX" => $BX_TV_PREFIX,
		"ELEMENT_CNT" => 0,
		"IBLOCK_TYPE_ID" => false,
Example #24
0
$conversionProperty = function ($idProperty, $idIBlock, $type) {
    $propertyValues = array();
    $result = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $idIBlock), null, null, array('ID'));
    $variants = array();
    while ($element = $result->Fetch()) {
        $propResult = CIBlockElement::GetProperty($idIBlock, $element['ID'], '', '', array('ID' => $idProperty));
        while ($property = $propResult->Fetch()) {
            $propertyValues[] = array('id_element' => (int) $element['ID'], 'id_property' => (int) $property['ID'], 'value' => $property['VALUE']);
            $variants[] = $property['VALUE'];
        }
    }
    $variants = array_filter(array_unique($variants));
    asort($variants);
    $prop = new CIBlockProperty();
    $prop->Update($idProperty, array('PROPERTY_TYPE' => $type));
    $propertyData = CIBlockProperty::GetByID($idProperty, $idIBlock)->Fetch();
    $list = array();
    switch ($type) {
        case "L":
            // list
            /** @var CDatabase $DB */
            global $DB;
            foreach ($variants as $variant) {
                $lastId = $list[$variant] = CIBlockPropertyEnum::Add(array('PROPERTY_ID' => $idProperty, 'VALUE' => $variant));
                if (!$lastId) {
                    throw new Exception($DB->db_Error);
                }
            }
            break;
        case "E":
            // Привязка к элементу
        if (0 >= intval($key)) {
            $intNewKey++;
        }
    }
}
if (1 != preg_match('/^n\\d+$/', $str_PROPERTY_ID)) {
    $str_PROPERTY_IDCheck = intval($str_PROPERTY_ID);
    if (0 == $intIBlockID || $str_PROPERTY_IDCheck . '|' != $str_PROPERTY_ID . '|' || 0 >= $str_PROPERTY_IDCheck) {
        require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
        ShowError(GetMessage("BT_ADM_IEP_PROPERTY_ID_IS_ABSENT"));
        require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
        die;
    } else {
        $str_PROPERTY_ID = $str_PROPERTY_IDCheck;
        unset($str_PROPERTY_IDCheck);
        $rsProps = CIBlockProperty::GetByID($str_PROPERTY_ID, $intIBlockID);
        if (!($arPropCheck = $rsProps->Fetch())) {
            require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
            ShowError(str_replace('#ID#', $str_PROPERTY_ID, GetMessage("BT_ADM_IEP_PROPERTY_IS_NOT_EXISTS")));
            require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
            die;
        }
    }
}
$bVarsFromForm = $bReload;
$message = false;
$strWarning = "";
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["action"]) && $_POST["action"] === "delete") {
    CIBlockProperty::Delete($str_PROPERTY_ID);
    if (strlen($return_url) > 0) {
        LocalRedirect($return_url);
Example #26
0
 protected function innerDelete($id, &$errors)
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION;
     if (!CModule::IncludeModule('iblock')) {
         throw new RestException('Could not load iblock module.');
     }
     /** @var CCrmPerms $userPerms */
     $userPerms = CCrmPerms::GetCurrentUserPermissions();
     if (!$userPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
         $errors[] = 'Access denied.';
         return false;
     }
     $iblockId = intval(CCrmCatalog::EnsureDefaultExists());
     $userTypes = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'rest');
     $res = CIBlockProperty::GetByID($id, $iblockId);
     $result = false;
     if (is_object($res)) {
         $result = $res->Fetch();
     }
     unset($res);
     if (!is_array($result) || isset($result['USER_TYPE']) && !empty($result['USER_TYPE']) && !array_key_exists($result['USER_TYPE'], $userTypes)) {
         $errors[] = 'Not found';
         return false;
     }
     if (!CIBlockProperty::Delete($id)) {
         if ($e = $APPLICATION->GetException()) {
             $errors[] = $e->GetString();
         } else {
             $errors[] = 'Error on deleting product property.';
         }
         return false;
     }
     return true;
 }