• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/site/cookies.php
  • Класс: BitrixLandingSiteCookies
  • Вызов: Cookies::getAgreements
static function getAgreements(int $siteId, bool $viewMode = false): array
{
	$agreements = [];

	if (!$siteId)
	{
		return $agreements;
	}

	//get zone
	$zone = '';
	if (Loader::includeModule('bitrix24'))
	{
		$zone = CBitrix24::getPortalZone();
	}
	elseif (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/lang/ru")
		&& !file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/lang/ua"))
	{
		$zone = 'ru';
	}

	// first get system messages
	foreach (self::SYSTEM_COOKIES as $code => $cookieItem)
	{
		if (in_array($code, ['ym', 'vkp']) && !Manager::availableOnlyForZone('ru'))
		{
			continue;
		}
		if ($code === 'fbp' && $zone === 'ru')
		{
			continue;
		}
		$codeUp = strtoupper($code);
		$agreements[$code] = [
			'ID' => 0,
			'CODE' => $code,
			'TYPE' => $cookieItem['type'],
			'SYSTEM' => 'Y',
			'ACTIVE' => 'Y',
			'TITLE' => Loc::getMessage('LANDING_COOKIES_SYS_' . $codeUp . '_TITLE'),
			'~TITLE' => $viewMode ? '' : Loc::getMessage('LANDING_COOKIES_SYS_' . $codeUp . '_TITLE'),
			'CONTENT' => Loc::getMessage('LANDING_COOKIES_SYS_' . $codeUp . '_TEXT'),
			'~CONTENT' => $viewMode ? '' : Loc::getMessage('LANDING_COOKIES_SYS_' . $codeUp . '_TEXT')
		];
	}

	if ($siteId < 0)
	{
		return $agreements;
	}

	// then get custom messages from DB
	$res = CookiesAgreement::getList([
		'select' => [
			'ID', 'ACTIVE', 'CODE', 'TITLE', 'CONTENT'
		],
		'filter' => [
			'SITE_ID' => $siteId
		]
	]);
	while ($row = $res->fetch())
	{
		if (isset($agreements[$row['CODE']]))
		{
			if (!$row['TITLE'])
			{
				unset($row['TITLE']);
			}
			$agreements[$row['CODE']] = array_merge(
				$agreements[$row['CODE']],
				$row
			);
		}
		else
		{
			$row['SYSTEM'] = 'N';
			$row['TYPE'] = self::getCookieType($row['CODE']);
			$row['~TITLE'] = $viewMode ? '' : $row['TITLE'];
			$row['~CONTENT'] = $viewMode ? '' : $row['CONTENT'];
			$agreements[$row['CODE']] = $row;
		}
	}

	if ($viewMode)
	{
		$agreements = array_map(function($item)
		{
			$parser = new CTextParser;
			$item['CONTENT'] = $parser->convertText($item['CONTENT']);
			$item['TITLE'] = htmlspecialcharsbx($item['TITLE']);
			return $item;
		}, $agreements);
	}

	return $agreements;
}