- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/Avatar/Mask/Helper.php
- Класс: BitrixUIAvatarMaskHelper
- Вызов: Helper::save
static function save(?int $originalFileId, array $file, ?MainEngineCurrentUser $currentUser = null): ?int
{
$originalFile = CFile::GetByID($originalFileId)->Fetch();
if (!$originalFile)
{
return null;
}
$currentUser = is_null($currentUser) ? MainEngineCurrentUser::get() : $currentUser;
$consumer = AvatarMaskConsumer::createFromId($currentUser->getId());
while (((int)$originalFile['ID'] !== (int)$originalFileId))
{
CFile::Delete($originalFile['ID']);
$originalFile = CFile::GetByID($originalFileId)->Fetch();
}
if ($fileIdWithMask = CFile::SaveFile($file + ['MODULE_ID' => 'ui'], 'ui/masked'))
{
$maskId = isset($file['maskInfo']) ? $file['maskInfo']['id'] : null;
if ($maskId
&& ($maskItem = AvatarMaskItem::getInstance($maskId))
&& $maskItem->isReadableBy($consumer)
&& CFile::AddVersion($originalFileId, $fileIdWithMask, ['maskInfo' => ['id' => $maskId]])->isSuccess()
)
{
$maskItem->applyToFileBy($originalFileId, $fileIdWithMask, $consumer);
$consumer->useRecentlyMaskId($maskItem->getId());
return $fileIdWithMask;
}
CFile::Delete($fileIdWithMask);
}
return null;
}