• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/tasks.php
  • Класс: BitrixIntranetIntegrationTasks
  • Вызов: Tasks::onTaskUpdate
static function onTaskUpdate($taskId, &$currentTaskFields, &$previousTaskFields): void
{
	if (!Loader::includeModule('tasks') || !Loader::includeModule('im'))
	{
		return;
	}

	$res = BitrixImModelChatTable::getList(array(
		'select' => ['ID'],
		'filter' => [
			'=ENTITY_TYPE' => 'TASKS',
			'=ENTITY_ID' => $taskId,
		],
		'limit' => 1
	));

	if ($chat = $res->fetch())
	{
		$chatId = $chat['ID'];
	}
	else
	{
		return;
	}

	$userIdNewList = self::prepareCurrentUserList($currentTaskFields);
	$userIdOldList = self::prepareUserList($previousTaskFields);

	if (empty($userIdNewList) || empty($userIdOldList))
	{
		return;
	}

	$addedUsers = array_diff($userIdNewList, $userIdOldList);
	$deletedUsers = array_diff($userIdOldList, $userIdNewList);

	if (empty($addedUsers) && empty($deletedUsers))
	{
		return;
	}

	Secretary::updateChatUsers($chatId, $addedUsers, $deletedUsers);
}