static function OnAfterResizeImage($arFile, $arResizeParams, &$callbackData, &$cacheImageFile, &$cacheImageFileTmp, &$arImageSize)
{
global $arCloudImageSizeCache;
$io = CBXVirtualIo::GetInstance();
if (!is_array($callbackData))
return false;
if ($callbackData["cacheSTARTED"])
{
/** @var CCloudStorageBucket $obTargetBucket */
$obTargetBucket = $callbackData["obTargetBucket"];
/** @var CPHPCache $cacheOBJ */
$cacheOBJ = $callbackData["cacheOBJ"];
if (isset($callbackData["tmpFile"])) //have to upload to the cloud
{
$arFileToStore = CFile::MakeFileArray($io->GetPhysicalName($cacheImageFileTmp));
if (!$arFileToStore)
{
$cacheOBJ->AbortDataCache();
$tmpFile = $io->GetPhysicalName($callbackData["tmpFile"]);
unlink($tmpFile);
@rmdir(mb_substr($tmpFile, 0, -mb_strlen(bx_basename($tmpFile))));
unlink($cacheImageFileTmp);
@rmdir(mb_substr($cacheImageFileTmp, 0, -mb_strlen(bx_basename($cacheImageFileTmp))));
$obSourceBucket = new CCloudStorageBucket(intval($arFile["HANDLER_ID"]));
if ($obSourceBucket->Init())
{
$cacheImageFile = $obSourceBucket->GetFileSRC($arFile, false);
}
return false;
}
if (!preg_match("/^image\//", $arFileToStore["type"]))
$arFileToStore["type"] = $arFile["CONTENT_TYPE"];
if ($obTargetBucket->SaveFile($callbackData["fileURL"], $arFileToStore))
{
$cacheImageFile = $obTargetBucket->GetFileSRC($callbackData["fileURL"], false);
$arImageSize = CFile::GetImageSize($cacheImageFileTmp);
$arImageSize[2] = filesize($io->GetPhysicalName($cacheImageFileTmp));
$iFileSize = filesize($arFileToStore["tmp_name"]);
if (!is_array($arImageSize))
$arImageSize = array(0, 0);
$cacheOBJ->EndDataCache(array(
"cacheImageFile" => $cacheImageFile,
"width" => $arImageSize[0],
"height" => $arImageSize[1],
"size" => $arImageSize[2],
));
$tmpFile = $io->GetPhysicalName($callbackData["tmpFile"]);
unlink($tmpFile);
@rmdir(mb_substr($tmpFile, 0, -mb_strlen(bx_basename($tmpFile))));
$arCloudImageSizeCache[$cacheImageFile] = $arImageSize;
$obTargetBucket->IncFileCounter($iFileSize);
if (
COption::GetOptionString("clouds", "delayed_resize") === "Y"
&& !is_array(CCloudStorage::ResizeImageFileGet($cacheImageFile))
)
{
$arDestinationSize = array();
CCloudStorage::ResizeImageFileAdd(
$arDestinationSize,
$arFile,
$cacheImageFile,
$arResizeParams,
9 //already there
);
}
}
else
{
$cacheOBJ->AbortDataCache();
$tmpFile = $io->GetPhysicalName($callbackData["tmpFile"]);
unlink($tmpFile);
@rmdir(mb_substr($tmpFile, 0, -mb_strlen(bx_basename($tmpFile))));
unlink($cacheImageFileTmp);
@rmdir(mb_substr($cacheImageFileTmp, 0, -mb_strlen(bx_basename($cacheImageFileTmp))));
$obSourceBucket = new CCloudStorageBucket(intval($arFile["HANDLER_ID"]));
if ($obSourceBucket->Init())
{
$cacheImageFile = $obSourceBucket->GetFileSRC($arFile, false);
}
return false;
}
}
else //the file is already in the cloud
{
$bNeedCreatePicture = false;
$arSourceSize = array("x" => 0, "y" => 0, "width" => 0, "height" => 0);
$arDestinationSize = array("x" => 0, "y" => 0, "width" => 0, "height" => 0);
CFile::ScaleImage($arFile["WIDTH"], $arFile["HEIGHT"], $arResizeParams[0], $arResizeParams[1], $bNeedCreatePicture, $arSourceSize, $arDestinationSize);
$cacheImageFile = $obTargetBucket->GetFileSRC($callbackData["fileURL"], false);
$arImageSize = array(
$arDestinationSize["width"],
$arDestinationSize["height"],
isset($callbackData["fileSize"])? $callbackData["fileSize"]: $obTargetBucket->GetFileSize($callbackData["fileURL"]),
);
$cacheOBJ->EndDataCache(array(
"cacheImageFile" => $cacheImageFile,
"width" => $arImageSize[0],
"height" => $arImageSize[1],
"size" => $arImageSize[2],
));
$arCloudImageSizeCache[$cacheImageFile] = $arImageSize;
}
}
elseif (is_array($callbackData["cacheVARS"]))
{
$cacheImageFile = $callbackData["cacheVARS"]["cacheImageFile"];
$arImageSize = array(
$callbackData["cacheVARS"]["width"],
$callbackData["cacheVARS"]["height"],
$callbackData["cacheVARS"]["size"],
);
$arCloudImageSizeCache[$cacheImageFile] = $arImageSize;
}
else
{
return false;
}
foreach (GetModuleEvents("clouds", "OnAfterResizeImage", true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, [$callbackData["delayedResize"] ?? false, &$cacheImageFile]);
}
return true;
}