- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/restservice.php
- Класс: BitrixBizprocRestService
- Вызов: RestService::addActivityInternal
static function addActivityInternal($params, $server, $isRobot = false)
{
if(!$server->getClientId())
{
throw new AccessException("Application context required");
}
self::checkAdminPermissions();
$params = self::prepareActivityData($params);
if ($isRobot)
self::validateRobot($params, $server);
else
self::validateActivity($params, $server);
$appId = self::getAppId($server->getClientId());
$params['APP_ID'] = $server->getClientId();
$params['INTERNAL_CODE'] = self::generateInternalCode($params);
$params['APP_NAME'] = self::getAppName($params['APP_ID']);
$iterator = RestActivityTable::getList(array(
'select' => array('ID'),
'filter' => array('=INTERNAL_CODE' => $params['INTERNAL_CODE'])
));
$result = $iterator->fetch();
if ($result)
{
throw new RestException('Activity or Robot already installed!', self::ERROR_ACTIVITY_ALREADY_INSTALLED);
}
$params['AUTH_USER_ID'] = isset($params['AUTH_USER_ID'])? (int) $params['AUTH_USER_ID'] : 0;
$params['IS_ROBOT'] = $isRobot ? 'Y' : 'N';
$params['USE_PLACEMENT'] = (isset($params['USE_PLACEMENT']) && $params['USE_PLACEMENT'] === 'Y') ? 'Y' : 'N';
if ($params['USE_PLACEMENT'] === 'Y')
{
self::validateActivityHandler($params['PLACEMENT_HANDLER'] ?? null, $server);
self::upsertAppPlacement($appId, $params['CODE'], $params['PLACEMENT_HANDLER'] ?? null);
}
$result = RestActivityTable::add($params);
if ($result->getErrors())
{
if ($params['USE_PLACEMENT'] === 'Y')
{
self::deleteAppPlacement($appId, $params['CODE']);
}
throw new RestException('Activity save error!', self::ERROR_ACTIVITY_ADD_FAILURE);
}
return true;
}