@@ -268,7 +268,7 @@
{/if}
- {foreach from=$field_group.fields item=field}
+ {foreach from=$field_group.fields item=field}
{$field.Id}
@@ -304,7 +304,7 @@
-
+
{if $smarty.request.action == 'tmpls_edit'}
{#RUBRIK_OR#}
diff --git a/fields/doc_from_rub_all/field.php b/fields/doc_from_rub_all/field.php
index aa7b1f8..c5f4a72 100644
--- a/fields/doc_from_rub_all/field.php
+++ b/fields/doc_from_rub_all/field.php
@@ -16,8 +16,8 @@
{
global $AVE_DB, $AVE_Template;
- $fld_dir = dirname(__FILE__) . '/';
- $tpl_dir = $fld_dir . 'tpl/';
+ $fld_dir = dirname(__FILE__) . '/';
+ $tpl_dir = $fld_dir . 'tpl/';
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -30,7 +30,8 @@
switch ($action)
{
case 'edit':
- if (isset($default))
+
+ if (!empty($default))
{
$sql = $AVE_DB->Query("
SELECT
@@ -55,6 +56,7 @@
}
else
{
+ // Если $default пуст, выводим ошибку, а не выполняем SQL
$AVE_Template->assign('error', $AVE_Template->get_config_vars('error'));
}
diff --git a/fields/doc_from_rub_check/field.php b/fields/doc_from_rub_check/field.php
index fa6dab4..63bcc31 100644
--- a/fields/doc_from_rub_check/field.php
+++ b/fields/doc_from_rub_check/field.php
@@ -16,8 +16,8 @@
{
global $AVE_DB, $AVE_Template;
- $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') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -31,7 +31,8 @@
switch ($action)
{
case 'edit':
- if (isset($default))
+
+ if (!empty($default))
{
$parent = $AVE_DB->Query("
SELECT
@@ -71,6 +72,7 @@
}
else
{
+ // Этот блок выполняется, если $default пуст.
$AVE_Template->assign('error', $AVE_Template->get_config_vars('error'));
}
diff --git a/fields/image_mega/tpl/field.tpl b/fields/image_mega/tpl/field.tpl
index 243f19e..8a88513 100644
--- a/fields/image_mega/tpl/field.tpl
+++ b/fields/image_mega/tpl/field.tpl
@@ -25,7 +25,7 @@
{assign var=mega_new value="load" scope="global"}
{/if}
-
+
{if $show_upload}
diff --git a/fields/multi_select/field.php b/fields/multi_select/field.php
index 4b093fa..162dd27 100644
--- a/fields/multi_select/field.php
+++ b/fields/multi_select/field.php
@@ -16,8 +16,8 @@
{
global $AVE_Template;
- $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') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -37,7 +37,12 @@
$items = array_diff($items, array(''));
- @$field_value = unserialize($field_value);
+ // ✅ ИСПРАВЛЕНИЕ 1: Безопасная десериализация
+ if (!empty($field_value)) {
+ $field_value = @unserialize($field_value);
+ } else {
+ $field_value = array();
+ }
$AVE_Template->assign('items', $items);
$AVE_Template->assign('field_id', $field_id);
@@ -48,8 +53,9 @@
break;
case 'doc':
- $items = (isset($field_value))
- ? unserialize($field_value)
+ // ✅ ИСПРАВЛЕНИЕ 2: Безопасная десериализация (устранение unserialize error)
+ $items = (!empty($field_value))
+ ? @unserialize($field_value)
: array();
if ($items != false)
@@ -101,7 +107,7 @@
break;
case 'req':
- $items = (isset($field_value)) ? unserialize($field_value) : array();
+ $items = (!empty($field_value)) ? @unserialize($field_value) : array();
if ($items != false)
{
@@ -149,10 +155,11 @@
break;
case 'api':
+ // ✅ ИСПРАВЛЕНИЕ 3: Безопасная десериализация
if (empty($field_value))
return $field_value;
- return unserialize($field_value);
+ return @unserialize($field_value);
break;
case 'name':
diff --git a/fields/multi_select/tpl/field.tpl b/fields/multi_select/tpl/field.tpl
index 027c0da..96bb5c8 100644
--- a/fields/multi_select/tpl/field.tpl
+++ b/fields/multi_select/tpl/field.tpl
@@ -1,7 +1,7 @@
{if $items}
{else}
diff --git a/fields/rubrics/field.php b/fields/rubrics/field.php
index bc7a030..6d66bbe 100644
--- a/fields/rubrics/field.php
+++ b/fields/rubrics/field.php
@@ -1,23 +1,23 @@
Query("
SELECT
@@ -57,6 +58,7 @@ function get_field_rubrics($field_value, $action, $field_id = 0, $tpl = '', $tpl
}
else
{
+ // Если $default пуст, выводим ошибку, а не выполняем SQL
$AVE_Template->assign('error', $AVE_Template->get_config_vars('error'));
}
diff --git a/fields/single_line_numeric_three/field.php b/fields/single_line_numeric_three/field.php
index ac85871..4dd2828 100644
--- a/fields/single_line_numeric_three/field.php
+++ b/fields/single_line_numeric_three/field.php
@@ -11,13 +11,13 @@
* @license GPL v.2
*/
- // Однострочное числовое
+ // Однострочное числовое (Три значения)
function get_field_single_line_numeric_three ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl=null)
{
global $AVE_Template;
- $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') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -29,12 +29,26 @@
switch ($action)
{
case 'edit':
+
+ // Инициализируем $field_value как массив с 3-мя пустыми строками по умолчанию.
+ $safe_values = ['', '', ''];
+
if (! empty($field_value))
- $field_value = explode('|', $field_value);
+ {
+ // Если значение не пусто, разделяем его на элементы
+ $values = explode('|', $field_value);
+
+ // Гарантируем, что массив содержит минимум 3 элемента, используя безопасный доступ (?? '')
+ $safe_values = [
+ $values[0] ?? '',
+ $values[1] ?? '',
+ $values[2] ?? ''
+ ];
+ }
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('field_id', $field_id);
- $AVE_Template->assign('field_value', $field_value);
+ $AVE_Template->assign('field_value', $safe_values); // Присваиваем гарантированный массив
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
@@ -113,15 +127,21 @@
break;
case 'save':
+ // Обрабатываем массив из трех значений, очищаем и собираем в строку '|'
$save = array();
if (is_array($field_value))
{
- foreach ($field_value AS $k => $v)
- {
- $save[] = preg_replace('/[^\d.]/', '', $v);
- }
+ // Очищаем каждое из трех значений и сохраняем
+ $value_0 = preg_replace('/[^\d.]/','', $field_value[0] ?? '');
+ $value_1 = preg_replace('/[^\d.]/','', $field_value[1] ?? '');
+ $value_2 = preg_replace('/[^\d.]/','', $field_value[2] ?? '');
+ $save = [$value_0, $value_1, $value_2];
}
+ elseif (!empty($field_value)) {
+ // Если не массив, но не пусто, сохраняем как есть (для совместимости)
+ $save[] = preg_replace('/[^\d.]/','', $field_value);
+ }
return empty($save) ? '' : implode('|', $save);
diff --git a/fields/single_line_numeric_three/tpl/field-doc.tpl b/fields/single_line_numeric_three/tpl/field-doc.tpl
index e0b3cf7..16b7d92 100644
--- a/fields/single_line_numeric_three/tpl/field-doc.tpl
+++ b/fields/single_line_numeric_three/tpl/field-doc.tpl
@@ -1 +1 @@
-{$field_value.0} - {$field_value.1} - {$field_value.2}
\ No newline at end of file
+{$field_value.0|default:''} - {$field_value.1|default:''} - {$field_value.2|default:''}
\ No newline at end of file
diff --git a/fields/single_line_numeric_two/field.php b/fields/single_line_numeric_two/field.php
index 94b3d57..062a6d0 100644
--- a/fields/single_line_numeric_two/field.php
+++ b/fields/single_line_numeric_two/field.php
@@ -11,13 +11,13 @@
* @license GPL v.2
*/
- // Однострочное числовое
+ // Однострочное числовое (Два значения)
function get_field_single_line_numeric_two ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl=null)
{
global $AVE_Template;
- $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') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -29,12 +29,25 @@
switch ($action)
{
case 'edit':
+
+ // Инициализируем $field_value как массив с 2-мя пустыми строками по умолчанию.
+ $safe_values = ['', ''];
+
if (! empty($field_value))
- $field_value = explode('|', $field_value);
+ {
+ // Если значение не пусто, разделяем его на элементы
+ $values = explode('|', $field_value);
+
+ // Гарантируем, что массив содержит минимум 2 элемента, используя безопасный доступ
+ $safe_values = [
+ $values[0] ?? '',
+ $values[1] ?? ''
+ ];
+ }
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('field_id', $field_id);
- $AVE_Template->assign('field_value', $field_value);
+ $AVE_Template->assign('field_value', $safe_values); // Присваиваем гарантированный массив
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
@@ -113,15 +126,20 @@
break;
case 'save':
+ // Обрабатываем массив из двух значений, очищаем и собираем в строку '|'
$save = array();
if (is_array($field_value))
{
- foreach ($field_value AS $k => $v)
- {
- $save[] = preg_replace('/[^\d.]/', '', $v);
- }
+ // Очищаем каждое из двух значений и сохраняем
+ $value_0 = preg_replace('/[^\d.]/','', $field_value[0] ?? '');
+ $value_1 = preg_replace('/[^\d.]/','', $field_value[1] ?? '');
+ $save = [$value_0, $value_1];
}
+ // Если пришла не строка, но не массив, возвращаем то, что есть (для совместимости)
+ elseif (!empty($field_value)) {
+ $save[] = preg_replace('/[^\d.]/','', $field_value);
+ }
return empty($save) ? '' : implode('|', $save);
diff --git a/fields/single_line_numeric_two/tpl/field-doc.tpl b/fields/single_line_numeric_two/tpl/field-doc.tpl
index a992a59..d33aee1 100644
--- a/fields/single_line_numeric_two/tpl/field-doc.tpl
+++ b/fields/single_line_numeric_two/tpl/field-doc.tpl
@@ -1 +1 @@
-{$field_value.0} - {$field_value.1}
\ No newline at end of file
+{$field_value.0|default:''} - {$field_value.1|default:''}
\ No newline at end of file
diff --git a/fields/tags/field.php b/fields/tags/field.php
index 90d8055..f33e988 100644
--- a/fields/tags/field.php
+++ b/fields/tags/field.php
@@ -16,15 +16,19 @@
{
global $AVE_DB, $AVE_Template;
- $fld_dir = dirname(__FILE__) . '/';
- $tpl_dir = $fld_dir . 'tpl/';
+ $fld_dir = dirname(__FILE__) . '/';
+ $tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$rubric_id = ($rubric_id > 0)
? $rubric_id
- : ($_REQUEST['rubric_id']
+ : (isset($_REQUEST['rubric_id']) && $_REQUEST['rubric_id']
? (int)$_REQUEST['rubric_id']
- : $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell());
+ : (isset($_REQUEST['Id'])
+ ? $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell()
+ : 0
+ )
+ );
$lang_file = $fld_dir . 'lang/' . (defined('ACP')
? $_SESSION['admin_language']
@@ -181,28 +185,34 @@
{
function tagsValue ($field_value)
{
- // Если есть выделенные теги
- if (! empty($field_value['tags']))
- $tags = $field_value['tags'];
- else
- $tags = array();
+ $tags = array();
- unset ($tags['other']);
-
- // Если есть теги через зяпятую
- if (! empty($field_value['tags']['other']))
+ // 1. Собираем теги по галочкам (если есть)
+ if (isset($field_value['tags']) && is_array($field_value['tags']))
+ {
+ $tags_checked = $field_value['tags'];
+ unset ($tags_checked['other']);
+ $tags = $tags_checked;
+ }
+
+ // 2. Собираем новые теги через запятую
+ if (isset($field_value['tags']['other']) && ! empty($field_value['tags']['other']))
{
$tags_new = explode(',', $field_value['tags']['other']);
$tags_new = array_map('trim', $tags_new);
+ $tags_new = array_diff($tags_new, array(''));
}
else
$tags_new = array();
- // Совмещаем массивы
+ // 3. Совмещаем массивы и делаем значения уникальными
$tags = array_merge($tags, $tags_new);
-
- // Делаем уникальные значения
$field_value = array_unique($tags);
+
+ // Если все теги пусты, возвращаем пустой массив
+ if (empty($field_value)) {
+ return array();
+ }
return $field_value;
}
@@ -221,19 +231,26 @@
$AVE_Document = new AVE_Document();
}
- foreach ($data['feld'] AS $_k => $_v)
- {
- if (array_key_exists('tags', $_v))
- {
- $tags = tagsValue($_v);
+ $document_id = isset($data['document_id']) ? (int)$data['document_id'] : 0;
+ $rubric_id = isset($data['rubric_id']) ? (int)$data['rubric_id'] : 0;
+
+ if ($document_id > 0 && $rubric_id > 0)
+ {
+ foreach ($data['feld'] AS $_k => $_v)
+ {
+ if (is_array($_v) && array_key_exists('tags', $_v))
+ {
+ $tags = tagsValue($_v);
- if (! empty($tags))
- {
- $tags = implode(',', $tags);
- $AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags);
- }
- }
- }
+ if (! empty($tags))
+ {
+ $tags = implode(',', $tags);
+ // Используем безопасные переменные $document_id и $rubric_id
+ $AVE_Document->saveTags($document_id, $rubric_id, $tags);
+ }
+ }
+ }
+ }
}
}
?>
\ No newline at end of file
diff --git a/fields/text_to_image/class.txtimage.php b/fields/text_to_image/class.txtimage.php
index c00f629..e07b84e 100644
--- a/fields/text_to_image/class.txtimage.php
+++ b/fields/text_to_image/class.txtimage.php
@@ -10,7 +10,9 @@
ob_start();
ob_implicit_flush(0);
-define('BASE_DIR', str_replace("\\", "/", dirname(dirname(dirname(__FILE__)))));
+if (!defined('BASE_DIR')) {
+ define('BASE_DIR', str_replace("\\", "/", dirname(dirname(dirname(__FILE__)))));
+}
require_once(BASE_DIR . '/inc/init.php');
diff --git a/fields/youtube/tpl/field-doc.tpl b/fields/youtube/tpl/field-doc.tpl
index fb8cc42..4c43d69 100644
--- a/fields/youtube/tpl/field-doc.tpl
+++ b/fields/youtube/tpl/field-doc.tpl
@@ -1,14 +1,14 @@
{if isset($param.4) && $param.4 == 'embed'}
- |