• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/im/chat/workgroup.php
  • Класс: BitrixSocialnetworkIntegrationImChatWorkgroup
  • Вызов: Workgroup::createChat
static function createChat($params)
{
	$result = false;

	if (
		!array($params)
		|| !isset($params['group_id'])
		|| intval($params['group_id']) <= 0
		|| !self::getUseChat()
		|| !Loader::includeModule('im')
	)
	{
		return $result;
	}

	$groupItem = ItemWorkgroup::getById($params['group_id']);
	if (!$groupItem)
	{
		return $result;
	}

	$groupFields = $groupItem->getFields();
	$project = $groupItem->isProject();

	$userIdList = array();

	$res = UserToGroupTable::getList(array(
		'filter' => array(
			'GROUP_ID' => $params['group_id'],
			'@ROLE' => UserToGroupTable::getRolesMember()
		),
		'select' => array('USER_ID')
	));

	while($relation = $res->fetch())
	{
		$userIdList[] = intval($relation['USER_ID']);
	}

	if (empty($userIdList))
	{
		$userIdList = array($groupFields['OWNER_ID']);
	}

	$chatFields = array(
		'TITLE' => self::buildChatName($groupFields['NAME'], array(
			'project' => $project
		)),
		'TYPE' => IM_MESSAGE_CHAT,
		'ENTITY_TYPE' => self::CHAT_ENTITY_TYPE,
		'ENTITY_ID' => intval($params['group_id']),
		'SKIP_ADD_MESSAGE' => 'Y',
		'AUTHOR_ID' => $groupFields['OWNER_ID'],
		'USERS' => $userIdList
	);

	$groupItem = ItemWorkgroup::getById($params['group_id'], false);
	if ($groupItem)
	{
		$groupFields = $groupItem->getFields();
		if (!empty($groupFields['IMAGE_ID']))
		{
			$chatFields['AVATAR_ID'] = $groupFields['IMAGE_ID'];
		}
	}

	$chat = new CIMChat(0);
	$result = $chat->add($chatFields);

	if ($result)
	{
		self::$staticCache = array();
	}

	return $result;
}