• Модуль: 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);
		}
	}
}