- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/restservice.php
- Класс: BitrixBizprocRestService
- Вызов: RestService::updateActivityInternal
static function updateActivityInternal($params, $server, $isRobot = false)
{
if(!$server->getClientId())
{
throw new AccessException("Application context required");
}
$params = self::prepareActivityData($params);
self::checkAdminPermissions();
self::validateActivityCode($params['CODE']);
$params['APP_ID'] = $server->getClientId();
$internalCode = self::generateInternalCode($params);
$iterator = RestActivityTable::getList(array(
'select' => array('ID'),
'filter' => array(
'=INTERNAL_CODE' => $internalCode,
'=IS_ROBOT' => $isRobot ? 'Y' : 'N'
)
));
$result = $iterator->fetch();
if (!$result)
{
throw new RestException('Activity or Robot not found!', self::ERROR_ACTIVITY_NOT_FOUND);
}
$fields = (isset($params['FIELDS']) && is_array($params['FIELDS'])) ? $params['FIELDS'] : null;
if (!$fields)
{
throw new RestException('No fields to update', self::ERROR_ACTIVITY_VALIDATION_FAILURE);
}
$toUpdate = [];
if (isset($fields['HANDLER']))
{
self::validateActivityHandler($fields['HANDLER'], $server);
$toUpdate['HANDLER'] = $fields['HANDLER'];
}
if (isset($fields['AUTH_USER_ID']))
{
$toUpdate['AUTH_USER_ID'] = (int) $fields['AUTH_USER_ID'];
}
if (isset($fields['USE_SUBSCRIPTION']))
{
$toUpdate['USE_SUBSCRIPTION'] = (string) $fields['USE_SUBSCRIPTION'];
}
if (isset($fields['USE_PLACEMENT']))
{
$toUpdate['USE_PLACEMENT'] = ($fields['USE_PLACEMENT'] === 'Y') ? 'Y' : 'N';
}
if (!empty($fields['NAME']))
{
$toUpdate['NAME'] = $fields['NAME'];
}
if (isset($fields['DESCRIPTION']))
{
$toUpdate['DESCRIPTION'] = $fields['DESCRIPTION'];
}
if (isset($fields['PROPERTIES']))
{
self::validateActivityProperties($fields['PROPERTIES']);
$toUpdate['PROPERTIES'] = $fields['PROPERTIES'];
}
if (isset($fields['RETURN_PROPERTIES']))
{
self::validateActivityProperties($fields['RETURN_PROPERTIES']);
$toUpdate['RETURN_PROPERTIES'] = $fields['RETURN_PROPERTIES'];
}
if (isset($fields['DOCUMENT_TYPE']))
{
if (empty($fields['DOCUMENT_TYPE']))
{
$toUpdate['DOCUMENT_TYPE'] = null;
}
else
{
static::validateActivityDocumentType($fields['DOCUMENT_TYPE']);
$toUpdate['DOCUMENT_TYPE'] = $fields['DOCUMENT_TYPE'];
}
}
if (isset($fields['FILTER']))
{
if (empty($fields['FILTER']))
{
$toUpdate['FILTER'] = null;
}
else
{
if (!is_array($fields['FILTER']))
{
throw new RestException('Wrong activity FILTER!', self::ERROR_ACTIVITY_VALIDATION_FAILURE);
}
$toUpdate['FILTER'] = $fields['FILTER'];
}
}
if (!$toUpdate)
{
throw new RestException('No fields to update', self::ERROR_ACTIVITY_VALIDATION_FAILURE);
}
if (isset($fields['PLACEMENT_HANDLER']))
{
self::validateActivityHandler($fields['PLACEMENT_HANDLER'], $server);
self::upsertAppPlacement(self::getAppId($params['APP_ID']), $params['CODE'], $fields['PLACEMENT_HANDLER']);
}
if (isset($toUpdate['USE_PLACEMENT']) && $toUpdate['USE_PLACEMENT'] === 'N')
{
self::deleteAppPlacement(self::getAppId($params['APP_ID']), $params['CODE']);
}
$updateResult = RestActivityTable::update($result['ID'], $toUpdate);
if (!$updateResult->isSuccess())
{
throw new RestException(
implode('; ', $updateResult->getErrorMessages()),
self::ERROR_ACTIVITY_VALIDATION_FAILURE
);
}
return true;
}