• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/classes/general/restentity.php
  • Класс: CBitrixRestEntity
  • Вызов: CBitrixRestEntity::entityUpdate
static function entityUpdate($params, $n, $server)
{
	global $USER;

	if(self::checkParams($params))
	{
		$arIBlock = self::getIBlock(self::getEntityIBlockCode($params['ENTITY'], $server));
		if($arIBlock)
		{
			if(CIBlockRights::UserHasRightTo($arIBlock['ID'], $arIBlock['ID'], 'iblock_edit'))
			{
				$recalcRights = false;

				$arIBlockFields = array();
				if(isset($params['NAME']))
				{
					$arIBlockFields["NAME"] = trim($params['NAME']);
				}

				if(isset($params['ENTITY_NEW']) && $params['ENTITY_NEW'] != $params['ENTITY'])
				{
					if (self::checkEntity($params['ENTITY_NEW'], $server))
					{
						throw new RestException('Entity already exists', self::ERROR_ENTITY_ALREADY_EXISTS);
					}

					$arIBlockFields["CODE"] = self::getEntityIBlockCode($params['ENTITY_NEW'], $server);
				}

				if(isset($params['ACCESS']) && is_array($params['ACCESS']) && count($params['ACCESS']) > 0)
				{
					$recalcRights = true;
					$params['ACCESS']['U'.$USER->GetID()] = 'X';
					$arIBlockFields['RIGHTS'] = self::checkRights($params['ACCESS']);
				}

				if(count($arIBlockFields) > 0)
				{
					$ib = new CIBlock();
					if(!$ib->Update($arIBlock['ID'], $arIBlockFields))
					{
						throw new RestException($ib->LAST_ERROR, RestException::ERROR_CORE);
					}
					elseif($recalcRights)
					{
						$obIBlockRights = new CIBlockRights($arIBlock['ID']);
						$obIBlockRights->Recalculate();
					}
				}
				return true;
			}
			else
			{
				throw new AccessException();
			}
		}
		else
		{
			throw new RestException('Entity not found', self::ERROR_ENTITY_NOT_FOUND);
		}
	}
}