• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/socialnetwork/log.php
  • Класс: BitrixTasksIntegrationSocialNetworkLog
  • Вызов: Log::updateLogRights
static function updateLogRights(int $logId, int $userId, bool $isNew = false)
{
	if (!static::includeModule())
	{
		return;
	}

	$log = LogTable::getById($logId)->fetch();
	if (!$log)
	{
		return;
	}

	$taskId = (int) $log['SOURCE_ID'];

	$task = self::getTask($taskId);
	if (!$task)
	{
		return;
	}

	$rights = [];

	if ($userId && !$isNew)
	{
		$rights['U'.$userId] = 'U'.$userId;
	}

	$members = self::getTaskMembers($taskId);
	foreach ($members as $member)
	{
		if (
			$isNew
			&& $member['TYPE'] == MemberTable::MEMBER_TYPE_ORIGINATOR
			&& $userId == $member['USER_ID']
		)
		{
			continue;
		}

		$code = "U{$member['USER_ID']}";
		if (!array_key_exists($code, $rights))
		{
			$rights[$code] = $code;
		}
	}

	if ($task['GROUP_ID'])
	{
		$rights['SG'.$task['GROUP_ID']] = 'SG'.$task['GROUP_ID'];
	}

	// drop all rights
	CSocNetLogRights::DeleteByLogID($log['ID']);

	foreach ($rights as $row)
	{
		LogRightTable::add([
			'LOG_ID' => $log['ID'],
			'GROUP_CODE' => $row,
			'LOG_UPDATE' => new BitrixMainDBSqlExpression(BitrixMainApplication::getInstance()->getConnection()->getSqlHelper()->getCurrentDateTimeFunction())
		]);
	}

}