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