function __construct($iblock_id)
 {
     if (!$iblock_id) {
         return false;
     }
     $this->iblock_id = $iblock_id;
     $this->obCache = new CPHPCache();
     if ($this->obCache->InitCache(self::$config['CACHE_TIME'], md5($this->iblock_id . __METHOD__), self::$config['CACHE_DIR'])) {
         $this->props = $this->obCache->GetVars();
     } elseif ($this->obCache->StartDataCache()) {
         CModule::IncludeModule('iblock');
         global $CACHE_MANAGER;
         $CACHE_MANAGER->StartTagCache(self::$config['CACHE_DIR']);
         $CACHE_MANAGER->RegisterTag("iblock_id_" . $this->iblock_id);
         $CACHE_MANAGER->RegisterTag(self::$config['CACHE_TAG']);
         $CACHE_MANAGER->EndTagCache();
         $properties = CIBlockProperty::GetList(array("sort" => "asc"), array("ACTIVE" => "Y", "IBLOCK_ID" => $this->iblock_id));
         while ($prop_fields = $properties->GetNext()) {
             $propArr = array('ID' => $prop_fields['ID'], 'PROPERTY_NAME' => $prop_fields['NAME'], 'PROPERTY_TYPE' => $prop_fields['PROPERTY_TYPE'], 'CODE' => $prop_fields['CODE']);
             foreach (array('LINK_IBLOCK_ID', 'USER_TYPE') as $code) {
                 if (isset($prop_fields[$code])) {
                     $propArr[$code] = $prop_fields[$code];
                 }
             }
             if ($prop_fields["USER_TYPE_SETTINGS"]["TABLE_NAME"]) {
                 $propArr['TABLE_NAME'] = $prop_fields["USER_TYPE_SETTINGS"]["TABLE_NAME"];
             }
             $this->props[$prop_fields["CODE"]] = $propArr;
         }
         $this->obCache->EndDataCache($this->props);
     }
 }
Example #2
0
 /**
  * generateAddCode
  * @param array $params
  * @return bool|string
  */
 public function generateAddCode($params)
 {
     $iBlock = new \CIBlock();
     $IblockCode = $params['iblockCode'];
     $PropertyCode = $params['propertyCode'];
     $IblockProperty = new \CIBlockProperty();
     $dbIblockProperty = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $IblockCode, 'CODE' => $PropertyCode));
     if ($arIblockProperty = $dbIblockProperty->Fetch()) {
         if ($arIblockProperty['PROPERTY_TYPE'] == 'L') {
             $arIblockProperty['VALUES'] = $this->getEnumItemList($arIblockProperty['IBLOCK_ID'], $arIblockProperty['ID']);
         }
         if (isset($arIblockProperty['LINK_IBLOCK_ID'])) {
             $res = $iBlock->GetByID($arIblockProperty['LINK_IBLOCK_ID']);
             if ($ar_res = $res->GetNext()) {
                 unset($arIblockProperty['LINK_IBLOCK_ID']);
                 $arIblockProperty['LINK_IBLOCK_CODE'] = $ar_res['CODE'];
             }
         }
         unset($arIblockProperty['ID']);
         unset($arIblockProperty['IBLOCK_ID']);
         $arIblockProperty['IBLOCK_CODE'] = $IblockCode;
         return $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($arIblockProperty));
     } else {
         return false;
     }
 }
function _getPropertiesEx($arParams)
{
    $arFilter = array();
    $arProperties = array();
    $arPropListIds = array();
    if (notEmpty($arParams["type"])) {
        $arFilter["PROPERTY_TYPE"] = $arParams["type"];
    }
    if (notEmpty($arParams["iblock_id"])) {
        $arFilter["IBLOCK_ID"] = iblock($arParams["iblock_id"]);
    }
    $resProperties = \CIBlockProperty::GetList(array(), $arFilter);
    while ($arProperty = $resProperties->Fetch()) {
        $arProperties[$arProperty["CODE"]] = $arProperty;
        if ($arProperty["PROPERTY_TYPE"] == "L") {
            $arPropListIds[] = $arProperty["ID"];
        }
    }
    // В фильтр CIBlockPropertyEnum::GetList() нельзя передать
    // PROPERTY_ID в виде массива ID, поэтому перебираем
    // каждое свойство в цикле
    foreach ($arPropListIds as $propListId) {
        $resPropValues = \CIBlockPropertyEnum::GetList(array('SORT' => 'ASC', 'VALUE' => 'ASC'), array('PROPERTY_ID' => $propListId));
        while ($arPropValue = $resPropValues->Fetch()) {
            $arProperties[$arPropValue["PROPERTY_CODE"]]["VALUES"][$arPropValue["XML_ID"]] = $arPropValue["ID"];
        }
    }
    return $arProperties;
}
 public function testAdd()
 {
     /** @var $dbList \CDBResult */
     $dbList = \CIBlock::GetList();
     $ibCountBefore = $dbList->SelectedRowsCount();
     $beforeIds = array();
     while ($arIblock = $dbList->Fetch()) {
         $beforeIds[] = $arIblock['ID'];
     }
     $this->_applyFixtures(self::FIXTURE_TYPE_ADD);
     $dbList = \CIBlock::GetList();
     $ibCountAfter = $dbList->SelectedRowsCount();
     $afterIds = array();
     while ($arIblock = $dbList->Fetch()) {
         $afterIds[] = $arIblock['ID'];
     }
     $aAddedId = array_diff($afterIds, $beforeIds);
     $this->_processIblockId = array_shift($aAddedId);
     $this->assertNotEmpty($ibCountAfter, $this->errorMessage('record IB must be present'));
     $this->assertNotEquals($ibCountAfter, $ibCountBefore, $this->errorMessage('not also recording information block'));
     $this->assertNotEmpty($this->_processIblockId, $this->errorMessage('unavailable identifier of the new information block'));
     $rsProps = \CIBlockProperty::GetList(null, array('IBLOCK_ID' => $this->_processIblockId));
     $this->assertNotEmpty($rsProps->AffectedRowsCount(), $this->errorMessage('added properties not available information block', array(':iblockId' => $this->_processIblockId)));
     $rsSections = \CIBlockSection::getList(null, array('IBLOCK_ID' => $this->_processIblockId), false, array('ID'));
     $this->assertNotEmpty($rsSections->AffectedRowsCount(), $this->errorMessage('added sections not available information block'));
     $registerRef = (bool) DbVersionReferencesTable::getList(array('filter' => array('=DB_VERSION' => Module::getInstance()->getDbVersion(), '=GROUP' => ReferenceController::GROUP_IBLOCK, '=ITEM_ID' => $this->_processIblockId)))->fetch();
     $this->assertTrue($registerRef, $this->errorMessage('In added apply not created iblock reference ' . $this->_processIblockId));
 }
Example #5
0
 /**
  * Генерация создания Информационного блока
  *
  * generateAddCode
  * @param array $IblockCode
  * @return bool|string
  */
 public function generateAddCode($IblockCode)
 {
     $return = array();
     $iblockObject = $this->iblock->GetList(array(), array('CODE' => $IblockCode, 'CHECK_PERMISSIONS' => 'N'));
     if ($item = $iblockObject->Fetch()) {
         # Установка групп пользователей
         $this->setUserGroupId($item['ID'], $item);
         $item['FIELDS'] = \CIBlock::GetFields($item['ID']);
         Helper::unsetFields(array('ID'), $item);
         if ($return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($item))) {
             $IblockProperty = new \CIBlockProperty();
             $iblockPropertyQuery = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $item['CODE']));
             while ($iblockProperty = $iblockPropertyQuery->Fetch()) {
                 Helper::unsetFields(array('ID'), $iblockProperty);
                 $iblockProperty['IBLOCK_CODE'] = $item['CODE'];
                 $propertyQuery = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $iblockProperty['IBLOCK_ID'], "CODE" => $iblockProperty['CODE']));
                 while ($propertyValues = $propertyQuery->Fetch()) {
                     Helper::unsetFields(array('ID', 'PROPERTY_ID'), $propertyValues);
                     $iblockProperty['VALUES'][] = $propertyValues;
                 }
                 if (!is_null($iblockProperty['LINK_IBLOCK_ID'])) {
                     $linkedIBlock = $this->iblock->GetList(array(), array('ID' => $iblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'))->Fetch();
                     $iblockProperty['LINK_IBLOCK_CODE'] = $linkedIBlock['CODE'];
                 }
                 $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($iblockProperty));
             }
             return implode(PHP_EOL, $return);
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
Example #6
0
 /**
  * Генерация создания
  *
  * generateAddCode
  * @param array $IblockTypeId
  * @return bool|string
  */
 public function generateAddCode($IblockTypeId)
 {
     $iBlock = new \CIBlock();
     $CIblockType = new \CIBlockType();
     $lang = new \CLanguage();
     $return = array();
     $dbIblockType = $CIblockType->GetByID($IblockTypeId);
     if ($arIblockType = $dbIblockType->GetNext()) {
         $Iblock = new \CIBlock();
         $dbIblock = $Iblock->GetList(array(), array('TYPE' => $IblockTypeId, 'CHECK_PERMISSIONS' => 'N'));
         while ($arIblock = $dbIblock->GetNext()) {
             $IblockProperty = new \CIBlockProperty();
             $dbIblockProperty = $IblockProperty->GetList(array(), array('IBLOCK_CODE' => $arIblock['CODE'], 'CHECK_PERMISSIONS' => 'N'));
             while ($arIblockProperty = $dbIblockProperty->GetNext()) {
                 $dbPropertyValues = \CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $arIblockProperty['IBLOCK_ID'], "CODE" => $arIblockProperty['CODE']));
                 while ($arPropertyValues = $dbPropertyValues->Fetch()) {
                     $arIblockProperty['VALUES'][$arPropertyValues['ID']] = $arPropertyValues;
                 }
                 Helper::unsetFields(array('ID', '~ID', 'IBLOCK_ID', '~IBLOCK_ID'), $arIblockProperty);
                 $arIblockProperty['IBLOCK_CODE'] = $arIblock['CODE'];
                 foreach ($arIblockProperty as $k => $v) {
                     if (strstr($k, "~") || is_null($v)) {
                         unset($arIblockProperty[$k]);
                     }
                 }
                 if (isset($arIblockProperty['LINK_IBLOCK_ID'])) {
                     $res = $iBlock->GetList(array(), array("ID" => $arIblockProperty['LINK_IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'));
                     if ($ar_res = $res->GetNext()) {
                         unset($arIblockProperty['LINK_IBLOCK_ID']);
                         $arIblockProperty['LINK_IBLOCK_CODE'] = $ar_res['CODE'];
                     }
                 }
                 $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockPropertyIntegrate', 'Add', array($arIblockProperty));
             }
             foreach ($arIblock as $k => $v) {
                 if (strstr($k, "~") || $k == 'ID') {
                     unset($arIblock[$k]);
                 }
             }
             $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockIntegrate', 'Add', array($arIblock));
         }
         foreach ($arIblockType as $k => $v) {
             if (strstr($k, "~") || is_null($v)) {
                 unset($arIblockType[$k]);
             }
         }
         $rsLang = $lang->GetList($by = "lid", $order = "desc");
         while ($arLang = $rsLang->Fetch()) {
             $arTypeLang = $CIblockType->GetByIDLang($IblockTypeId, $arLang['LID']);
             $arIblockType["LANG"][$arLang['LID']] = array('NAME' => $arTypeLang['NAME'], 'SECTION_NAME' => $arTypeLang['SECTION_NAME'], 'ELEMENT_NAME' => $arTypeLang['ELEMENT_NAME']);
         }
         $return[] = $this->getMethodContent('Bim\\Db\\Iblock\\IblockTypeIntegrate', 'Add', array($arIblockType));
         $return = array_reverse($return);
         return implode(PHP_EOL, $return);
     } else {
         return false;
     }
 }
Example #7
0
 function getIBlockProperties($IBlockId)
 {
     $Props = array();
     $rsProperty = CIBlockProperty::GetList(array('sort' => 'asc'), array('ACTIVE' => 'Y', 'IBLOCK_ID' => $IBlockId));
     while ($arProperty = $rsProperty->Fetch()) {
         $Props[] = 'PROPERTY_' . $arProperty['CODE'];
     }
     return $Props;
 }
Example #8
0
 public function getProperties()
 {
     if (!isset($this->properties)) {
         $this->properties = array();
         $rs = \CIBlockProperty::GetList(array('sort' => 'asc'), array('IBLOCK_ID' => $this->id));
         while ($ar = $rs->Fetch()) {
             $this->properties[$ar['CODE']] = new Property($ar);
         }
     }
     return $this->properties;
 }
Example #9
0
 function findId($code)
 {
     if (CModule::IncludeModule("iblock")) {
         $properties = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("ACTIVE" => "Y", 'CODE' => $code));
         while ($prop_fields = $properties->GetNext()) {
             $temp = $prop_fields['ID'];
         }
         return $temp;
     } else {
         return false;
     }
 }
 /**
  * @param string $propCode
  * @param string $userType
  * @return bool
  * @throws PropertyAlreadyExistException
  */
 protected function checkExistProperty($propCode, $userType)
 {
     $propertyModel = new \CIBlockProperty();
     $rsProperty = $propertyModel->GetList([], ['IBLOCK_ID' => $this->getIblockId(), 'CODE' => $propCode]);
     if ($property = $rsProperty->Fetch()) {
         if ($property['USER_TYPE'] !== $userType) {
             throw new PropertyAlreadyExistException($propCode);
         } else {
             return true;
         }
     }
     return false;
 }
 /**
  * Delete
  * @param $sIBlockCode
  * @param $sPropertyCode
  * @return array
  * @throws \Exception
  */
 public static function Delete($sIBlockCode, $sPropertyCode)
 {
     $rsProperty = \CIBlockProperty::GetList(array(), array('IBLOCK_CODE' => $sIBlockCode, 'CODE' => $sPropertyCode));
     if ($arProperty = $rsProperty->Fetch()) {
         if (\CIBlockProperty::Delete($arProperty['ID'])) {
             return true;
         } else {
             throw new BimException(__METHOD__ . "Iblock property delete error!");
         }
     } else {
         throw new BimException(__METHOD__ . 'Not find property with code ' . $sPropertyCode);
     }
 }
Example #12
0
 function SendRemindEventAgent($iblockId, $taskId, $pathTemplate)
 {
     if (!CModule::IncludeModule("socialnetwork") && !CModule::IncludeModule("iblock")) {
         return;
     }
     $iblockId = IntVal($iblockId);
     $taskId = IntVal($taskId);
     if (!isset($GLOBALS["USER"]) || !is_object($GLOBALS["USER"])) {
         $bTmpUser = True;
         $GLOBALS["USER"] = new CUser();
     }
     $arTasksCustomProps = array();
     $dbTasksCustomProps = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("ACTIVE" => "Y", "IBLOCK_ID" => $iblockId, "CHECK_PERMISSIONS" => "N"));
     while ($arTasksCustomProp = $dbTasksCustomProps->Fetch()) {
         $ind = StrLen($arTasksCustomProp["CODE"]) > 0 ? $arTasksCustomProp["CODE"] : $arTasksCustomProp["ID"];
         $arTasksCustomProps[StrToUpper($ind)] = $arTasksCustomProp;
     }
     $dbTasksList = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "ID" => $taskId, "CHECK_PERMISSIONS" => "N"), false, false, array("ID", "NAME", "IBLOCK_ID", "CREATED_BY", "PROPERTY_" . $arTasksCustomProps["TASKASSIGNEDTO"]["ID"]));
     while ($arTask = $dbTasksList->GetNext()) {
         $ar = array();
         $dbElementSections = CIBlockElement::GetElementGroups($arTask["ID"]);
         while ($arElementSection = $dbElementSections->Fetch()) {
             if ($arElementSection["IBLOCK_ID"] == $iblockId) {
                 $ar[] = $arElementSection["ID"];
             }
         }
         if (Count($ar) <= 0) {
             continue;
         }
         $taskType = "";
         $taskOwnerId = 0;
         $dbSectionsChain = CIBlockSection::GetNavChain($iblockId, $ar[0]);
         if ($arSect = $dbSectionsChain->Fetch()) {
             $taskType = $arSect["XML_ID"] == "users_tasks" ? "user" : "group";
             $taskOwnerId = IntVal($taskType == "user" ? $arTask["PROPERTY_" . $arTasksCustomProps["TASKASSIGNEDTO"]["ID"] . "_VALUE"] : $arSect["XML_ID"]);
         }
         if (!In_Array($taskType, array("user", "group")) || $taskOwnerId <= 0) {
             continue;
         }
         $path2view = ($GLOBALS["APPLICATION"]->IsHTTPS() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . CComponentEngine::MakePathFromTemplate($pathTemplate, array("owner_id" => $taskOwnerId, "task_id" => $arTask["ID"], "action" => "view"));
         $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $arTask["CREATED_BY"], "TO_USER_ID" => $arTask["PROPERTY_" . $arTasksCustomProps["TASKASSIGNEDTO"]["ID"] . "_VALUE"], "MESSAGE" => str_replace(array("#URL_VIEW#", "#NAME#"), array($path2view, $arTask["NAME"]), GetMessage("INTE_REMIND_TASK_MESSAGE")));
         CSocNetMessages::Add($arMessageFields);
         //CIBlockElement::SetPropertyValueCode($arTask["ID"], $arTasksCustomProps["TASKREMIND"]["ID"], false);
     }
     if ($bTmpUser) {
         unset($GLOBALS["USER"]);
     }
     //return "CIntranetTasks::SendRemindEventAgent($iblockId, $taskId, \"$pathTemplate\");";
 }
Example #13
0
 protected function getOffers()
 {
     $arPropertyMap = array();
     $arSelectedPropTypes = array('S', 'N', 'L', 'E', 'G');
     $this->arSelectOfferProps = array();
     $arOffers = \CCatalogSKU::GetInfoByProductIBlock($this->iBlockId);
     if (empty($arOffers['IBLOCK_ID'])) {
         return array();
     }
     $this->intOfferIBlockID = $arOffers['IBLOCK_ID'];
     $rsOfferIBlocks = \CIBlock::GetByID($this->intOfferIBlockID);
     if (!($this->arOfferIBlock = $rsOfferIBlocks->Fetch())) {
         throw new SystemException("Bad offers iBlock ID  (" . __CLASS__ . "::" . __METHOD__ . ")");
     }
     $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
     while ($arProp = $rsProps->Fetch()) {
         $arProp['ID'] = (int) $arProp['ID'];
         if ($arOffers['SKU_PROPERTY_ID'] != $arProp['ID']) {
             $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE'];
             $arProp['CODE'] = (string) $arProp['CODE'];
             $this->arIblock['OFFERS_PROPERTY'][$arProp['ID']] = $arProp;
             $this->arProperties[$arProp['ID']] = $arProp;
             if (in_array($arProp['PROPERTY_TYPE'], $arSelectedPropTypes)) {
                 $this->arSelectOfferProps[] = $arProp['ID'];
             }
             if ($arProp['CODE'] !== '') {
                 foreach ($this->arIblock['PROPERTY'] as &$arMainProp) {
                     if ($arMainProp['CODE'] == $arProp['CODE']) {
                         $arPropertyMap[$arProp['ID']] = $arMainProp['CODE'];
                         break;
                     }
                 }
                 if (isset($arMainProp)) {
                     unset($arMainProp);
                 }
             }
         }
     }
     $this->arOfferIBlock['LID'] = $this->arIblock['LID'];
     $this->arOfferIBlock['PROPERTY'] = array();
     $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
     while ($arProp = $rsProps->Fetch()) {
         $arProp['ID'] = (int) $arProp['ID'];
         $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE'];
         $arProp['CODE'] = (string) $arProp['CODE'];
         $this->arOfferIBlock['PROPERTY'][$arProp['ID']] = $arProp;
     }
     return $arOffers;
 }
	public static function checkLinkField($iblock_id) {
		$rResult = CIBlockProperty::GetList(
			array('SORT' => 'ASC'),
			array(
				'IBLOCK_ID' => $iblock_id,
				'CODE' => 'LINK',
				'ACTIVE' => 'Y',
			)
		);
		$arResult = array();
		while (false != ($property = $rResult->GetNext())) {
			$arResult[] = $property;
		}
		return !empty($arResult);
	}
Example #15
0
function getPropName($code,$iblock_id){
	$properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_id, "CODE"=>$code));
	while ($prop_fields = $properties->GetNext())
	{
		$res=$prop_fields["NAME"];
	}
	/*
	foreach( $arResult["NAV_RESULT"]->arIBlockAllProps as $i=>$arPropFields){
		if( $arPropFields["CODE"] == $code ){
			return $arPropFields["NAME"];
		}
	}*/
	if ($res)
		return $res;
	return false;
}
Example #16
0
 private function GetFilterData($IBLOCK_ID, $arFields = array())
 {
     $filter_name = $this->sk_filter_name;
     global ${$filter_name};
     $arPROPERTIES = array();
     foreach ($arFields as $i => $PROP_ID) {
         $arSort = array();
         $arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $IBLOCK_ID);
         if (intval($PROP_ID) > 0) {
             $arFilter["ID"] = $PROP_ID;
         } else {
             $arFilter["CODE"] = $PROP_ID;
         }
         $properties = CIBlockProperty::GetList($arSort, $arFilter);
         while ($prop_fields = $properties->GetNext()) {
             switch ($prop_fields["PROPERTY_TYPE"]) {
                 case "L":
                     $PROP_ENUM_VALUES = array();
                     $arPropSort = array("value" => "asc");
                     $arPropFilter = array("PROPERTY_ID" => $prop_fields["ID"], "IBLOCK_ID" => $IBLOCK_ID);
                     $prop_enums = CIBlockPropertyEnum::GetList($arPropSort, $arPropFilter);
                     while ($enum_fields = $prop_enums->GetNext()) {
                         $PROP_ENUM_VALUES[] = $enum_fields;
                     }
                     $prop_fields["VALUES"] = $PROP_ENUM_VALUES;
                     break;
                 case "E":
                     $PROP_ENUM_VALUES = array();
                     $arPropSort = array("NAME" => "asc");
                     $arPropFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $prop_fields["LINK_IBLOCK_ID"]);
                     $arSelFields = array("IBLOCK_ID", "ID", "NAME", "PROPERTY_*");
                     $db_vals = CIBlockElement::GetList($arPropSort, $arPropFilter, false, false, $arSelFields);
                     while ($obElement = $db_vals->GetNextElement()) {
                         $tmp = array();
                         $tmp = $obElement->GetFields();
                         $tmp["PROPERTIES"] = $obElement->GetProperties();
                         $PROP_ENUM_VALUES[$tmp["ID"]] = $tmp;
                     }
                     $prop_fields["VALUES"] = $PROP_ENUM_VALUES;
                     break;
             }
             $arPROPERTIES[$prop_fields["ID"]] = $prop_fields;
         }
     }
     // //  print_r( $arPROPERTIES );
     return $arPROPERTIES;
 }
Example #17
0
	/**
	 * [getPropertyIblock description]
	 * @return array all products on iblock
	 */
	protected function getPropertyIblock(){
		if (!CModule::IncludeModule("iblock")):
			return false;
		endif;
		$properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$this->getIblockId()));
		while ($prop_fields = $properties->GetNext())
		{
			if ($prop_fields["PROPERTY_TYPE"] == "L"):
				$property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$this->getIblockId(), "CODE"=>$prop_fields["CODE"]));
				while($enum_fields = $property_enums->GetNext())
				{
				  	$prop_fields["ENUM_LIST"][] = $enum_fields;
				}
			endif;
			$arProperties[] = $prop_fields;
		}
		return $arProperties;
	}
Example #18
0
 function findCode($id, $val)
 {
     if (CModule::IncludeModule("iblock")) {
         $properties = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("ACTIVE" => "Y", 'ID' => $id));
         while ($prop_fields = $properties->GetNext()) {
             $temp['CODE'] = $prop_fields['CODE'];
             if ($prop_fields['PROPERTY_TYPE'] == 'L') {
                 $property_enums = CIBlockPropertyEnum::GetList(array("DEF" => "DESC", "SORT" => "ASC"), array("CODE" => $prop_fields['CODE'], 'ID' => $val));
                 while ($enum_fields = $property_enums->GetNext()) {
                     $temp['VALUE'] = $enum_fields["VALUE"];
                 }
             }
         }
         return $temp;
     } else {
         return false;
     }
 }
Example #19
0
	/**
	 * [findProperties description]
	 * @param  object $obprop
	 * @return bool
	 */
	protected function findProperties($obprop){
		if (!CModule::IncludeModule("iblock")):
			return false; 
		endif;
		$name = null; $id1c = null;
		$name = $obprop->Наименование;
		$id1c = $obprop->Ид;
		$properties = CIBlockProperty::GetList(Array(), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$this->getIblockId()));
		while ($prop_fields = $properties->GetNext())
		{
			$arProperties[] = $prop_fields;
		}
		foreach ($arProperties as $key => $prop) :
			if ($prop["NAME"] == $name && $prop["CODE"] == $id1c):
				return $prop;
			endif;
		endforeach;
		return false;
	}
Example #20
0
	function getProductByProps($iblockID, $arSkuProps)
	{
		$result = false;
		$arSelect = array();
		$arOfFilter = array(
			"IBLOCK_ID" => $iblockID,
		);

		$rsProps = CIBlockProperty::GetList(
			array('SORT' => 'ASC', 'ID' => 'ASC'),
			array('IBLOCK_ID' => $iblockID, 'ACTIVE' => 'Y')
		);
		while ($arProp = $rsProps->Fetch())
		{
			if (!$arProp['CODE'])
				$arProp['CODE'] = $arProp['ID'];
			if (isset($arSkuProps[$arProp["CODE"]]))
			{
				if ($arProp["CODE"] == "CML2_LINK" || $arProp['PROPERTY_TYPE'] == 'E' || ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory'))
				{
					$arOfFilter["PROPERTY_".$arProp["CODE"]] = $arSkuProps[$arProp["CODE"]];
				}
				elseif ($arProp["PROPERTY_TYPE"] == "L")
				{
					$arOfFilter["PROPERTY_".$arProp["CODE"]."_VALUE"] = $arSkuProps[$arProp["CODE"]];
				}

				$arSelect[] = "PROPERTY_".$arProp["CODE"];
			}
		}

		$rsOffers = CIBlockElement::GetList(
			array(),
			$arOfFilter,
			false,
			false,
			array_merge(array("ID"), $arSelect)
		);
		if ($arOffer = $rsOffers->GetNext())
			$result = $arOffer["ID"];

		return $result;
	}
Example #21
0
 protected static function addIBlock2PropCache($IBLOCK_ID)
 {
     if (!is_numeric($IBLOCK_ID)) {
         return;
     }
     $IBLOCK_ID = intval($IBLOCK_ID);
     if (!array_key_exists($IBLOCK_ID, self::$arIBlockPropCache)) {
         self::$arIBlockPropCache[$IBLOCK_ID] = array();
         self::$arIBlockPropCodeIndex[$IBLOCK_ID] = array();
     }
     if (count(self::$arIBlockPropCache[$IBLOCK_ID]) < 1) {
         $properties = \CIBlockProperty::GetList(array('sort' => 'asc', 'name' => 'asc'), array('ACTIVE' => 'Y', 'IBLOCK_ID' => $IBLOCK_ID));
         while ($prop_fields = $properties->GetNext()) {
             self::$arIBlockPropCache[$IBLOCK_ID][$prop_fields['ID']] = $prop_fields;
             $prop_fields['CODE'] = trim($prop_fields['CODE']);
             if (!empty($prop_fields['CODE'])) {
                 self::$arIBlockPropCodeIndex[$IBLOCK_ID][$prop_fields['CODE']] =& self::$arIBlockPropCache[$IBLOCK_ID][$prop_fields['ID']];
             }
         }
     }
 }
Example #22
0
 public static function GetCatalogPrices($IBLOCK_ID, $arPriceCode)
 {
     global $USER;
     $arCatalogPrices = array();
     if (self::$catalogIncluded === null) {
         self::$catalogIncluded = Loader::includeModule('catalog');
     }
     if (self::$catalogIncluded) {
         $arCatalogGroupCodesFilter = array();
         foreach ($arPriceCode as $value) {
             $t_value = trim($value);
             if ('' != $t_value) {
                 $arCatalogGroupCodesFilter[$value] = true;
             }
         }
         $arCatalogGroupsFilter = array();
         $arCatalogGroups = CCatalogGroup::GetListArray();
         foreach ($arCatalogGroups as $key => $value) {
             if (isset($arCatalogGroupCodesFilter[$value['NAME']])) {
                 $arCatalogGroupsFilter[] = $key;
                 $arCatalogPrices[$value["NAME"]] = array("ID" => (int) $value["ID"], "TITLE" => htmlspecialcharsbx($value["NAME_LANG"]), "SELECT" => "CATALOG_GROUP_" . $value["ID"]);
             }
         }
         $arPriceGroups = CCatalogGroup::GetGroupsPerms($USER->GetUserGroupArray(), $arCatalogGroupsFilter);
         foreach ($arCatalogPrices as $name => $value) {
             $arCatalogPrices[$name]["CAN_VIEW"] = in_array($value["ID"], $arPriceGroups["view"]);
             $arCatalogPrices[$name]["CAN_BUY"] = in_array($value["ID"], $arPriceGroups["buy"]);
         }
     } else {
         $arPriceGroups = array("view" => array());
         $rsProperties = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CHECK_PERMISSIONS" => "N", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N"));
         while ($arProperty = $rsProperties->Fetch()) {
             if (in_array($arProperty["CODE"], $arPriceCode)) {
                 $arPriceGroups["view"][] = htmlspecialcharsbx("PROPERTY_" . $arProperty["CODE"]);
                 $arCatalogPrices[$arProperty["CODE"]] = array("ID" => (int) $arProperty["ID"], "TITLE" => htmlspecialcharsbx($arProperty["NAME"]), "SELECT" => "PROPERTY_" . $arProperty["ID"], "CAN_VIEW" => true, "CAN_BUY" => false);
             }
         }
     }
     return $arCatalogPrices;
 }
 public static function GetProps($catalogID, $arPropUserTypeList = array(), $arOperations = array())
 {
     if (!is_array($arOperations)) {
         $arOperations = array(strval($arOperations));
     }
     $arProps = array();
     $catalogID = intval($catalogID);
     // validate operations list
     $validOperations = array('view', 'edit', 'filter', 'import', 'rest');
     $validatedOperations = array();
     foreach ($arOperations as $operationName) {
         if (in_array(strval($operationName), $validOperations, true)) {
             $validatedOperations[] = $operationName;
         }
     }
     $arOperations = $validatedOperations;
     unset($validatedOperations, $operationName);
     if ($catalogID > 0) {
         $propsFilter = array('IBLOCK_ID' => $catalogID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N', '!PROPERTY_TYPE' => 'G');
         $bImport = false;
         foreach ($arOperations as $operationName) {
             if ($operationName === 'import') {
                 $bImport = true;
             } else {
                 $bImport = false;
                 break;
             }
         }
         $dbRes = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), $propsFilter);
         while ($arProp = $dbRes->Fetch()) {
             if (isset($arProp['USER_TYPE']) && !empty($arProp['USER_TYPE']) && !array_key_exists($arProp['USER_TYPE'], $arPropUserTypeList) || $bImport && ($arProp['PROPERTY_TYPE'] === 'E' && (!isset($arProp['USER_TYPE']) || empty($arProp['USER_TYPE'])) || $arProp['PROPERTY_TYPE'] === 'E' && isset($arProp['USER_TYPE']) && $arProp['USER_TYPE'] === 'EList')) {
                 continue;
             }
             $propID = 'PROPERTY_' . $arProp['ID'];
             $arProps[$propID] = $arProp;
         }
     }
     return $arProps;
 }
 function GetCatalogPrices($IBLOCK_ID, $arPriceCode)
 {
     global $USER;
     $arCatalogPrices = array();
     if (CModule::IncludeModule("catalog")) {
         $bFromCatalog = true;
         $arCatalogGroupCodesFilter = array();
         foreach ($arPriceCode as $key => $value) {
             $t_value = trim($value);
             if (strlen($t_value) > 0) {
                 $arCatalogGroupCodesFilter[$value] = true;
             }
         }
         $arCatalogGroupsFilter = array();
         $arCatalogGroups = CCatalogGroup::GetListArray();
         foreach ($arCatalogGroups as $key => $value) {
             if (array_key_exists($value["NAME"], $arCatalogGroupCodesFilter)) {
                 $arCatalogGroupsFilter[] = $key;
                 $arCatalogPrices[$value["NAME"]] = array("ID" => htmlspecialcharsbx($value["ID"]), "TITLE" => htmlspecialcharsbx($value["NAME_LANG"]), "SELECT" => "CATALOG_GROUP_" . $value["ID"]);
             }
         }
         $arPriceGroups = CCatalogGroup::GetGroupsPerms($USER->GetUserGroupArray(), $arCatalogGroupsFilter);
         foreach ($arCatalogPrices as $name => $value) {
             $arCatalogPrices[$name]["CAN_VIEW"] = in_array($value["ID"], $arPriceGroups["view"]);
             $arCatalogPrices[$name]["CAN_BUY"] = in_array($value["ID"], $arPriceGroups["buy"]);
         }
     } else {
         $bFromCatalog = false;
         $arPriceGroups = array("view" => array());
         $rsProperties = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CHECK_PERMISSIONS" => "N", "PROPERTY_TYPE" => "N"));
         while ($arProperty = $rsProperties->Fetch()) {
             if ($arProperty["MULTIPLE"] == "N" && in_array($arProperty["CODE"], $arPriceCode)) {
                 $arPriceGroups["view"][] = htmlspecialcharsbx("PROPERTY_" . $arProperty["CODE"]);
                 $arCatalogPrices[$arProperty["CODE"]] = array("ID" => htmlspecialcharsbx($arProperty["ID"]), "TITLE" => htmlspecialcharsbx($arProperty["NAME"]), "SELECT" => "PROPERTY_" . $arProperty["ID"], "CAN_VIEW" => true, "CAN_BUY" => false);
             }
         }
     }
     return $arCatalogPrices;
 }
 protected function initializeVars($iblockId)
 {
     $this->iblock = \CIBlock::GetList(array('SORT' => 'ASC'), array('ID' => $iblockId))->Fetch();
     if (!$this->iblock) {
         $this->throwException(__METHOD__, 'Iblock %d not found', $iblockId);
     }
     $dbResult = \CIBlockProperty::GetList(array("sort" => "asc"), array("IBLOCK_ID" => $iblockId, "CHECK_PERMISSIONS" => "N"));
     while ($aItem = $dbResult->Fetch()) {
         if (!empty($aItem['CODE'])) {
             $this->titles['PROPERTY_' . $aItem['ID']] = $aItem['NAME'];
             $this->props[$aItem['CODE']] = $aItem;
         }
     }
     $iblockMess = \IncludeModuleLangFile('/bitrix/modules/iblock/iblock.php', 'ru', true);
     $iblockMess['IBLOCK_FIELD_ACTIVE_FROM'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_FROM'];
     $iblockMess['IBLOCK_FIELD_ACTIVE_TO'] = $iblockMess['IBLOCK_FIELD_ACTIVE_PERIOD_TO'];
     foreach ($iblockMess as $code => $value) {
         if (false !== strpos($code, 'IBLOCK_FIELD_')) {
             $fcode = str_replace('IBLOCK_FIELD_', '', $code);
             $this->titles[$fcode] = $value;
         }
     }
 }
Example #26
0
function EditAbsence($arFields)
{
    global $iblockID;
    if (CModule::IncludeModule('iblock')) {
        $PROP = array();
        $db_absence = CIBlockProperty::GetList(array(), array("CODE" => "ABSENCE_TYPE", "IBLOCK_ID" => $iblockID));
        if ($ar_absence = $db_absence->Fetch()) {
            $PROP[$ar_absence['ID']] = array($arFields["ABSENCE_TYPE"]);
        }
        $db_user = CIBlockProperty::GetList(array(), array("CODE" => "USER", "IBLOCK_ID" => $iblockID));
        if ($ar_user = $db_user->Fetch()) {
            $PROP[$ar_user['ID']] = array($arFields["USER_ID"]);
        }
        $arNewFields = array("NAME" => $arFields["NAME"], "PROPERTY_VALUES" => $PROP, "ACTIVE_FROM" => $arFields["ACTIVE_FROM"], "ACTIVE_TO" => $arFields["ACTIVE_TO"], "IBLOCK_ID" => $iblockID);
        $element = new CIBlockElement();
        $ID = $element->Update(intval($arFields["absence_element_id"]), $arNewFields);
    }
    if (!$ID) {
        $arErrors = preg_split("/<br>/", $element->LAST_ERROR);
        return $arErrors;
    } else {
        return $ID;
    }
}
		'DEFAULT' => '',
	);
	$arTemplateParameters['SECTION_PICTURE_HEIGHT'] = array(
		'PARENT' => 'LIST_SETTINGS',
		'NAME' => getMessage('RS_SLINE.SECTION_PICTURE_HEIGHT'),
		'TYPE' => 'STRING',
		'DEFAULT' => '',
	);
}

$arOffers = CIBlockPriceTools::GetOffersIBlock($IBLOCK_ID);
$OFFERS_IBLOCK_ID = is_array($arOffers) ? $arOffers['OFFERS_IBLOCK_ID']: 0;

if($OFFERS_IBLOCK_ID){
	$arProperty_Offers = array();
	$rsProp = CIBlockProperty::GetList(array('sort'=>'asc', 'name'=>'asc'), array('IBLOCK_ID'=>$OFFERS_IBLOCK_ID, 'ACTIVE'=>'Y'));
	while($arr=$rsProp->Fetch()){
		$arr['ID'] = intval($arr['ID']);
		if ($arOffers['OFFERS_PROPERTY_ID'] == $arr['ID'])
			continue;
		$strPropName = '['.$arr['ID'].']'.('' != $arr['CODE'] ? '['.$arr['CODE'].']' : '').' '.$arr['NAME'];
		if ('' == $arr['CODE'])
			$arr['CODE'] = $arr['ID'];
		$arProperty_Offers[$arr['CODE']] = $strPropName;
	}

	$arTemplateParameters['PROPCODE_SKU_MORE_PHOTO'] = array(
		'PARENT' => 'OFFERS_SETTINGS',
		'NAME' => getMessage('RS_SLINE.OFFER_ADDITIONAL_PICT_PROP'),
		'TYPE' => 'LIST',
		'VALUES' => array_merge($defaultListValues, $arProperty_Offers),
Example #28
0
    while ($arProperty = $dbProperty->GetNext()) {
        $arFields["find_el_property_" . $arProperty["ID"]] = "";
    }
    $dbProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_CATALOG_ID, "CODE" => "SPECIALOFFER"));
    while ($arProperty = $dbProperty->GetNext()) {
        $arFields["find_el_property_" . $arProperty["ID"]] = "";
    }
    require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/interface/admin_lib.php";
    CAdminFilter::AddPresetToBase(array("NAME" => GetMessage("WIZ_PRECET"), "FILTER_ID" => "tbl_product_admin_" . md5($iblockType . "." . $IBLOCK_CATALOG_ID) . "_filter", "LANGUAGE_ID" => $lang, "FIELDS" => $arFields));
    CUserOptions::SetOption("filter", "tbl_product_admin_" . md5($iblockType . "." . $IBLOCK_CATALOG_ID) . "_filter", array("rows" => "find_el_name, find_el_active, find_el_timestamp_from, find_el_timestamp_to"), true);
    CAdminFilter::SetDefaultRowsOption("tbl_product_admin_" . md5($iblockType . "." . $IBLOCK_CATALOG_ID) . "_filter", array("miss-0", "IBEL_A_F_PARENT"));
    //delete 1c props
    $arPropsToDelete = array("CML2_TAXES", "CML2_BASE_UNIT", "CML2_TRAITS", "CML2_ATTRIBUTES", "CML2_ARTICLE", "CML2_BAR_CODE", "CML2_FILES", "CML2_MANUFACTURER", "CML2_PICTURES");
    foreach ($arPropsToDelete as $code) {
        $dbProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_CATALOG_ID, "XML_ID" => $code));
        if ($arProperty = $dbProperty->GetNext()) {
            CIBlockProperty::Delete($arProperty["ID"]);
        }
        if ($IBLOCK_OFFERS_ID) {
            $dbProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_OFFERS_ID, "XML_ID" => $code));
            if ($arProperty = $dbProperty->GetNext()) {
                CIBlockProperty::Delete($arProperty["ID"]);
            }
        }
    }
    CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/catalog/index.php", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
    CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/sect_inc.php", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
    CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/_index.php", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID, "OFFERS_IBLOCK_ID" => $IBLOCK_OFFERS_ID));
    CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/catalog/sect_sidebar.php.php", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID));
    CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/include/viewed_product.php", array("CATALOG_IBLOCK_ID" => $IBLOCK_CATALOG_ID, "OFFERS_IBLOCK_ID" => $IBLOCK_OFFERS_ID));
}
Example #29
0
 public function getSkuPropsData($arBasketItems, $arParents, $arSkuProps = array())
 {
     $arRes = array();
     $arSkuIblockID = array();
     if (is_array($arParents)) {
         foreach ($arBasketItems as &$arItem) {
             if (array_key_exists($arItem["PRODUCT_ID"], $arParents)) {
                 $arSKU = CCatalogSKU::GetInfoByProductIBlock($arParents[$arItem["PRODUCT_ID"]]["IBLOCK_ID"]);
                 if (!array_key_exists($arSKU["IBLOCK_ID"], $arSkuIblockID)) {
                     $arSkuIblockID[$arSKU["IBLOCK_ID"]] = $arSKU;
                 }
                 $arItem["IBLOCK_ID"] = $arSKU["IBLOCK_ID"];
                 $arItem["SKU_PROPERTY_ID"] = $arSKU["SKU_PROPERTY_ID"];
             }
         }
         unset($arItem);
         foreach ($arSkuIblockID as $skuIblockID => $arSKU) {
             // possible props values
             $rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $skuIblockID, 'ACTIVE' => 'Y'));
             while ($arProp = $rsProps->Fetch()) {
                 if ($arProp['PROPERTY_TYPE'] == 'L' || $arProp['PROPERTY_TYPE'] == 'E' || $arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                     if ($arProp['XML_ID'] == 'CML2_LINK') {
                         continue;
                     }
                     if (!in_array($arProp['CODE'], $arSkuProps)) {
                         continue;
                     }
                     $arValues = array();
                     if ($arProp['PROPERTY_TYPE'] == 'L') {
                         $arValues = array();
                         $rsPropEnums = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                         while ($arEnum = $rsPropEnums->Fetch()) {
                             $arValues['n' . $arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['VALUE'], 'PICT' => false);
                         }
                     } elseif ($arProp['PROPERTY_TYPE'] == 'E') {
                         $rsPropEnums = CIBlockElement::GetList(array('SORT' => 'ASC'), array('IBLOCK_ID' => $arProp['LINK_IBLOCK_ID'], 'ACTIVE' => 'Y'), false, false, array('ID', 'NAME', 'PREVIEW_PICTURE'));
                         while ($arEnum = $rsPropEnums->Fetch()) {
                             $arEnum['PREVIEW_PICTURE'] = CFile::GetFileArray($arEnum['PREVIEW_PICTURE']);
                             if (!is_array($arEnum['PREVIEW_PICTURE'])) {
                                 $arEnum['PREVIEW_PICTURE'] = false;
                             }
                             if ($arEnum['PREVIEW_PICTURE'] !== false) {
                                 $productImg = CFile::ResizeImageGet($arEnum['PREVIEW_PICTURE'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                 $arEnum['PREVIEW_PICTURE']['SRC'] = $productImg['src'];
                             }
                             $arValues['n' . $arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => $arEnum['SORT'], 'PICT' => $arEnum['PREVIEW_PICTURE']);
                         }
                     } elseif ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                         if (self::$highLoadInclude === null) {
                             self::$highLoadInclude = Loader::includeModule('highloadblock');
                         }
                         if (self::$highLoadInclude) {
                             $hlblock = HL\HighloadBlockTable::getList(array("filter" => array("=TABLE_NAME" => $arProp["USER_TYPE_SETTINGS"]["TABLE_NAME"])))->fetch();
                             if ($hlblock) {
                                 $entity = HL\HighloadBlockTable::compileEntity($hlblock);
                                 $entity_data_class = $entity->getDataClass();
                                 $rsData = $entity_data_class::getList();
                                 while ($arData = $rsData->fetch()) {
                                     $arValues['n' . $arData['ID']] = array('ID' => $arData['ID'], 'NAME' => $arData['UF_NAME'], 'SORT' => $arData['UF_SORT'], 'FILE' => $arData['UF_FILE'], 'PICT' => false, 'XML_ID' => $arData['UF_XML_ID']);
                                 }
                             }
                         }
                     }
                     if (!empty($arValues) && is_array($arValues)) {
                         $arRes[$skuIblockID][$arProp['ID']] = array('ID' => $arProp['ID'], 'CODE' => $arProp['CODE'], 'NAME' => $arProp['NAME'], 'TYPE' => $arProp['PROPERTY_TYPE'], 'USER_TYPE' => $arProp['USER_TYPE'], 'VALUES' => $arValues);
                     }
                 }
             }
         }
         foreach ($arBasketItems as &$arItem) {
             if (isset($arItem["IBLOCK_ID"]) && (int) $arItem["IBLOCK_ID"] > 0 && isset($arRes[$arItem["IBLOCK_ID"]])) {
                 $arItem["SKU_DATA"] = $arRes[$arItem["IBLOCK_ID"]];
                 $arUsedValues = array();
                 $arTmpRes = array();
                 $arOfFilter = array("IBLOCK_ID" => $arItem["IBLOCK_ID"], "PROPERTY_" . $arSkuIblockID[$arItem["IBLOCK_ID"]]["SKU_PROPERTY_ID"] => $arParents[$arItem["PRODUCT_ID"]]["PRODUCT_ID"]);
                 $rsOffers = CIBlockElement::GetList(array(), $arOfFilter, false, false, array("ID", "IBLOCK_ID"));
                 while ($obOffer = $rsOffers->GetNextElement()) {
                     $arProps = $obOffer->GetProperties();
                     foreach ($arProps as $propName => $propValue) {
                         if (in_array($propName, $arSkuProps)) {
                             if (array_key_exists('VALUE', $propValue)) {
                                 if (strlen($propValue['VALUE']) > 0 && (!is_array($arUsedValues[$arItem["PRODUCT_ID"]][$propName]) || !in_array($propValue['VALUE'], $arUsedValues[$arItem["PRODUCT_ID"]][$propName]))) {
                                     $arUsedValues[$arItem["PRODUCT_ID"]][$propName][] = $propValue['VALUE'];
                                 }
                             }
                         }
                     }
                 }
                 if (!empty($arUsedValues)) {
                     // add only used values to the item SKU_DATA
                     foreach ($arRes[$arItem["IBLOCK_ID"]] as $propId => $arProp) {
                         if (!array_key_exists($arProp["CODE"], $arUsedValues[$arItem["PRODUCT_ID"]])) {
                             continue;
                         }
                         $arTmpRes['n' . $propId] = array();
                         foreach ($arProp["VALUES"] as $valId => $arValue) {
                             // properties of various type have different values in the used values data
                             if ($arProp["TYPE"] == "L" && in_array($arValue["NAME"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "E" && in_array($arValue["ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "S" && in_array($arValue["XML_ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]])) {
                                 if ($arProp["TYPE"] == "S") {
                                     if (!empty($arValue["FILE"])) {
                                         $arTmpFile = CFile::GetFileArray($arValue["FILE"]);
                                         if (!empty($arTmpFile)) {
                                             $tmpImg = CFile::ResizeImageGet($arTmpFile, array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                             $arValue['PICT']['SRC'] = $tmpImg['src'];
                                         }
                                     }
                                 }
                                 $arTmpRes['n' . $propId]["CODE"] = $arProp["CODE"];
                                 $arTmpRes['n' . $propId]["NAME"] = $arProp["NAME"];
                                 $arTmpRes['n' . $propId]["VALUES"][$valId] = $arValue;
                             }
                         }
                     }
                 }
                 $arItem["SKU_DATA"] = $arTmpRes;
             }
         }
         unset($arItem);
     }
     return $arBasketItems;
 }
Example #30
0
    while ($arr = $rsProp->Fetch()) {
        $arProperty_LINK[$arr["CODE"]] = "[" . $arr["CODE"] . "] " . $arr["NAME"];
    }
}
$arUserFields_S = array("-" => " ");
$arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_" . $arCurrentValues["IBLOCK_ID"] . "_SECTION");
foreach ($arUserFields as $FIELD_NAME => $arUserField) {
    if ($arUserField["USER_TYPE"]["BASE_TYPE"] == "string") {
        $arUserFields_S[$FIELD_NAME] = $arUserField["LIST_COLUMN_LABEL"] ? $arUserField["LIST_COLUMN_LABEL"] : $FIELD_NAME;
    }
}
$arOffers = CIBlockPriceTools::GetOffersIBlock($arCurrentValues["IBLOCK_ID"]);
$OFFERS_IBLOCK_ID = is_array($arOffers) ? $arOffers["OFFERS_IBLOCK_ID"] : 0;
$arProperty_Offers = array();
if ($OFFERS_IBLOCK_ID) {
    $rsProp = CIBlockProperty::GetList(array("sort" => "asc", "name" => "asc"), array("IBLOCK_ID" => $OFFERS_IBLOCK_ID, "ACTIVE" => "Y"));
    while ($arr = $rsProp->Fetch()) {
        if ($arr["PROPERTY_TYPE"] != "F") {
            $arProperty_Offers[$arr["CODE"]] = "[" . $arr["CODE"] . "] " . $arr["NAME"];
        }
    }
}
$arPrice = array();
if (CModule::IncludeModule("catalog")) {
    $rsPrice = CCatalogGroup::GetList($v1 = "sort", $v2 = "asc");
    while ($arr = $rsPrice->Fetch()) {
        $arPrice[$arr["NAME"]] = "[" . $arr["NAME"] . "] " . $arr["NAME_LANG"];
    }
} else {
    $arPrice = $arProperty_N;
}