• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/im/task.php
  • Класс: BitrixTasksIntegrationIMTask
  • Вызов: Task::openChat
static function openChat($task)
{
	if(!static::includeModule())
	{
		return 0;
	}

	if(is_array($task))
	{
		$res = ChatTable::getList(array(
			'select' => Array('ID'),
			'filter' => array(
				'=ENTITY_TYPE' => 'TASKS',
				'=ENTITY_ID' => $task['ID'],
			),
			'limit' => 1
		));
		$chat = $res->fetch();

		if($chat)
		{
			$chatId = $chat['ID'];
		}
		else
		{
			$chat = new CIMChat(0);

			$data = array(
				'TITLE' => str_replace('#TASK_TITLE#', $task['TITLE'], Loc::getMessage('TASKS_IM_CHAT_TITLE')),
				'TYPE' => IM_MESSAGE_CHAT,
				'ENTITY_TYPE' => 'TASKS',
				'ENTITY_ID' => $task['ID'],
				'SKIP_ADD_MESSAGE' => 'Y',
				'AUTHOR_ID' => $task['CREATED_BY'],
				'USERS' => array_map(function($member){
					return $member['USER_ID'];
				}, $task['SE_MEMBER']),
			);

			$chatId = $chat->add($data);
		}

		return $chatId;
	}

	return 0;
}