AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DSOnBeforeIBlockElementUpdate");
function DSOnBeforeIBlockElementUpdate(&$arFields)
{
global $USER;
//Проверяем, нужно ли обновлять картинку.
//Это необходимо, что бы при обмене с 1С картинки товаров, которые ранее уже были загружены, не загружались заново.
//Иначе при повторной загрузке у картинок поменяется имя и старые картинки будут недоступны в поисковике.
if(is_array($arFields) && isset($arFields['IBLOCK_ID']) && (int)$arFields['IBLOCK_ID']==17)
{
$PRODUCT_ID = (int)$arFields['ID'];
$DATETIME = date("d.m.Y H:i:s");
$res = CIBlockElement::GetByID($PRODUCT_ID);
if($ar_res = $res->GetNext())
{
//Анонсная картинка
if(isset($arFields['PREVIEW_PICTURE']) && is_array($arFields['PREVIEW_PICTURE']) && $arFields['PREVIEW_PICTURE']['name']!='' && isset($ar_res['PREVIEW_PICTURE']) && (int)$ar_res['PREVIEW_PICTURE']>0)
{
$rsFile = CFile::GetByID((int)$ar_res['PREVIEW_PICTURE']);
if($arFile = $rsFile->Fetch())
{
//$new_file_name = $arFields['PREVIEW_PICTURE']['name'];
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/logs/test/updateElement_".date("Ymd").".txt", json_encode([$DATETIME,$PRODUCT_ID,"PREVIEW_PICTURE","NEWFILE"=>$arFields['PREVIEW_PICTURE'],"OLDFILE"=>$arFile])."\n", FILE_APPEND | LOCK_EX);
//
//Если имя старого файла совпадает с именем нового файла, тогда файл не обновляем
if(intval($arFields['PREVIEW_PICTURE']['size'])==intval($arFile['FILE_SIZE']))
{
unset($arFields['PREVIEW_PICTURE']);
CEventLog::Add(array(
"SEVERITY" => "INFO",
"AUDIT_TYPE_ID" => "OnBeforeIBlockElementUpdate",
"MODULE_ID" => "iblock",
"ITEM_ID" => $PRODUCT_ID,
"USER_ID" => $USER->GetID(),
"DESCRIPTION" => "PREVIEW_PICTURE картинка элемента совпадает с текущей по размеру.",
"SITE_ID" => "s1"
));
}
}
}
//Детальная картинка
if(isset($arFields['DETAIL_PICTURE']) && is_array($arFields['DETAIL_PICTURE']) && $arFields['DETAIL_PICTURE']['name']!='' && isset($ar_res['DETAIL_PICTURE']) && (int)$ar_res['DETAIL_PICTURE']>0)
{
$rsFile = CFile::GetByID((int)$ar_res['DETAIL_PICTURE']);
if($arFile = $rsFile->Fetch())
{
//$new_file_name = $arFields['DETAIL_PICTURE']['name'];
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/logs/test/updateElement_".date("Ymd").".txt", json_encode([$DATETIME,$PRODUCT_ID,"DETAIL_PICTURE","NEWFILE"=>$arFields['DETAIL_PICTURE'],"OLDFILE"=>$arFile])."\n", FILE_APPEND | LOCK_EX);
//Если имя старого файла совпадает с именем нового файла, тогда файл не обновляем
if(intval($arFields['DETAIL_PICTURE']['size'])==intval($arFile['FILE_SIZE']))
{
unset($arFields['DETAIL_PICTURE']);
CEventLog::Add(array(
"SEVERITY" => "INFO",
"AUDIT_TYPE_ID" => "OnBeforeIBlockElementUpdate",
"MODULE_ID" => "iblock",
"ITEM_ID" => $PRODUCT_ID,
"USER_ID" => $USER->GetID(),
"DESCRIPTION" => "DETAIL_PICTURE картинка элемента совпадает с текущей по размеру.",
"SITE_ID" => "s1"
));
}
}
}
}
}
}