- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
- Класс: CIMDisk
- Вызов: CIMDisk::UpdateAvatarId
static function UpdateAvatarId($chatId, $fileId, $userId = null)
{
$chatId = (int)$chatId;
$fileId = (int)$fileId;
if ($chatId <= 0 || $fileId <= 0)
{
return false;
}
$chat = IMModelChatTable::getById($chatId)->fetch();
if (!$chat || in_array($chat['TYPE'], Array(IM_MESSAGE_PRIVATE, IM_MESSAGE_SYSTEM)))
{
return false;
}
$relationError = true;
$chatRelation = CIMChat::GetRelationById($chatId, false, true, false);
foreach ($chatRelation as $relation)
{
if ($relation["EXTERNAL_AUTH_ID"] == 'imconnector')
{
unset($chatRelation[$relation["USER_ID"]]);
continue;
}
if ($relation['USER_ID'] == BitrixImCommon::getUserId($userId))
{
$relationError = false;
}
}
if ($relationError)
{
return false;
}
if ($chat['AVATAR'] > 0)
{
CFile::DeLete($chat['AVATAR']);
}
IMModelChatTable::update($chatId, Array('AVATAR' => $fileId));
$file['chatId'] = $chatId;
$file['chatAvatar'] = CIMChat::GetAvatarImage($fileId);
if ($chat["ENTITY_TYPE"] != 'CALL')
{
CIMChat::AddSystemMessage(Array(
'CHAT_ID' => $chatId,
'USER_ID' => BitrixImCommon::getUserId($userId),
'MESSAGE_CODE' => 'IM_DISK_AVATAR_CHANGE_'
));
}
if (BitrixMainLoader::includeModule('pull'))
{
$pullMessage = Array(
'module_id' => 'im',
'command' => 'chatAvatar',
'params' => Array(
'chatId' => $chatId,
'avatar' => $file['chatAvatar'],
),
'extra' => BitrixImCommon::getPullExtra()
);
BitrixPullEvent::add(array_keys($chatRelation), $pullMessage);
if ($chat['TYPE'] == IM_MESSAGE_OPEN || $chat['TYPE'] == IM_MESSAGE_OPEN_LINE)
{
CPullWatch::AddToStack('IM_PUBLIC_'.$chat['ID'], $pullMessage);
}
}
return true;
}