- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/classes/general/restentity.php
- Класс: CBitrixRestEntity
- Вызов: CBitrixRestEntity::entityItemGet
static function entityItemGet($params, $n, $server)
{
if(self::checkItemParams($params))
{
$arIBlock = self::getIBlock(self::getEntityIBlockCode($params['ENTITY'], $server));
if($arIBlock)
{
$arFields = array();
$dbRes = self::getItemProperties($params['ENTITY'], $server);
while ($arField = $dbRes->Fetch())
{
$arFields[$arField['CODE']] = $arField['ID'];
}
$arSort = array('ID' => 'ASC');
$arFilter = array();
if(isset($params['SORT']) && is_array($params['SORT']))
{
$arSort = array_change_key_case($params['SORT'], CASE_UPPER);
}
if(isset($params['FILTER']) && is_array($params['FILTER']))
{
$arFilter = array_change_key_case($params['FILTER'], CASE_UPPER);
}
$arFilter = self::checkFilter($arFilter);
$arFilter['IBLOCK_ID'] = $arIBlock['ID'];
$arFilter['CHECK_PERMISSIONS'] = 'Y';
$dbRes = CIBlockElement::GetList(
$arSort,
$arFilter,
false,
self::getNavData($n),
array('ID', 'IBLOCK_ID', 'TIMESTAMP_X', 'MODIFIED_BY', 'DATE_CREATE', 'CREATED_BY', 'ACTIVE', 'DATE_ACTIVE_FROM', 'DATE_ACTIVE_TO', 'SORT', 'NAME', 'PREVIEW_PICTURE', 'PREVIEW_TEXT', 'DETAIL_PICTURE', 'DETAIL_TEXT', 'CODE', 'IBLOCK_SECTION_ID')
);
$result = array();
while ($el = $dbRes->GetNextElement(false))
{
$res = $el->GetFields();
$arProps = $el->GetProperties();
foreach($res as $key => $value)
{
if(array_key_exists('~'.$key, $res))
{
$res[$key] = $res['~'.$key];
unset($res['~'.$key]);
}
}
$res['ENTITY'] = $params['ENTITY'];
$res['SECTION'] = $res['IBLOCK_SECTION_ID'];
if(!empty($arProps))
{
$res['PROPERTY_VALUES'] = array();
foreach($arProps as $prop)
{
if($prop['PROPERTY_TYPE'] == 'F')
{
if($prop['VALUE'] > 0)
{
$prop['~VALUE'] = self::getFile($prop['~VALUE']);
}
}
$res['PROPERTY_VALUES'][$prop['CODE']] = $prop['~VALUE'];
}
}
$res['DATE_ACTIVE_FROM'] = CRestUtil::ConvertDateTime($res['DATE_ACTIVE_FROM']);
$res['DATE_ACTIVE_TO'] = CRestUtil::ConvertDateTime($res['DATE_ACTIVE_TO']);
$res['TIMESTAMP_X'] = CRestUtil::ConvertDateTime($res['TIMESTAMP_X']);
$res['DATE_CREATE'] = CRestUtil::ConvertDateTime($res['DATE_CREATE']);
if($res['PREVIEW_PICTURE'] > 0)
$res['PREVIEW_PICTURE'] = self::getFile($res['PREVIEW_PICTURE']);
if($res['DETAIL_PICTURE'] > 0)
$res['DETAIL_PICTURE'] = self::getFile($res['DETAIL_PICTURE']);
unset($res['IBLOCK_ID']);
unset($res['IBLOCK_SECTION_ID']);
unset($res['DETAIL_TEXT_TYPE']);
unset($res['PREVIEW_TEXT_TYPE']);
unset($res['ACTIVE_FROM']);
unset($res['ACTIVE_TO']);
$result[] = $res;
}
return self::setNavData($result, $dbRes);
}
else
{
throw new RestException('Entity not found', self::ERROR_ENTITY_NOT_FOUND);
}
}
}