• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userconsent/consent.php
  • Класс: BitrixMainUserConsentConsent
  • Вызов: Consent::addByContext
static function addByContext($agreementId, $originatorId = null, $originId = null, array $params = array())
{
	$agreement = new Agreement($agreementId);
	if (!$agreement->isExist() || !$agreement->isActive())
	{
		return null;
	}

	$request = Context::getCurrent()->getRequest();
	$parameters = array(
		'AGREEMENT_ID' => $agreementId
	);

	if (isset($params['USER_ID']) && intval($params['USER_ID']) > 0)
	{
		$parameters['USER_ID'] = intval($params['USER_ID']);
	}
	else if (isset($GLOBALS['USER']) && is_object($GLOBALS['USER']) && $GLOBALS['USER']->GetID())
	{
		$parameters['USER_ID'] = $GLOBALS['USER']->GetID();
	}

	$parameters['IP'] = (isset($params['IP']) && $params['IP']) ? $params['IP'] : $request->getRemoteAddress();
	if (isset($params['URL']) && $params['URL'])
	{
		$parameters['URL'] = $params['URL'];
	}
	else
	{
		$parameters['URL'] = ($request->isHttps() ? "https" : "http")."://".$request->getHttpHost() . $request->getRequestUri();
	}

	if (mb_strlen($parameters['URL']) > 4000)
	{
		$parameters['URL'] = mb_substr($parameters['URL'], 0, 4000);
	}

	if ($originatorId && $originId)
	{
		$parameters['ORIGINATOR_ID'] = $originatorId;
		$parameters['ORIGIN_ID'] = $originId;
	}
	$addResult = InternalsConsentTable::add($parameters);
	if ($addResult->isSuccess())
	{
		$userConsentId = $addResult->getId();

		if (isset($params['ITEMS']) && is_array($params['ITEMS']))
		{
			InternalsUserConsentItemTable::addItems($userConsentId, $params['ITEMS']);
		}

		return $userConsentId;
	}
	else
	{
		return null;
	}
}