• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/item/workgroupfavorites.php
  • Класс: BitrixSocialnetworkItemWorkgroupFavorites
  • Вызов: WorkgroupFavorites::set
static function set(array $params = [])
{
	global $USER;

	$groupId = (int)($params['GROUP_ID'] ?? 0);
	$userId = (int)($params['USER_ID'] ?? $USER->getId());
	$value = (isset($params['VALUE']) && in_array($params['VALUE'], [ 'Y', 'N' ]) ? $params['VALUE'] : false);

	if (
		$groupId <= 0
		|| $userId <= 0
		|| !$value
	)
	{
		throw new SystemException(Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUPFAVORITES_ERROR_NO_DATA'));
	}

	$workgroupsCount = WorkgroupFavoritesTable::getCount([
		'GROUP_ID' => $groupId,
		'USER_ID' => $userId,
	]);
	$userHasFavoriteGroup = $workgroupsCount > 0;
	$isUnset = $value === 'N';

	if (!(CSocNetGroup::getById($groupId, true)) && !($isUnset && $userHasFavoriteGroup))
	{
		throw new SystemException(Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUPFAVORITES_ERROR_NO_ACCESS'));
	}

	if ($value === 'Y')
	{
		return WorkgroupFavoritesTable::set([
			'GROUP_ID' => $groupId,
			'USER_ID' => $userId,
		]);
	}

	return self::delete([
		'GROUP_ID' => $groupId,
		'USER_ID' => $userId,
	]);
}