fix поля Изображение Каскад

This commit is contained in:
2025-12-03 22:19:18 +05:00
parent d0aacab6a8
commit 667c7d3fed

View File

@@ -17,8 +17,8 @@
global $AVE_Template, $img_pixel;
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$lang_file = $fld_dir . 'lang/' . (defined('ACP')
@@ -42,9 +42,12 @@
if ($_REQUEST['action'] != 'new')
{
$items = unserialize($field_value);
if($items != false)
if (!empty($field_value))
{
$items = @unserialize($field_value);
}
if($items !== false && is_array($items))
{
foreach($items as $k => $v)
{
@@ -73,7 +76,7 @@
$show_upload = true;
// Строка 76: разделяем строку на массив
// Строка 76: разделяем строку на массив
$default = explode('|', $default);
// Строка 78: используем оператор объединения с null (??) для безопасного извлечения значений
@@ -125,14 +128,21 @@
break;
case 'doc':
$items = array();
$items = (isset($field_value))
? unserialize($field_value)
: array();
if (!empty($field_value))
{
$temp_items = @unserialize($field_value);
if ($temp_items !== false)
{
$items = $temp_items;
}
}
$res = array();
if ($items != false)
if (!empty($items))
{
foreach ($items as $image_item)
{
@@ -156,13 +166,13 @@
$tpl
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
function($m) {
return watermarks($m[1], $m[2], $m[3]);
},
$image_item
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
function($m) {
return watermarks($m[1], $m[2], $m[3]);
},
$image_item
);
$image_item = preg_replace_callback('/\[tag:([r|c|f|t|s]\d+x\d+r*):(.+?)]/', 'callback_make_thumbnail', $image_item);
}
@@ -192,11 +202,20 @@
break;
case 'req':
$items = unserialize($field_value);
$items = array();
if (!empty($field_value))
{
$temp_items = @unserialize($field_value);
if ($temp_items !== false)
{
$items = $temp_items;
}
}
$res = array();
if ($items != false)
if (!empty($items))
{
foreach ($items as $image_item)
{
@@ -220,13 +239,13 @@
$tpl
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
function($m) {
return watermarks($m[1], $m[2], $m[3]);
},
$image_item
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
function($m) {
return watermarks($m[1], $m[2], $m[3]);
},
$image_item
);
$image_item = preg_replace_callback('/\[tag:([r|c|f]\d+x\d+r*):(.+?)]/', 'callback_make_thumbnail', $image_item);
}
@@ -255,36 +274,36 @@
break;
case 'save':
// Инициализируем $field_value_new как пустой массив.
$field_value_new = [];
// Гарантируем, что $field_value является массивом перед foreach
$field_value = is_array($field_value) ? $field_value : [];
foreach ($field_value as $v)
{
if (! empty($v['url']))
{
// Убедимся, что данные очищены перед сериализацией
$description = $v['descr'] ? stripslashes(htmlspecialchars($v['descr'], ENT_QUOTES)) : '';
// Собираем элемент в строку: URL|DESCR
$field_value_new[] = $v['url'] . ($description ? '|' . $description : '');
}
}
case 'save':
// Инициализируем $field_value_new как пустой массив.
$field_value_new = [];
// Гарантируем, что $field_value является массивом перед foreach
$field_value = is_array($field_value) ? $field_value : [];
foreach ($field_value as $v)
{
if (! empty($v['url']))
{
// Убедимся, что данные очищены перед сериализацией
$description = $v['descr'] ? stripslashes(htmlspecialchars($v['descr'], ENT_QUOTES)) : '';
// Собираем элемент в строку: URL|DESCR
$field_value_new[] = $v['url'] . ($description ? '|' . $description : '');
}
}
// Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД
if (empty($field_value_new))
{
return '';
}
else
{
// Если картинки есть, сериализуем массив строк и сохраняем
return @serialize($field_value_new);
}
break;
// Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД
if (empty($field_value_new))
{
return '';
}
else
{
// Если картинки есть, сериализуем массив строк и сохраняем
return @serialize($field_value_new);
}
break;
case 'api':
if (empty($field_value))
@@ -294,9 +313,9 @@ case 'save':
if (! empty($field_value))
{
$images = unserialize($field_value);
$images = @unserialize($field_value);
if (! $images)
if ($images === false) // Проверка на неудачную десериализацию
return false;
foreach ($images AS $k => $v)
@@ -304,8 +323,9 @@ case 'save':
$_item = explode('|', $v);
$items[$k] = [
'url' => $_item[0],
'descr' => (isset($_item[1]) ? $_item[2] : ''),
'url' => $_item[0],
// Проверка на существование индекса [1]
'descr' => (isset($_item[1]) ? $_item[1] : ''),
];
}
}
@@ -333,11 +353,11 @@ case 'save':
$replace[] = date('Y');
$default = explode('|', $default);
// извлечение элементов массива $default
$path_upload = $default[0] ?? '';
$watermark = $default[1] ?? false;
$position = $default[2] ?? null;
$transparency = $default[3] ?? null;
// извлечение элементов массива $default
$path_upload = $default[0] ?? '';
$watermark = $default[1] ?? false;
$position = $default[2] ?? null;
$transparency = $default[3] ?? null;
if (! empty($path_upload))
$path_upload = str_replace($search, $replace, $path_upload);