• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_chat.php
  • Класс: CIMChat
  • Вызов: CIMChat::SetManagers
public function SetManagers($chatId, $users, $checkPermission = true)
{
	$chatId = intval($chatId);
	$chat = IMModelChatTable::getById($chatId)->fetch();
	if (!$chat)
		return false;

	if ($checkPermission && $chat['AUTHOR_ID'] != $this->user_id)
		return false;

	$relations = self::GetRelationById($chatId, false, true, false);
	foreach ($users as $userId => $status)
	{
		$userId = intval($userId);
		if ($userId == $chat['AUTHOR_ID'] || $userId <= 0)
			continue;

		if (!isset($relations[$userId]))
			continue;

		$relations[$userId]['MANAGER'] = $status? 'Y': 'N';
		IMModelRelationTable::update($relations[$userId]['ID'], Array('MANAGER' => $status));
	}

	if ($chat['TYPE'] === IMV2Chat::IM_TYPE_OPEN || $chat['ENTITY_TYPE'] === IMV2Chat::ENTITY_TYPE_GENERAL)
	{
		IMV2ChatGeneralChat::cleanGeneralChatCache(IMV2ChatGeneralChat::MANAGERS_CACHE_ID);
	}

	$managers = [];
	foreach ($relations as $relation)
	{
		if ($relation['MANAGER'] === 'Y' || $relation['USER_ID'] == $chat['AUTHOR_ID'])
		{
			$managers[] = (int)$relation['USER_ID'];
		}
	}

	if (CModule::IncludeModule('pull'))
	{
		BitrixPullEvent::add(array_keys($relations), Array(
			'module_id' => 'im',
			'command' => 'chatManagers',
			'params' => Array(
				'dialogId' => 'chat'.$chatId,
				'chatId' => (int)$chatId,
				'list' => $managers
			),
			'extra' => BitrixImCommon::getPullExtra()
		));
	}

	return true;
}