• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/tasks/task.php
  • Класс: BitrixSocialnetworkIntegrationTasksTask
  • Вызов: Task::onTaskUserOptionChanged
static function onTaskUserOptionChanged(Event $event): EventResult
{
	$result = new EventResult(
		EventResult::UNDEFINED,
		[],
		'socialnetwork'
	);

	$taskId = (int)$event->getParameter('taskId');
	$userId = (int)$event->getParameter('userId');
	$option = (int)$event->getParameter('option');
	$added = $event->getParameter('added');

	if (
		$taskId <= 0
		|| $userId <= 0
		|| $option !== BitrixTasksInternalsUserOptionOption::MUTED
		|| !Loader::includeModule('tasks')
	)
	{
		return $result;
	}

	$logId = 0;
	$provider = new BitrixSocialnetworkLivefeedTasksTask();
	$res = LogTable::getList([
		'filter' => [
			'@EVENT_ID' => $provider->getEventId(),
			'=SOURCE_ID' => $taskId
		],
		'select' => [ 'ID' ]
	]);
	if ($logFields = $res->fetch())
	{
		$logId = (int)$logFields['ID'];
	}
	if ($logId <= 0)
	{
		return $result;
	}

	$followDate = false;
	if (!$added)
	{
		CSocNetLogFollow::delete($userId, 'L'.$logId);
		$followDate = ConvertTimeStamp(time() + CTimeZone::getOffset(), 'FULL', SITE_ID); // compromise, we cannot get it from $logFields because it can have not updated value yet
	}

	CSocNetLogFollow::set($userId, 'L'.$logId, ($added ? 'N' : 'Y'), $followDate);

	return new EventResult(
		EventResult::SUCCESS,
		[],
		'socialnetwork'
	);
}