Здравствуйте! Не удалось найти примера, поэтому написал сам и делюсь соображениями.
Очень часто возникает задача установить фиксированные размеры изображения при работе с инфоблоками, ниже пример не даст загрузить изображение не соответствующее требованиям:
Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "CheckSizeDetailPicture");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "CheckSizeDetailPicture");
/**
* @param $arFields
* @return bool
*/
function CheckSizeDetailPicture(&$arFields) {
if($arFields["IBLOCK_ID"] == 1 || $arFields["IBLOCK_ID"] == 9) {
$width = 920;
$height = 440;
// Получаем абсолютный путь к временному файлу
$imgPath = $arFields["DETAIL_PICTURE"]["tmp_name"];
// Получаем ширину/высоту картинки.
$arFile = getimagesize($imgPath);
if(!empty($imgPath)) {
// Проверяем размеры
if($arFile[0] != $width && $arFile[1] != $height ) {
// Выводим сообщение об ошибке в админку
global $APPLICATION;
$APPLICATION->throwException("Размеры детальной картинки должны быть " . $width . "x". $height . " пикселей.");
return false;
}
}
}
return null;
}
Для удобного поиска ошибок (данный код должен быть подключен в init.php вашим любимым способом) используйте AddMessage2Log.