• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/internals/theme.php
  • Класс: BitrixIntranetInternalsThemeTable
  • Вызов: ThemeTable::set
static function set(array $params = []): bool
{
	$themeId = (string)($params['THEME_ID'] ?? '');
	$userId = (int)($params['USER_ID'] ?? 0);
	$entityType = (string)($params['ENTITY_TYPE'] ?? '');
	$entityId = (int)($params['ENTITY_ID'] ?? 0);
	$context = (string)($params['CONTEXT'] ?? '');

	if (
		empty($themeId)
		|| empty($entityType)
	)
	{
		return false;
	}

	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

	$insertFields = [
		'THEME_ID' => $helper->forSql($themeId),
		'USER_ID' => $userId,
		'ENTITY_TYPE' => $entityType,
		'ENTITY_ID' => $entityId,
		'CONTEXT' => $context,
	];

	$updateFields = [
		'THEME_ID' => $helper->forSql($themeId),
		'USER_ID' => $userId,
	];

	$mergeQuery = $helper->prepareMerge(
		static::getTableName(),
		[ 'ENTITY_TYPE', 'ENTITY_ID', 'CONTEXT' ],
		$insertFields,
		$updateFields
	);

	if ($mergeQuery[0] !== '')
	{
		$connection->query($mergeQuery[0]);
		self::getEntity()->cleanCache();
	}

	return true;
}