- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Controller/Chat.php
- Класс: BitrixImV2ControllerChat
- Вызов: Chat::setAvatarAction
public function setAvatarAction(BitrixImV2Chat $chat, string $avatarBase64)
{
if (isset($avatarBase64) && $avatarBase64)
{
$avatar = CRestUtil::saveFile($avatarBase64);
$imageCheck = (new BitrixMainFileImage($avatar["tmp_name"]))->getInfo();
if(
!$imageCheck
|| !$imageCheck->getWidth()
|| $imageCheck->getWidth() > 5000
|| !$imageCheck->getHeight()
|| $imageCheck->getHeight() > 5000
)
{
$avatar = null;
}
if (!$avatar || mb_strpos($avatar['type'], "image/") !== 0)
{
$avatarId = 0;
}
else
{
$avatar['MODULE_ID'] = 'im';
$avatarId = CFile::saveFile($avatar, 'im');
}
}
else
{
$avatarId = 0;
}
$chat->setAvatarId($avatarId);
$result = $chat->save();
if (!$result->isSuccess())
{
return $this->convertKeysToCamelCase($result->getErrors());
}
$avatarFile = CFile::ResizeImageGet(
$avatarId,
[],
BX_RESIZE_IMAGE_EXACT,
false,
false,
true
);
if (!empty($avatarFile['src']))
{
$imageUrl = $avatarFile['src'];
Event::add($chat->getRelations()->getUserIds(), [
'module_id' => 'im',
'command' => 'chatAvatar',
'params' => [
'chatId' => $chat->getChatId(),
'avatar' => $imageUrl,
],
'extra' => Common::getPullExtra()
]);
}
return $avatarId;
}