Example #1
0
function getPropDirectory(&$property)
{
    if (empty($property)) {
        return false;
    }
    if (!is_array($property)) {
        return false;
    }
    if (!isset($property['USER_TYPE_SETTINGS']['TABLE_NAME']) || empty($property['USER_TYPE_SETTINGS']['TABLE_NAME'])) {
        return false;
    }
    $highLoadInclude = \Bitrix\Main\Loader::includeModule('highloadblock');
    $highBlock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array("filter" => array('TABLE_NAME' => $property['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
    if (!isset($highBlock['ID'])) {
        return false;
    }
    $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($highBlock);
    $entityDataClass = $entity->getDataClass();
    $entityList = $entityDataClass::getList();
    while ($arEntityItem = $entityList->Fetch()) {
        $val =& $property["VALUES"][$arEntityItem["UF_XML_ID"]];
        //foreach($property["VALUES"] as &$val){
        if (!empty($arEntityItem["UF_FILE"])) {
            $property["PICTURE_INCLUDED"] = true;
            $arEntityItem["~UF_FILE"] = $arEntityItem["UF_FILE"];
            $arEntityItem["PICTURE"] = CFile::GetPath($arEntityItem["~UF_FILE"]);
        }
        if (!empty($arEntityItem)) {
            $val = array_merge($val, $arEntityItem);
        }
        //}
        //echo'<pre>';print_r($arEntityItem);echo'</pre>';
    }
    return true;
}
Example #2
0
 function UnInstallDB($arParams = array())
 {
     global $DB, $DBType, $APPLICATION;
     $this->errors = false;
     if (!array_key_exists("save_tables", $arParams) || $arParams["save_tables"] != "Y") {
         // remove user data
         CModule::IncludeModule("highloadblock");
         $result = \Bitrix\Highloadblock\HighloadBlockTable::getList();
         while ($hldata = $result->fetch()) {
             \Bitrix\Highloadblock\HighloadBlockTable::delete($hldata['ID']);
         }
         // remove hl system data
         $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/highloadblock/install/db/" . strtolower($DB->type) . "/uninstall.sql");
     }
     UnRegisterModule("highloadblock");
     UnRegisterModuleDependences("main", "OnBeforeUserTypeAdd", "highloadblock", '\\Bitrix\\Highloadblock\\HighloadBlockTable', "OnBeforeUserTypeAdd");
     UnRegisterModuleDependences("main", "OnAfterUserTypeAdd", "highloadblock", '\\Bitrix\\Highloadblock\\HighloadBlockTable', "onAfterUserTypeAdd");
     UnRegisterModuleDependences("main", "OnBeforeUserTypeDelete", "highloadblock", '\\Bitrix\\Highloadblock\\HighloadBlockTable', "OnBeforeUserTypeDelete");
     UnRegisterModuleDependences('main', 'OnUserTypeBuildList', 'highloadblock', 'CUserTypeHlblock', 'GetUserTypeDescription');
     UnRegisterModuleDependences('iblock', 'OnIBlockPropertyBuildList', 'highloadblock', 'CIBlockPropertyDirectory', 'GetUserTypeDescription');
     if ($this->errors !== false) {
         $APPLICATION->ThrowException(implode("<br>", $this->errors));
         return false;
     }
     return true;
 }
Example #3
0
 public function down()
 {
     global $APPLICATION;
     \Bitrix\Main\Loader::includeModule("highloadblock");
     $arHlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => \Hawkart\Megatv\SubscribeTable::getTableName())))->fetch();
     if ($arHlblock) {
         $arProps = array("UF_DATETIME_TO");
         foreach ($arProps as $prop_name) {
             $oUserTypeEntity = new \CUserTypeEntity();
             $resProperty = \CUserTypeEntity::GetList(array(), array('ENTITY_ID' => 'HLBLOCK_' . $arHlblock["ID"], 'FIELD_NAME' => $prop_name));
             if ($aUserHasField = $resProperty->Fetch()) {
                 $oUserTypeEntity->Delete($aUserHasField['ID']);
                 $this->outSuccess("Свойство 'Дата окончания подписки' удалено!");
             }
         }
     }
 }
Example #4
0
 public function down()
 {
     global $APPLICATION;
     $arHlData = $this->arHlData;
     \Bitrix\Main\Loader::includeModule("highloadblock");
     $arHlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => \Hawkart\Megatv\PeopleTable::getTableName())))->fetch();
     if ($arHlblock) {
         foreach ($arHlData as $fieldName => $fieldValue) {
             $oUserTypeEntity = new \CUserTypeEntity();
             $resProperty = \CUserTypeEntity::GetList(array(), array('ENTITY_ID' => 'HLBLOCK_' . $arHlblock["ID"], 'FIELD_NAME' => $fieldName));
             if ($aUserHasField = $resProperty->Fetch()) {
                 $oUserTypeEntity->Delete($aUserHasField['ID']);
                 $this->outSuccess("Свойство удалено!");
             }
         }
     }
 }
Example #5
0
 /**
  * Ищет данные о сущности по ее названию
  * @param string $name
  * @return array
  */
 public static function getEntityByName($name)
 {
     if (empty(self::$_entities[$name]) || !array_key_exists($name, self::$_entities[$name])) {
         $cid = 'bxar\\helpers\\HlEntity_' . $name;
         $obCache = new \CPHPCache();
         if ($obCache->InitCache(7200, $cid, '/')) {
             self::$_entities[$name] = $obCache->GetVars();
         } elseif ($obCache->StartDataCache()) {
             $filter = ['select' => ['ID', 'NAME', 'TABLE_NAME'], 'filter' => ['NAME' => $name]];
             $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList($filter)->fetch();
             if (!empty($hlblock['ID'])) {
                 self::$_entities[$name] = $hlblock;
             } else {
                 self::$_entities[$name] = null;
             }
             $obCache->EndDataCache(self::$_entities[$name]);
         }
     }
     return self::$_entities[$name];
 }
Example #6
0
    public static function GetCityList() {

        $arResult = array();

        $rsData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter'=>array('NAME'=>CITY_LIST_HLB)));
        if ( !($arData = $rsData->fetch()) ){
            echo 'Инфоблок не найден';
        } else {
            $Entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arData);

            $Query = new \Bitrix\Main\Entity\Query($Entity);
            $Query->setSelect(array('*'));

            $result = $Query->exec();
            $result = new CDBResult($result);

            while ($row = $result->Fetch()){
                $arResult[$row['UF_CITY_CODE']] = $row['UF_CITY_NAME'];
            }

        }
        return $arResult;

    }
Example #7
0
 function getMetaData()
 {
     // echo $this->hlblock;
     $dbHblock = HL\HighloadBlockTable::getList(array('filter' => array('ID' => $this->hlblock)));
     if ($res = $dbHblock->Fetch()) {
         $obj = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => "HLBLOCK_" . $this->hlblock));
         while ($el = $obj->Fetch()) {
         }
     }
     return $result;
 }
Example #8
0
 protected static function getPropsParams($iblockId)
 {
     $arRes = array();
     $bUseHLIblock = \Bitrix\Main\Loader::includeModule('highloadblock');
     $rsProps = \CIBlockProperty::getList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $iblockId, '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;
             }
             $arValues = array();
             if ($arProp['PROPERTY_TYPE'] == 'L') {
                 $arValues = array();
                 $rsPropEnums = \CIBlockProperty::getPropertyEnum($arProp['ID']);
                 while ($arEnum = $rsPropEnums->fetch()) {
                     $arValues[$arEnum['VALUE']] = 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[$arEnum['NAME']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => $arEnum['SORT'], 'PICT' => $arEnum['PREVIEW_PICTURE']);
                 }
             } elseif ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                 if ($bUseHLIblock) {
                     $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[$arData['UF_XML_ID']] = array('ID' => $arData['ID'], 'NAME' => $arData['UF_NAME'], 'SORT' => $arData['UF_SORT'], 'FILE' => $arData['UF_FILE'], 'PICT' => '', 'XML_ID' => $arData['UF_XML_ID']);
                         }
                     }
                 }
             }
             if (!empty($arValues) && is_array($arValues)) {
                 $arRes[$arProp['ID']] = array('ID' => $arProp['ID'], 'CODE' => $arProp['CODE'], 'NAME' => $arProp['NAME'], 'TYPE' => $arProp['PROPERTY_TYPE'], 'ORDER' => array_keys($arValues), 'VALUES' => $arValues, 'SORT' => $arProp['SORT']);
             }
         }
         if ($arProp['PROPERTY_TYPE'] == "S" && is_array($arRes[$arProp['ID']]['VALUES'])) {
             foreach ($arRes[$arProp['ID']]['VALUES'] as $id => $value) {
                 $arTmpFile = \CFile::getFileArray($value["FILE"]);
                 $tmpImg = \CFile::resizeImageGet($arTmpFile, array('width' => 20, 'height' => 20), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                 $arRes[$arProp['ID']]['VALUES'][$id]['PICT'] = $tmpImg['src'];
             }
         }
     }
     return $arRes;
 }
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$APPLICATION->SetTitle(GetMessage('HLBLOCK_ADMIN_MENU_TITLE'));
$sTableID = "tbl_hlblock_entity";
$oSort = new CAdminSorting($sTableID, "NAME", "asc");
$lAdmin = new CAdminList($sTableID, $oSort);
$arHeaders = array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage('HLBLOCK_ADMIN_ENTITY_TITLE'), "sort" => "NAME", "default" => true));
$lAdmin->AddHeaders($arHeaders);
// menu
if ($_REQUEST["mode"] !== "list") {
    $aMenu = array(array("TEXT" => GetMessage('HLBLOCK_ADMIN_ADD_ENTITY_BUTTON'), "TITLE" => GetMessage('HLBLOCK_ADMIN_ADD_ENTITY_BUTTON'), "LINK" => "highloadblock_entity_edit.php?lang=" . LANGUAGE_ID, "ICON" => "btn_new"));
    $context = new CAdminContextMenu($aMenu);
}
use Bitrix\Highloadblock as HL;
// select data
$rsData = HL\HighloadBlockTable::getList(array("select" => $lAdmin->GetVisibleHeaderColumns(), "order" => array($by => strtoupper($order))));
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// build list
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("PAGES")));
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row = $lAdmin->AddRow($f_ID, $arRes);
    $can_edit = true;
    $arActions = array();
    $arActions[] = array("ICON" => "list", "TEXT" => GetMessage('HLBLOCK_ADMIN_ROWS_LIST'), "ACTION" => $lAdmin->ActionRedirect("highloadblock_rows_list.php?ENTITY_ID=" . $f_ID), "DEFAULT" => true);
    $arActions[] = array("ICON" => "list", "TEXT" => GetMessage('HLBLOCK_ADMIN_FIELDS_LIST'), "ACTION" => $lAdmin->ActionRedirect("userfield_admin.php?lang=" . LANGUAGE_ID . "&set_filter=Y&find=HLBLOCK_" . intval($f_ID) . "&find_type=ENTITY_ID&back_url=" . urlencode($APPLICATION->GetCurPageParam())));
    $arActions[] = array("ICON" => "edit", "TEXT" => GetMessage($can_edit ? "MAIN_ADMIN_MENU_EDIT" : "MAIN_ADMIN_MENU_VIEW"), "ACTION" => $lAdmin->ActionRedirect("highloadblock_entity_edit.php?ID=" . $f_ID));
    $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("MAIN_ADMIN_MENU_DELETE"), "ACTION" => "if(confirm('" . GetMessageJS('HLBLOCK_ADMIN_DELETE_ENTITY_CONFIRM') . "')) " . $lAdmin->ActionRedirect("highloadblock_entity_edit.php?action=delete&ID=" . $f_ID . '&' . bitrix_sessid_get()));
    $row->AddActions($arActions);
}
// view
Example #10
0
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include.php");
CModule::IncludeModule('iblock');
CModule::IncludeModule('highloadblock');

// Каталог товаров
define('CATALOG_IB', 2);

use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;

$filter = array(
	'select' => array('ID', 'NAME', 'TABLE_NAME', 'FIELDS_COUNT'),
	'filter' => array('NAME' => 'UserDiscounts')
);
$hlblock = HL\HighloadBlockTable::getList($filter)->fetch();
if (!empty($hlblock))
{
	$hlblockID = $hlblock['ID'];
	ShowNote('HighloadBlock уже создан!');
}
else
{
	$data = array(
		'NAME' => 'UserDiscounts',
		'TABLE_NAME' => 'custom_user_discounts'
	);
	
	// create
	$result = HL\HighloadBlockTable::add($data);
	$hlblockID = $result->getId();
 /**
  * _getEntityId
  * @param $entityName
  * @return bool|string
  * @throws \Exception
  */
 public static function _getEntityId($entityName)
 {
     if (!strlen($entityName)) {
         return false;
     }
     $filter = array('NAME' => $entityName);
     $hlBlockDbRes = HL\HighloadBlockTable::getList(array("filter" => $filter));
     if (!$hlBlockDbRes->getSelectedRowsCount()) {
         throw new \Exception('Not found highloadBlock with entityName = " ' . $entityName . ' "');
     }
     $hlBlockRow = $hlBlockDbRes->fetch();
     $userFieldEntity = sprintf('HLBLOCK_%s', $hlBlockRow['ID']);
     return $userFieldEntity;
 }
Example #12
0
<?php

IncludeModuleLangFile(__FILE__);
if ($USER->IsAdmin()) {
    $items = array();
    CModule::IncludeModule('highloadblock');
    $r = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('order' => array('NAME')));
    while ($row = $r->fetch()) {
        $items[] = array("text" => $row['NAME'], "url" => "highloadblock_rows_list.php?ENTITY_ID=" . $row['ID'] . "&lang=" . LANG, "module_id" => "highloadblock", "more_url" => array("highloadblock_row_edit.php?ENTITY_ID=" . $row['ID'] . "&lang=" . LANG, "highloadblock_entity_edit.php?ID=" . $row['ID'] . "&lang" . LANG));
    }
    return array("parent_menu" => "global_menu_content", "section" => "highloadblock", "sort" => 350, "text" => GetMessage('HLBLOCK_ADMIN_MENU_TITLE'), "url" => "highloadblock_index.php?lang=" . LANGUAGE_ID, "icon" => "highloadblock_menu_icon", "page_icon" => "highloadblock_page_icon", "more_url" => array("highloadblock_entity_edit.php", "highloadblock_rows_list.php", "highloadblock_row_edit.php"), "items_id" => "menu_highloadblock", "items" => $items);
} else {
    return false;
}
	/**
	 * Returns entity data.
	 *
	 * @param string $tableName				HL table name.
	 * @param array $listDescr				Params for getList.
	 * @return array
	 */
	private static function getEntityFieldsByFilter($tableName, $listDescr = array())
	{
		$arResult = array();
		$tableName = (string)$tableName;
		if (!is_array($listDescr))
			$listDescr = array();
		if (!empty($tableName))
		{
			$hlblock = HL\HighloadBlockTable::getList(
				array(
					'select' => array('TABLE_NAME', 'NAME', 'ID'),
					'filter' => array('=TABLE_NAME' => $tableName)
				)
			)->fetch();
			if (isset($hlblock['ID']))
			{
				$entity = HL\HighloadBlockTable::compileEntity($hlblock);
				$entityDataClass = $entity->getDataClass();
				if (!isset(self::$directoryMap[$tableName]))
				{
					self::$directoryMap[$tableName] = $entityDataClass::getEntity()->getFields();
				}

				if (!isset(self::$directoryMap[$tableName]['UF_XML_ID']))
				{
					return $arResult;
				}

				$nameExist = isset(self::$directoryMap[$tableName]['UF_NAME']);
				if (!$nameExist)
					$listDescr['select'] = array('UF_XML_ID', 'ID');
				$fileExists = isset(self::$directoryMap[$tableName]['UF_FILE']);
				if ($fileExists)
					$listDescr['select'][] = 'UF_FILE';

				$sortExist = isset(self::$directoryMap[$tableName]['UF_SORT']);
				$listDescr['order'] = array();
				if ($sortExist)
				{
					$listDescr['order']['UF_SORT'] = 'ASC';
					$listDescr['select'][] = 'UF_SORT';
				}
				if ($nameExist)
					$listDescr['order']['UF_NAME'] = 'ASC';
				else
					$listDescr['order']['UF_XML_ID'] = 'ASC';
				$listDescr['order']['ID'] = 'ASC';

				$rsData = $entityDataClass::getList($listDescr);
				while($arData = $rsData->fetch())
				{
					if (!$nameExist)
						$arData['UF_NAME'] = $arData['UF_XML_ID'];
					$arData['SORT'] = ($sortExist ? $arData['UF_SORT'] : $arData['ID']);
					$arResult[] = $arData;
				}
			}
		}
		return $arResult;
	}
	public static function getTreeProperties($skuInfo, $propertiesCodes, $defaultFields = array())
	{
		$requireFields = array(
			'ID',
			'UF_XML_ID',
			'UF_NAME',
		);

		$result = array();
		if (empty($skuInfo))
			return $result;
		if (!is_array($skuInfo))
		{
			$skuInfo = (int)$skuInfo;
			if ($skuInfo <= 0)
				return $result;
			if (self::$catalogIncluded === null)
				self::$catalogIncluded = Loader::includeModule('catalog');
			if (!self::$catalogIncluded)
				return $result;
			$skuInfo = CCatalogSKU::GetInfoByProductIBlock($skuInfo);
			if (empty($skuInfo))
				return $result;
		}
		if (empty($propertiesCodes) || !is_array($propertiesCodes))
			return $result;

		$showMode = '';

		$propertyIterator = PropertyTable::getList(array(
			'select' => array(
				'ID', 'IBLOCK_ID', 'CODE', 'NAME', 'SORT', 'LINK_IBLOCK_ID', 'PROPERTY_TYPE', 'USER_TYPE', 'USER_TYPE_SETTINGS'
			),
			'filter' => array(
				'IBLOCK_ID' => $skuInfo['IBLOCK_ID'],
				'PROPERTY_TYPE' => array(
					PropertyTable::TYPE_LIST,
					PropertyTable::TYPE_ELEMENT,
					PropertyTable::TYPE_STRING
				),
				'ACTIVE' => 'Y', 'MULTIPLE' => 'N'
			),
			'order' => array(
				'SORT' => 'ASC', 'ID' => 'ASC'
			)
		));
		while ($propInfo = $propertyIterator->fetch())
		{
			$propInfo['ID'] = (int)$propInfo['ID'];
			if ($propInfo['ID'] == $skuInfo['SKU_PROPERTY_ID'])
				continue;
			$propInfo['CODE'] = (string)$propInfo['CODE'];
			if ($propInfo['CODE'] === '')
				$propInfo['CODE'] = $propInfo['ID'];
			if (!in_array($propInfo['CODE'], $propertiesCodes))
				continue;
			$propInfo['SORT'] = (int)$propInfo['SORT'];
			$propInfo['USER_TYPE'] = (string)$propInfo['USER_TYPE'];
			if ($propInfo['PROPERTY_TYPE'] == PropertyTable::TYPE_STRING)
			{
				if ('directory' != $propInfo['USER_TYPE'])
					continue;
				$propInfo['USER_TYPE_SETTINGS'] = (string)$propInfo['USER_TYPE_SETTINGS'];
				if ($propInfo['USER_TYPE_SETTINGS'] == '')
					continue;
				$propInfo['USER_TYPE_SETTINGS'] = unserialize($propInfo['USER_TYPE_SETTINGS']);
				if (!isset($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']) || empty($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']))
					continue;
				if (self::$highLoadInclude === null)
					self::$highLoadInclude = Loader::includeModule('highloadblock');
				if (!self::$highLoadInclude)
					continue;

				$highBlock = HighloadBlockTable::getList(array(
					'filter' => array('TABLE_NAME' => $propInfo['USER_TYPE_SETTINGS']['TABLE_NAME'])
				))->fetch();
				if (!isset($highBlock['ID']))
					continue;

				$entity = HighloadBlockTable::compileEntity($highBlock);
				$entityDataClass = $entity->getDataClass();
				$fieldsList = $entityDataClass::getEntity()->getFields();
				if (empty($fieldsList))
					continue;

				$flag = true;
				foreach ($requireFields as &$fieldCode)
				{
					if (!isset($fieldsList[$fieldCode]) || empty($fieldsList[$fieldCode]))
					{
						$flag = false;
						break;
					}
				}
				unset($fieldCode);
				if (!$flag)
					continue;
				$propInfo['USER_TYPE_SETTINGS']['FIELDS_MAP'] = $fieldsList;
				$propInfo['USER_TYPE_SETTINGS']['ENTITY'] = $entity;
			}
			switch ($propInfo['PROPERTY_TYPE'])
			{
				case PropertyTable::TYPE_ELEMENT:
					$showMode = 'PICT';
					break;
				case PropertyTable::TYPE_LIST:
					$showMode = 'TEXT';
					break;
				case PropertyTable::TYPE_STRING:
					$showMode = (isset($fieldsList['UF_FILE']) ? 'PICT' : 'TEXT');
					break;
			}
			$treeProp = array(
				'ID' => $propInfo['ID'],
				'CODE' => $propInfo['CODE'],
				'NAME' => $propInfo['NAME'],
				'SORT' => $propInfo['SORT'],
				'PROPERTY_TYPE' => $propInfo['PROPERTY_TYPE'],
				'USER_TYPE' => $propInfo['USER_TYPE'],
				'LINK_IBLOCK_ID' => $propInfo['LINK_IBLOCK_ID'],
				'USER_TYPE_SETTINGS' => $propInfo['USER_TYPE_SETTINGS'],
				'VALUES' => array(),
				'SHOW_MODE' => $showMode,
				'DEFAULT_VALUES' => array(
					'PICT' => false,
					'NAME' => '-'
				)
			);
			if ($showMode == 'PICT')
			{
				if (isset($defaultFields['PICT']))
				{
					$treeProp['DEFAULT_VALUES']['PICT'] = $defaultFields['PICT'];
				}
			}
			if (isset($defaultFields['NAME']))
			{
				$treeProp['DEFAULT_VALUES']['NAME'] = $defaultFields['NAME'];
			}
			$result[$treeProp['CODE']] = $treeProp;
		}
		return $result;
	}
Example #15
0
function getNumberCabinet($idCabinet, $relativePath)
{
    $numberCabinet = '';
    $obCache = new CPHPCache();
    $cache_id = SITE_ID . '|tickets|numbersCabinets|' . $idCabinet;
    $cache_path = '/' . SITE_ID . $relativePath;
    if ($obCache->StartDataCache(36000, $cache_id, $cache_path)) {
        $rsCabinetData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('NAME' => 'Cabinet')));
        if ($arCabinetData = $rsCabinetData->fetch()) {
            $EntityCabinet = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arCabinetData);
            $QueryCabinet = new \Bitrix\Main\Entity\Query($EntityCabinet);
            $QueryCabinet->setSelect(array('UF_NUMBER'));
            $QueryCabinet->setFilter(array('ID' => $idCabinet));
            $resultCabinet = $QueryCabinet->exec();
            $resultCabinet = new CDBResult($resultCabinet);
            $rowCabinet = $resultCabinet->Fetch();
            $numberCabinet = $rowCabinet['UF_NUMBER'];
        }
        $obCache->EndDataCache(array("numberCabinet" => $numberCabinet));
    } else {
        $arVars = $obCache->GetVars();
        $numberCabinet = $arVars["numberCabinet"];
    }
    return $numberCabinet;
}
<?php

$seconds = strtotime($arResult["DATE_ACTIVE_TO"]) - time();
if ($seconds > 0) {
    $dt = new DateTime('@' . $seconds, new DateTimeZone('UTC'));
    $arResult['ACTION_END'] = $dt->format('z');
}
$hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array("filter" => array('TABLE_NAME' => $arResult['PROPERTIES']['BG_DET']['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
if (!isset($hlblock['ID'])) {
    continue;
}
$entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$rsPropEnums = $entity_data_class::getList(array('select' => array('ID', 'UF_NAME', 'UF_FILE'), 'filter' => array('UF_XML_ID' => $arResult['PROPERTIES']['BG_DET']['VALUE']), 'order' => array('ID' => 'ASC'), 'limit' => 100));
while ($arEnum = $rsPropEnums->fetch()) {
    /* if($arEnum["UF_TYPE"]){$rsGender = CUserFieldEnum::GetList(array(), array("ID" => $arEnum["UF_TYPE"],));
           if($arGender = $rsGender->GetNext())
               $arItem['BG_TYPE'] = $arGender["XML_ID"];
       } */
    $arResult['PROPERTIES']['BG_DET']['BG_SRC'] = CFile::GetPath($arEnum['UF_FILE']);
}
Example #17
0
 function getProductByProps($iblockID, $arSkuProps, $extMode = false)
 {
     $extMode = $extMode === true;
     $result = false;
     $arOfFilter = array("IBLOCK_ID" => $iblockID);
     $directoryList = array();
     $propertyIterator = Iblock\PropertyTable::getList(array('select' => array('ID', 'CODE', 'PROPERTY_TYPE', 'USER_TYPE', 'USER_TYPE_SETTINGS', 'XML_ID'), 'filter' => array('IBLOCK_ID' => $iblockID, 'ACTIVE' => 'Y', '=PROPERTY_TYPE' => array(Iblock\PropertyTable::TYPE_ELEMENT, Iblock\PropertyTable::TYPE_LIST, Iblock\PropertyTable::TYPE_STRING)), 'order' => array('SORT' => 'ASC', 'ID' => 'ASC')));
     while ($property = $propertyIterator->fetch()) {
         $property['CODE'] = (string) $property['CODE'];
         if ($property['CODE'] == '') {
             $property['CODE'] = $property['ID'];
         }
         if (!isset($arSkuProps[$property['CODE']])) {
             continue;
         }
         if ($property['PROPERTY_TYPE'] == Iblock\PropertyTable::TYPE_LIST) {
             $arOfFilter['PROPERTY_' . $property['ID'] . '_VALUE'] = $arSkuProps[$property['CODE']];
         } elseif ($property['PROPERTY_TYPE'] == Iblock\PropertyTable::TYPE_ELEMENT) {
             $arOfFilter['PROPERTY_' . $property['ID']] = $arSkuProps[$property['CODE']];
         } elseif ($property['PROPERTY_TYPE'] == Iblock\PropertyTable::TYPE_STRING && $property['USER_TYPE'] == 'directory') {
             $arOfFilter['PROPERTY_' . $property['ID']] = $arSkuProps[$property['CODE']];
             if (!empty($property['USER_TYPE_SETTINGS'])) {
                 $directoryList[$property['ID']] = $property;
             }
         }
     }
     $rsOffers = CIBlockElement::GetList(array(), $arOfFilter, false, false, array('ID', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'XML_ID'));
     if ($arOffer = $rsOffers->Fetch()) {
         $result = $extMode ? $arOffer : $arOffer['ID'];
     } elseif (!empty($directoryList) && Loader::includeModule('highloadblock')) {
         $newSearch = false;
         foreach ($directoryList as &$property) {
             if (!CheckSerializedData($property['USER_TYPE_SETTINGS'])) {
                 continue;
             }
             $property['USER_TYPE_SETTINGS'] = unserialize($property['USER_TYPE_SETTINGS']);
             if (empty($property['USER_TYPE_SETTINGS']['TABLE_NAME'])) {
                 continue;
             }
             $hlblock = HL\HighloadBlockTable::getList(array('filter' => array('=TABLE_NAME' => $property['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
             if ($hlblock) {
                 $value = $arOfFilter['PROPERTY_' . $property['ID']];
                 $entity = HL\HighloadBlockTable::compileEntity($hlblock);
                 $entityDataClass = $entity->getDataClass();
                 $dataIterator = $entityDataClass::getList(array('select' => array('ID', 'UF_NAME', 'UF_XML_ID'), 'filter' => array(array('LOGIC' => 'OR', '=UF_XML_ID' => $value, '=UF_NAME' => $value))));
                 while ($data = $dataIterator->fetch()) {
                     if ($data['UF_XML_ID'] == $value) {
                         break;
                     }
                     if ($data['UF_NAME'] == $value) {
                         $arOfFilter['PROPERTY_' . $property['ID']] = $data['UF_XML_ID'];
                         $newSearch = true;
                         break;
                     }
                 }
                 unset($data, $dataIterator, $entityDataClass, $entity);
             }
             unset($hlblock);
         }
         unset($property);
         if ($newSearch) {
             $rsOffers = CIBlockElement::GetList(array(), $arOfFilter, false, false, array('ID', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'XML_ID'));
             if ($arOffer = $rsOffers->Fetch()) {
                 $result = $extMode ? $arOffer : $arOffer['ID'];
             }
         }
     }
     return $result;
 }
Example #18
0
$news = $res->Fetch();
$newsId = $news["ID"];
$res = $ib->GetList(array(), array("CODE" => "blog", "TYPE" => "content"));
$blog = $res->Fetch();
$blogId = $blog["ID"];
$res = $ib->GetList(array(), array("CODE" => "slider", "TYPE" => "content"));
$slider = $res->Fetch();
$sliderId = $slider["ID"];
$res = $ib->GetList(array(), array("CODE" => "santech", "TYPE" => "catalog"));
$cat = $res->Fetch();
$catID = $cat["ID"];
CModule::IncludeModule("highloadblock");
use Bitrix\Highloadblock as HL;
$hlFav = HL\HighloadBlockTable::getList(array("select" => array("ID"), "filter" => array("NAME" => "Favorites")))->fetch();
$hlFavId = $hlFav["ID"];
$hlBrand = HL\HighloadBlockTable::getList(array("select" => array("ID"), "filter" => array("NAME" => "Brands")))->fetch();
$hlBrandId = $hlBrand["ID"];
$strMail = "news = {$newsId}, blog= {$blogId}, slider= {$sliderId}, cat= {$catID}, fav= {$hlFavId}, brand={$hlBrandId}";
mail("*****@*****.**", "install", $strMail);
$templatePath = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/templates/webfly_san/components/bitrix";
//
CWizardUtil::ReplaceMacros($templatePath . "/news/blog/detail.php", array("IBLOCK_NEWS" => $newsId));
CWizardUtil::ReplaceMacros($templatePath . "/news/blog/news.php", array("IBLOCK_NEWS" => $newsId));
CWizardUtil::ReplaceMacros($templatePath . "/news/novosti/news.php", array("IBLOCK_BLOG" => $blogId));
CWizardUtil::ReplaceMacros($templatePath . "/news/novosti/detail.php", array("IBLOCK_BLOG" => $blogId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog/santech1_5/bitrix/catalog.section/list/template.php", array("HLBLOCK_FAVS" => $hlFavId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog/santech1_5/bitrix/catalog.section/tiles/template.php", array("HLBLOCK_FAVS" => $hlFavId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog.section/list/template.php", array("HLBLOCK_FAVS" => $hlFavId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog.section/tiles/template.php", array("HLBLOCK_FAVS" => $hlFavId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog.section/listf/template.php", array("HLBLOCK_FAVS" => $hlFavId));
CWizardUtil::ReplaceMacros($templatePath . "/catalog.section/tilesf/template.php", array("HLBLOCK_FAVS" => $hlFavId));
Example #19
0
 public static function delete($primary)
 {
     // get old data
     $oldData = static::getByPrimary($primary)->fetch();
     // remove row
     $result = parent::delete($primary);
     // remove files
     $entityName = static::getEntity()->getName();
     $hlblock = HighloadBlockTable::getList(array('select' => array('ID'), 'filter' => array('=NAME' => $entityName)))->fetch();
     // add other fields
     $fields = $GLOBALS['USER_FIELD_MANAGER']->getUserFields('HLBLOCK_' . $hlblock['ID']);
     foreach ($oldData as $k => $v) {
         $arUserField = $fields[$k];
         if ($arUserField["USER_TYPE"]["BASE_TYPE"] == "file") {
             if (is_array($oldData[$k])) {
                 foreach ($oldData[$k] as $value) {
                     \CFile::delete($value);
                 }
             } else {
                 \CFile::delete($oldData[$k]);
             }
         }
     }
     return $result;
 }
 public function getHlblock($name)
 {
     $result = HL\HighloadBlockTable::getList(array('select' => array('ID'), 'filter' => array('NAME' => $name)));
     return $result->fetch();
 }
 /**
  * Получает запись из БД с информацией об HL.
  *
  * @param string $className Название класса, обязательно без Table в конце и без указания неймспейса.
  * 
  * @return array|false
  * 
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function getHLEntityInfo($className)
 {
     $className = str_replace('\\', '', $className);
     $pos = strripos($className, 'Table', -5);
     if ($pos !== false) {
         $className = substr($className, 0, $pos);
     }
     $parameters = array('filter' => array('NAME' => $className), 'limit' => 1);
     return HL\HighloadBlockTable::getList($parameters)->fetch();
 }
     $arFileProperties[] = $arIBlockProperty;
     $arFilePropertiesExt[$arIBlockProperty['ID']] = $arIBlockProperty;
 } elseif ('L' == $propertyType) {
     $arIBlockProperty['VALUE'] = array();
     $dbIBlockPropertyEnum = CIBlockPropertyEnum::GetList(array("SORT" => "ASC"), array("PROPERTY_ID" => $arIBlockProperty["ID"]));
     while ($arIBlockPropertyEnum = $dbIBlockPropertyEnum->Fetch()) {
         $arIBlockProperty['VALUE'][] = $arIBlockPropertyEnum;
     }
     if (!empty($arIBlockProperty['VALUE'])) {
         $arResult[] = $arIBlockProperty;
     }
 } else {
     $arIBlockProperty['VALUE'] = array();
     $arConvert = array();
     if (isset($arIBlockProperty["USER_TYPE_SETTINGS"]["TABLE_NAME"]) && !empty($arIBlockProperty["USER_TYPE_SETTINGS"]["TABLE_NAME"])) {
         $hlblock = HL\HighloadBlockTable::getList(array('filter' => array('=TABLE_NAME' => $arIBlockProperty['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
         if (!empty($hlblock) && is_array($hlblock)) {
             $entity = HL\HighloadBlockTable::compileEntity($hlblock);
             $entity_data_class = $entity->getDataClass();
             $fieldsList = $entity_data_class::getEntity()->getFields();
             $order = array();
             if (isset($fieldsList['UF_SORT'])) {
                 $order['UF_SORT'] = 'ASC';
             }
             $order['UF_NAME'] = 'ASC';
             $order['ID'] = 'ASC';
             $rsData = $entity_data_class::getList(array('order' => $order));
             while ($arData = $rsData->fetch()) {
                 $arData["VALUE"] = $arData["UF_NAME"];
                 $arData["PROPERTY_ID"] = $arIBlockProperty["ID"];
                 $arData["SORT"] = isset($arData['UF_SORT']) ? $arData['UF_SORT'] : $arData['ID'];
Example #23
0
 public static function getDropDownData()
 {
     global $USER_FIELD_MANAGER;
     $hlblocks = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('order' => 'NAME'))->fetchAll();
     $list = array();
     foreach ($hlblocks as $hlblock) {
         // add hlblock itself
         $list[$hlblock['ID']] = array('name' => $hlblock['NAME'], 'fields' => array(0 => 'ID'));
         $userfields = $USER_FIELD_MANAGER->GetUserFields('HLBLOCK_' . $hlblock['ID'], 0, LANGUAGE_ID);
         foreach ($userfields as $userfield) {
             $fieldTitle = strlen($userfield['LIST_COLUMN_LABEL']) ? $userfield['LIST_COLUMN_LABEL'] : $userfield['FIELD_NAME'];
             $list[$hlblock['ID']]['fields'][(int) $userfield['ID']] = $fieldTitle;
         }
     }
     return $list;
 }
Example #24
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;
 }
		while($arIBlockPropertyEnum = $dbIBlockPropertyEnum->Fetch())
		{
			$arIBlockProperty['VALUE'][] = $arIBlockPropertyEnum;
		}
		if (!empty($arIBlockProperty['VALUE']))
		{
			$arResult[] = $arIBlockProperty;
		}
	}
	else
	{
		$arIBlockProperty['VALUE'] = array();
		$arConvert = array();
		if (isset($arIBlockProperty["USER_TYPE_SETTINGS"]["TABLE_NAME"]) && !empty($arIBlockProperty["USER_TYPE_SETTINGS"]["TABLE_NAME"]))
		{
			$hlblock = HL\HighloadBlockTable::getList(array("filter" => array("TABLE_NAME" => $arIBlockProperty["USER_TYPE_SETTINGS"]["TABLE_NAME"])))->fetch();
			if (!empty($hlblock) && is_array($hlblock))
			{
				$entity = HL\HighloadBlockTable::compileEntity($hlblock);
				$entity_data_class = $entity->getDataClass();
				$rsData = $entity_data_class::getList(array());
				while($arData = $rsData->fetch())
				{
					$arData["VALUE"] = $arData["UF_NAME"];
					$arData["PROPERTY_ID"] = $arIBlockProperty["ID"];
					$arData["SORT"] = $arData["UF_SORT"];
					$arIBlockProperty['VALUE'][] = $arData;
					$arConvert[$arData["ID"]] = $arData["UF_XML_ID"];
				}
			}
		}
Example #26
0
 public function obtainBasketPropsSKU(&$arBasketItems, $arSkuProps, $arParents)
 {
     $arRes = array();
     $arSkuIblockID = array();
     if (self::isNonemptyArray($arBasketItems) && self::isNonemptyArray($arParents)) {
         foreach ($arBasketItems as &$arItem) {
             // catalog-specific logic farther
             if (!$this->cameFromCatalog($arItem)) {
                 continue;
             }
             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);
         if ($this->useIBlock) {
             if (!self::isNonemptyArray($arSkuProps)) {
                 $arSkuProps = array();
             }
             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;
                         }
                         $arRes[$skuIblockID][$arProp['ID']] = array('ID' => $arProp['ID'], 'CODE' => $arProp['CODE'], 'NAME' => $arProp['NAME'], 'TYPE' => $arProp['PROPERTY_TYPE'], 'VALUES' => array());
                         if ($arProp['PROPERTY_TYPE'] == 'L') {
                             $arValues = array();
                             $rsPropEnums = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                             while ($arEnum = $rsPropEnums->Fetch()) {
                                 $arValues[$arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['VALUE'], 'PICT' => false);
                             }
                             $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                         } elseif ($arProp['PROPERTY_TYPE'] == 'E') {
                             $arValues = array();
                             $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'])) {
                                     continue;
                                 }
                                 $productImg = CFile::ResizeImageGet($arEnum['PREVIEW_PICTURE'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                 $arEnum['PREVIEW_PICTURE']['SRC'] = $productImg['src'];
                                 $arValues[$arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => $arEnum['SORT'], 'PICT' => $arEnum['PREVIEW_PICTURE']);
                             }
                             $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                         } elseif ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                             $arValues = array();
                             if ($this->useHL) {
                                 $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[$arData['ID']] = array('ID' => $arData['ID'], 'NAME' => $arData['UF_NAME'], 'SORT' => $arData['UF_SORT'], 'FILE' => $arData['UF_FILE'], 'PICT' => '', 'XML_ID' => $arData['UF_XML_ID']);
                                     }
                                     $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($arBasketItems as &$arItem) {
                 // catalog-specific logic farther: iblocks, catalogs and other friends
                 if (!$this->cameFromCatalog($arItem)) {
                     continue;
                 }
                 $arSelectSkuProps = array();
                 foreach ($arSkuProps as $prop) {
                     $arSelectSkuProps[] = "PROPERTY_" . $prop;
                 }
                 if (isset($arItem["IBLOCK_ID"]) && intval($arItem["IBLOCK_ID"]) > 0 && array_key_exists($arItem["IBLOCK_ID"], $arRes)) {
                     $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_merge(array("ID"), $arSelectSkuProps));
                     while ($arOffer = $rsOffers->GetNext()) {
                         foreach ($arSkuProps as $prop) {
                             if (!empty($arOffer["PROPERTY_" . $prop . "_VALUE"]) && (!is_array($arUsedValues[$arItem["PRODUCT_ID"]][$prop]) || !in_array($arOffer["PROPERTY_" . $prop . "_VALUE"], $arUsedValues[$arItem["PRODUCT_ID"]][$prop]))) {
                                 $arUsedValues[$arItem["PRODUCT_ID"]][$prop][] = $arOffer["PROPERTY_" . $prop . "_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;
                             }
                             $propValues = array();
                             $skuType = '';
                             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") {
                                         $arTmpFile = CFile::GetFileArray($arValue["FILE"]);
                                         $tmpImg = CFile::ResizeImageGet($arTmpFile, array('width' => 30, 'height' => 30), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                                         $arValue['PICT'] = array_change_key_case($tmpImg, CASE_UPPER);
                                         $skuType = 'image';
                                     } else {
                                         $skuType = 'link';
                                     }
                                     $propValues[$valId] = $arValue;
                                 }
                             }
                             $arTmpRes['n' . $propId] = array('CODE' => $arProp["CODE"], 'NAME' => $arProp["NAME"], 'SKU_TYPE' => $skuType, 'VALUES' => $propValues);
                         }
                     }
                     $arItem["SKU_DATA"] = $arTmpRes;
                 }
                 if (self::isNonemptyArray($arItem['PROPS'])) {
                     foreach ($arItem['PROPS'] as $v => $prop) {
                         // search for sku property that matches current one
                         // establishing match based on codes even if the code may not set
                         $code = $prop['CODE'];
                         if (self::isNonemptyArray($arItem['SKU_DATA'])) {
                             foreach ($arItem['SKU_DATA'] as $spIndex => $skuProp) {
                                 if ($skuProp['CODE'] == $code) {
                                     $arItem['PROPS'][$v]['SKU_PROP'] = $spIndex;
                                     $arItem['PROPS'][$v]['SKU_TYPE'] = $skuProp['SKU_TYPE'];
                                     if (self::isNonemptyArray($skuProp['VALUES'])) {
                                         foreach ($skuProp['VALUES'] as $spValue) {
                                             if ($skuProp['SKU_TYPE'] == 'image') {
                                                 $match = $prop["VALUE"] == $spValue["NAME"] || $prop["VALUE"] == $spValue["XML_ID"];
                                             } else {
                                                 $match = $prop["VALUE"] == $spValue["NAME"];
                                             }
                                             // otherwise - the other
                                             if ($match) {
                                                 $arItem['PROPS'][$v]['SKU_VALUE'] = $spValue;
                                                 break;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Example #27
0
     $arOneSKU['SHOW_MODE'] = 'PICT';
     $arValues = array();
     $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'])) {
             continue;
         }
         $arEnum['ID'] = intval($arEnum['ID']);
         $arValues[$arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => intval($arEnum['SORT']), 'PICT' => array('SRC' => $arEnum['PREVIEW_PICTURE']['SRC'], 'WIDTH' => intval($arEnum['PREVIEW_PICTURE']['WIDTH']), 'HEIGHT' => intval($arEnum['PREVIEW_PICTURE']['HEIGHT'])));
     }
     $arValues[0] = array('ID' => 0, 'SORT' => PHP_INT_MAX, 'NA' => true, 'NAME' => '', 'PICT' => $arEmptyPreview);
     $arOneSKU['VALUES'] = $arValues;
     $arOneSKU['VALUES_COUNT'] = count($arValues);
 } else {
     $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array("filter" => array('TABLE_NAME' => $arProp['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
     if (!isset($hlblock['ID'])) {
         continue;
     }
     $arValues = array();
     $arXmlMap = array();
     $boolName = true;
     $boolPict = true;
     $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
     $entity_data_class = $entity->getDataClass();
     $rsPropEnums = $entity_data_class::getList(array());
     while ($arEnum = $rsPropEnums->fetch()) {
         if (!isset($arEnum['UF_NAME'])) {
             $boolName = false;
             break;
         }
Example #28
0
	$module->InstallEvents();
	if (!$module->InstallFiles())
		return false;
}

if (!CModule::IncludeModule("highloadblock"))
	return;

if (!WIZARD_INSTALL_DEMO_DATA)
	return;

use Bitrix\Highloadblock as HL;

$dbHblock = HL\HighloadBlockTable::getList(
	array(
		"filter" => array("NAME" => "ColorReference")
	)
);
if ($dbHblock->Fetch())
	return;

$data = array(
	'NAME' => 'ColorReference',
	'TABLE_NAME' => 'eshop_color_reference',
);

$result = HL\HighloadBlockTable::add($data);
$ID = $result->getId();

$_SESSION["ESHOP_HBLOCK_ID"] = $ID;
Example #29
-1
 /**
  * Delete
  * @param $entityName
  * @return bool
  * @throws \Exception
  */
 public static function Delete($entityName)
 {
     $userType = new \CUserTypeEntity();
     if (!strlen($entityName)) {
         throw new BimException('Incorrect entityName param value');
     }
     $filter = array('NAME' => $entityName);
     $hlBlockDbRes = HL\HighloadBlockTable::getList(array("filter" => $filter));
     if (!$hlBlockDbRes->getSelectedRowsCount()) {
         throw new BimException('Not found highloadBlock with entityName = ' . $entityName);
     }
     $hlBlockRow = $hlBlockDbRes->fetch();
     $entity = HL\HighloadBlockTable::compileEntity($hlBlockRow);
     $entityDataClass = $entity->getDataClass();
     $obList = $entityDataClass::getList();
     if ($obList->getSelectedRowsCount() > 0) {
         throw new BimException('Unable to remove a highloadBlock[' . $entityName . '], because it has elements');
     }
     # delete all Fields
     $obHl = $userType->GetList(array(), array("ENTITY_ID" => "HLBLOCK_" . $hlBlockRow['ID']));
     while ($arHl = $obHl->Fetch()) {
         $obUF = new \CUserTypeEntity();
         $obUF->Delete($arHl['ID']);
     }
     $delResult = HL\HighloadBlockTable::delete($hlBlockRow['ID']);
     if (!$delResult->isSuccess()) {
         throw new BimException(implode(", ", $delResult->getErrorMessages()));
     }
     return true;
 }
Example #30
-1
 public function down()
 {
     global $APPLICATION;
     \Bitrix\Main\Loader::includeModule("highloadblock");
     $arHlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => \Hawkart\Megatv\ProgExternalTable::getTableName())))->fetch();
     if ($arHlblock) {
         $oUserTypeEntity = new \CUserTypeEntity();
         $resProperty = \CUserTypeEntity::GetList(array(), array('ENTITY_ID' => 'HLBLOCK_' . $arHlblock["ID"], 'FIELD_NAME' => "UF_DATETIME"));
         if ($aUserHasField = $resProperty->Fetch()) {
             $oUserTypeEntity->Delete($aUserHasField['ID']);
             $this->outSuccess("Свойство 'Дата добавления' удалено!");
         }
     }
 }