• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/api/event.php
  • Класс: BitrixRestApiEvent
  • Вызов: Event::eventOfflineClear
static function eventOfflineClear($query, $n, CRestServer $server)
{
	if($server->getAuthType() !== Auth::AUTH_TYPE)
	{
		throw new AuthTypeException();
	}

	if(!CRestUtil::isAdmin())
	{
		throw new AccessException();
	}

	$query = array_change_key_case($query, CASE_LOWER);

	$processId = isset($query['process_id']) ? trim($query['process_id']) : null;

	$authData = $server->getAuthData();
	$connectorId = isset($authData['auth_connector']) ? $authData['auth_connector'] : '';

	if($processId === null)
	{
		throw new ArgumentNullException('PROCESS_ID');
	}

	$clientInfo = AppTable::getByClientId($server->getClientId());

	if(isset($query['message_id']))
	{
		$listIds = false;
		if(!is_array($query['message_id']))
		{
			throw new ArgumentException('Value must be array of MESSAGE_ID values', 'message_id');
		}

		foreach($query['message_id'] as $messageId)
		{
			$messageId = trim($messageId);

			if(mb_strlen($messageId) !== 32)
			{
				throw new ArgumentException('Value must be array of MESSAGE_ID values', 'messsage_id');
			}

			$listIds[] = $messageId;
		}

		EventOfflineTable::clearEventsByMessageId($processId, $clientInfo['ID'], $connectorId, $listIds);
	}
	else
	{
		$listIds = false;
		if(isset($query['id']))
		{
			if(!is_array($query['id']))
			{
				throw new ArgumentException('Value must be array of integers', 'id');
			}

			foreach($query['id'] as $id)
			{
				$id = intval($id);

				if($id <= 0)
				{
					throw new ArgumentException('Value must be array of integers', 'id');
				}

				$listIds[] = $id;
			}
		}

		EventOfflineTable::clearEvents($processId, $clientInfo['ID'], $connectorId, $listIds);
	}

	return true;
}