- Модуль: 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;
}