• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_chat.php
  • Класс: CIMChat
  • Вызов: CIMChat::GetChatOptions
static function GetChatOptions()
{
	if (!is_null(self::$entityOption))
	{
		return self::$entityOption;
	}

	global $USER;

	self::$entityOption = [];

	$default = [
		'AVATAR' => true,
		'RENAME' => true,
		'EXTEND' => true,
		'CALL' => true,
		'MUTE' => true,
		'LEAVE' => true,
		'LEAVE_OWNER' => true,
		'SEND' => true,
		'USER_LIST' => true,
	];

	self::$entityOption['GENERAL'] = [
		'AVATAR' => false,
		'RENAME' => false,
		'EXTEND' => false,
		'CALL' => true,
		'LEAVE' => false,
		'LEAVE_OWNER' => false,
		'SEND' => CIMChat::CanSendMessageToGeneralChat((int)$USER->GetID())
	];

	if (BitrixMainLoader::includeModule('imbot'))
	{
		self::$entityOption[BitrixImBotServiceNotifier::CHAT_ENTITY_TYPE] = [
			'AVATAR' => false,
			'RENAME' => false,
			'LEAVE_OWNER' => false,
		];
		self::$entityOption[BitrixImBotBotSupport24::CHAT_ENTITY_TYPE] = [
			'AVATAR' => false,
			'RENAME' => true,
			'EXTEND' => false,
			'CALL' => false,
			'MUTE' => false,
			'LEAVE' => false,
			'LEAVE_OWNER' => false,
			'USER_LIST' => false,
		];
	}

	if (BitrixMainModuleManager::isModuleInstalled('socialnetwork'))
	{
		$path = COption::GetOptionString("socialnetwork", "workgroups_page", "/workgroups/", SITE_ID);
		$path = $path.'group/#ID#/';

		self::$entityOption['SONET_GROUP'] = [
			'AVATAR' => false,
			'RENAME' => false,
			'EXTEND' => false,
			'LEAVE' => false,
			'LEAVE_OWNER' => false,
			'PATH' => $path,
			'PATH_TITLE' => GetMessage('IM_PATH_TITLE_SONET')
		];
	}

	if (BitrixMainLoader::includeModule('tasks'))
	{
		$path = CTasksTools::GetOptionPathTaskUserEntry(SITE_ID, "/company/personal/user/#user_id#/tasks/task/view/#task_id#/");
		$path = str_replace(Array('#user_id#', '#task_id#'), Array($USER->GetId(), '#ID#'), mb_strtolower($path));

		self::$entityOption['TASKS'] = Array(
			'AVATAR' => true,
			'RENAME' => true,
			'EXTEND' => true,
			'LEAVE' => true,
			'LEAVE_OWNER' => true,
			'PATH' => $path,
			'PATH_TITLE' => GetMessage('IM_PATH_TITLE_TASKS')
		);
	}

	if (BitrixMainLoader::includeModule('calendar'))
	{
		$path = CCalendar::GetPathForCalendarEx($USER->GetId());
		$path = CHTTP::urlAddParams($path, ['EVENT_ID' => '#ID#']);

		self::$entityOption[CCalendar::CALENDAR_CHAT_ENTITY_TYPE] = Array(
			'AVATAR' => true,
			'RENAME' => true,
			'EXTEND' => true,
			'LEAVE' => true,
			'LEAVE_OWNER' => true,
			'PATH' => $path,
			'PATH_TITLE' => GetMessage('IM_PATH_TITLE_CALENDAR_EVENT')
		);
	}

	if (BitrixMainLoader::includeModule('crm'))
	{
		self::$entityOption['CRM'] = Array(
			'AVATAR' => false,
			'RENAME' => false,
			'EXTEND' => true,
			'LEAVE' => true,
			'LEAVE_OWNER' => false,
			'PATH' => '',
			'PATH_TITLE' => ''
		);
	}

	if (BitrixMainLoader::includeModule('voximplant'))
	{
		self::$entityOption['CALL'] = Array(
			'AVATAR' => true,
			'RENAME' => true,
			'EXTEND' => false,
			'CALL' => false,
			'MUTE' => false,
			'LEAVE' => false,
			'LEAVE_OWNER' => false,
			'SEND' => true,
			'USER_LIST' => true,
		);
	}

	foreach (self::$entityOption as $code => $value)
	{
		self::$entityOption[$code] = array_merge($default, $value);
	}

	self::$entityOption['DEFAULT'] = $default;

	return self::$entityOption;
}