From 0e3b095b65a518a04ae6a0b872723a8110f41bed Mon Sep 17 00:00:00 2001 From: Repellent Date: Thu, 4 Dec 2025 12:32:48 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B5=20=D0=B4=D0=B0=D0=B2=D0=B0=D0=BB=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82,=20=D0=BF=D1=80=D0=B8=20=D1=83?= =?UTF-8?q?=D1=81=D0=BB=D0=BE=D0=B2=D0=B8=D0=B8=20=D1=87=D1=82=D0=BE=20?= =?UTF-8?q?=D1=82=D0=B0=D0=BA=D0=BE=D0=B5=20=D0=BF=D0=BE=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=B4=D0=BD=D0=BE=20=D0=B2=20=D1=80=D1=83=D0=B1=D1=80?= =?UTF-8?q?=D0=B8=D0=BA=D0=B5=20=D0=B8=20=D0=BE=D0=BD=D0=BE=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B2=20=D0=BC=D0=BE=D0=BC=D0=B5=D0=BD=D1=82=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fields/doc_from_rub_check/tpl/field.tpl | 1 + fields/doc_from_rub_list/tpl/field.tpl | 2 +- fields/doc_from_rub_tree/tpl/field.tpl | 2 +- fields/drop_down/tpl/field.tpl | 1 + fields/drop_down_key/tpl/field.tpl | 1 + fields/image_cascade/field.php | 63 ++++++++++++----------- fields/image_cascade/tpl/field.tpl | 1 + fields/multi_checkbox/tpl/field.tpl | 1 + fields/multi_select/field.php | 24 +++++++-- fields/multi_select/tpl/field.tpl | 2 + fields/rubrics_templates_id/tpl/field.tpl | 2 +- 11 files changed, 65 insertions(+), 35 deletions(-) diff --git a/fields/doc_from_rub_check/tpl/field.tpl b/fields/doc_from_rub_check/tpl/field.tpl index a10b489..0e1605a 100644 --- a/fields/doc_from_rub_check/tpl/field.tpl +++ b/fields/doc_from_rub_check/tpl/field.tpl @@ -35,4 +35,5 @@ + {/if} diff --git a/fields/doc_from_rub_list/tpl/field.tpl b/fields/doc_from_rub_list/tpl/field.tpl index c127347..a171f64 100644 --- a/fields/doc_from_rub_list/tpl/field.tpl +++ b/fields/doc_from_rub_list/tpl/field.tpl @@ -11,5 +11,5 @@ - + {/if} diff --git a/fields/doc_from_rub_tree/tpl/field.tpl b/fields/doc_from_rub_tree/tpl/field.tpl index 453d8f5..62403a5 100644 --- a/fields/doc_from_rub_tree/tpl/field.tpl +++ b/fields/doc_from_rub_tree/tpl/field.tpl @@ -13,5 +13,5 @@ - + {/if} diff --git a/fields/drop_down/tpl/field.tpl b/fields/drop_down/tpl/field.tpl index 05e0b5c..31902ee 100644 --- a/fields/drop_down/tpl/field.tpl +++ b/fields/drop_down/tpl/field.tpl @@ -8,4 +8,5 @@ + {/if} \ No newline at end of file diff --git a/fields/drop_down_key/tpl/field.tpl b/fields/drop_down_key/tpl/field.tpl index 5a0b6a9..9e7908c 100644 --- a/fields/drop_down_key/tpl/field.tpl +++ b/fields/drop_down_key/tpl/field.tpl @@ -9,4 +9,5 @@ + {/if} \ No newline at end of file diff --git a/fields/image_cascade/field.php b/fields/image_cascade/field.php index 15a9295..2a6d575 100644 --- a/fields/image_cascade/field.php +++ b/fields/image_cascade/field.php @@ -274,36 +274,41 @@ 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 $k => $v) // Добавлен $k для проверки заглушки + { + // Игнорируем элемент-заглушку + if ($k === '__empty__') { + continue; + } - // Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД - if (empty($field_value_new)) - { - return ''; - } - else - { - // Если картинки есть, сериализуем массив строк и сохраняем - return @serialize($field_value_new); - } - break; + 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; case 'api': if (empty($field_value)) diff --git a/fields/image_cascade/tpl/field.tpl b/fields/image_cascade/tpl/field.tpl index 29dd400..957fb17 100644 --- a/fields/image_cascade/tpl/field.tpl +++ b/fields/image_cascade/tpl/field.tpl @@ -23,6 +23,7 @@
+ {if $show_upload} {/if} diff --git a/fields/multi_checkbox/tpl/field.tpl b/fields/multi_checkbox/tpl/field.tpl index 89f5544..afd54c3 100644 --- a/fields/multi_checkbox/tpl/field.tpl +++ b/fields/multi_checkbox/tpl/field.tpl @@ -17,4 +17,5 @@ + {/if} diff --git a/fields/multi_select/field.php b/fields/multi_select/field.php index 162dd27..f1bc73d 100644 --- a/fields/multi_select/field.php +++ b/fields/multi_select/field.php @@ -37,7 +37,6 @@ $items = array_diff($items, array('')); - // ✅ ИСПРАВЛЕНИЕ 1: Безопасная десериализация if (!empty($field_value)) { $field_value = @unserialize($field_value); } else { @@ -53,7 +52,7 @@ break; case 'doc': - // ✅ ИСПРАВЛЕНИЕ 2: Безопасная десериализация (устранение unserialize error) + $items = (!empty($field_value)) ? @unserialize($field_value) : array(); @@ -155,13 +154,32 @@ break; case 'api': - // ✅ ИСПРАВЛЕНИЕ 3: Безопасная десериализация + if (empty($field_value)) return $field_value; return @unserialize($field_value); break; + case 'save': + // Убираем заглушку, если она присутствует и нет других значений + if (isset($field_value) && is_array($field_value)) + { + $field_value = array_diff($field_value, array('__EMPTY__')); + } + + if (!empty($field_value) && is_array($field_value)) + { + // Сериализуем выбранные значения + return @serialize($field_value); + } + else + { + // Если после удаления заглушки массив пуст, возвращаем пустую строку. + return ''; + } + break; + case 'name': return $AVE_Template->get_config_vars('name'); break; diff --git a/fields/multi_select/tpl/field.tpl b/fields/multi_select/tpl/field.tpl index 96bb5c8..741e799 100644 --- a/fields/multi_select/tpl/field.tpl +++ b/fields/multi_select/tpl/field.tpl @@ -1,4 +1,5 @@ {if $items} + {/if} \ No newline at end of file diff --git a/fields/rubrics_templates_id/tpl/field.tpl b/fields/rubrics_templates_id/tpl/field.tpl index 7707437..3044748 100644 --- a/fields/rubrics_templates_id/tpl/field.tpl +++ b/fields/rubrics_templates_id/tpl/field.tpl @@ -12,5 +12,5 @@ - + {/if}