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