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