+++++ fix куки сессии доки на предмет одиночных полей в рубрике

This commit is contained in:
2025-12-03 20:09:37 +05:00
parent f77db6da4c
commit d0aacab6a8
2 changed files with 59 additions and 44 deletions

View File

@@ -1065,7 +1065,7 @@
// Начинаем с предположения, что ревизия не нужна
$dorev = false;
// ИСПРАВЛЕНИЕ: Если $last_rev не массив (т.е. ревизия первая), форсируем запись.
// Если $last_rev не массив (т.е. ревизия первая), форсируем запись.
if (!is_array($last_rev)) {
$dorev = true;
}
@@ -2128,7 +2128,7 @@
$document->rubric_title = $AVE_Rubric->rubricNameByIdGet($rubric_id)->rubric_title;
//Устарело в PHP - 8.4
//$document->rubric_url_prefix = strftime(str_ireplace("%id", $maxId+1, $AVE_Rubric->rubricNameByIdGet($rubric_id)->rubric_alias));
// ИСПРАВЛЕНИЕ: Замена устаревшей strftime() на безопасные date() и str_ireplace()
// Замена устаревшей strftime() на безопасные date() и str_ireplace()
$alias_template = $AVE_Rubric->rubricNameByIdGet($rubric_id)->rubric_alias;
$alias_template = str_ireplace(
array('%Y', '%y', '%m', '%d'), // Шаблоны strftime
@@ -2182,11 +2182,11 @@
{
global $AVE_DB, $AVE_Rubric, $AVE_Template;
// --- ИНИЦИАЛИЗАЦИЯ ДЛЯ НОВЫХ ДОКУМЕНТОВ (Id=0) ---
// определение $rubric_id из входящего запроса.
// --- ИНИЦИАЛИЗАЦИЯ ДЛЯ НОВЫХ ДОКУМЕНТОВ (Id=0) ---
// определение $rubric_id из входящего запроса.
$rubric_id = isset($_REQUEST['rubric_id']) ? (int)$_REQUEST['rubric_id'] : 0;
$rubric_id = isset($_REQUEST['rubric_id']) ? (int)$_REQUEST['rubric_id'] : 0;
// 2. Выполняем запрос к БД на получение данных о документе
$document = $AVE_DB->Query("
@@ -2223,8 +2223,8 @@
$document->group_position = 0;
$document->group_title = "";
}
// -------------------------------------------------------------
// -------------------------------------------------------------
// Определяем действие, выбранное пользователем
switch ($_REQUEST['sub'])
{
@@ -2282,7 +2282,7 @@
// Если пользователь не выполнял никаких действий, а просто открыл документ для редактирования
case '':
$lang_pack = array();
$sql = $AVE_DB->Query("
@@ -2415,7 +2415,8 @@
foreach ($fields as $field_id => $row)
{
// если в документе поле есть, то записываем его
if ($doc_fields[$field_id])
// Проверяем существование ключа.
if (isset($doc_fields[$field_id]))
{
$fields[$field_id] = $doc_fields[$field_id];
}
@@ -2427,6 +2428,11 @@
$fields[$field_id] = $row;
// Инициализируем свойства группы для полей, отсутствующих в документе, чтобы избежать Undefined property в следующем цикле.
$fields[$field_id]->group_id = ($row->rubric_field_group) ? $row->rubric_field_group : 0;
$fields[$field_id]->group_position = 100;
$fields[$field_id]->group_title = '';
$AVE_DB->Query("
INSERT INTO " . PREFIX . "_document_fields
SET
@@ -2436,14 +2442,22 @@
}
}
// Переменная $row в этом цикле не определена, ее нужно заменить на $field.
// Также добавлена проверка isset() для свойств группы на случай, если предыдущая инициализация не сработала.
foreach ($fields as $field)
{
$group_id = ($field->rubric_field_group) ? $field->rubric_field_group : 0;
$fields_list[$group_id]['group_id'] = $field->group_id;
$fields_list[$group_id]['group_position'] = ($field->group_position) ? $field->group_position : 100;
$fields_list[$group_id]['group_title'] = $field->group_title;
// Проверяем существование свойства перед использованием, чтобы избежать Undefined property.
$fields_list[$group_id]['group_id'] = isset($field->group_id) ? $field->group_id : $group_id;
$fields_list[$group_id]['group_position'] = (isset($field->group_position) && $field->group_position) ? $field->group_position : 100;
$fields_list[$group_id]['group_title'] = isset($field->group_title) ? $field->group_title : '';
$fields_list[$group_id]['fields'][$field->Id]['Id'] = $field->Id;
$fields_list[$group_id]['fields'][$field->Id]['rubric_id'] = $row->rubric_id;
// Заменяем $row->rubric_id на $document->rubric_id, поскольку $row в этом месте уже содержит последнее поле, а не документ.
$fields_list[$group_id]['fields'][$field->Id]['rubric_id'] = $document->rubric_id;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_title'] = $field->rubric_field_title;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_alias'] = $field->rubric_field_alias;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_description'] = $field->rubric_field_description;
@@ -2812,7 +2826,7 @@
$document->rubric_title = $AVE_Rubric->rubricNameByIdGet($_REQUEST['rubric_id'])->rubric_title;
//Устарело в PHP - 8.4
//$document->rubric_url_prefix = strftime(str_ireplace("%id", $maxId+1, $AVE_Rubric->rubricNameByIdGet($_REQUEST['rubric_id'])->rubric_alias));
// ИСПРАВЛЕНИЕ: Замена устаревшей strftime() на безопасные date() и str_ireplace()
// Замена устаревшей strftime() на безопасные date() и str_ireplace()
$alias_template = $AVE_Rubric->rubricNameByIdGet($_REQUEST['rubric_id'])->rubric_alias;
$alias_template = str_ireplace(
array('%Y', '%y', '%m', '%d'), // Шаблоны strftime

View File

@@ -87,23 +87,23 @@
" . PREFIX . "_users
SET
last_visit = '" . $time . "',
password = '" . $hash . "',
salt = '" . $salt . "',
user_ip = '" . (int)$u_ip . "'
password = '" . $hash . "',
salt = '" . $salt . "',
user_ip = '" . (int)$u_ip . "'
WHERE
Id = '" . $row->Id . "'
");
$_SESSION['user_id'] = $row->Id;
$_SESSION['user_name'] = get_username($row->user_name, $row->firstname, $row->lastname);
$_SESSION['user_firstname'] = $row->firstname;
$_SESSION['user_lastname'] = $row->lastname;
$_SESSION['user_pass'] = $hash;
$_SESSION['user_group'] = $row->user_group;
$_SESSION['user_email'] = $row->email;
$_SESSION['user_country'] = strtoupper($row->country);
$_SESSION['user_language'] = strtolower($row->country);
$_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']);
$_SESSION['user_id'] = $row->Id;
$_SESSION['user_name'] = get_username($row->user_name, $row->firstname, $row->lastname);
$_SESSION['user_firstname'] = $row->firstname;
$_SESSION['user_lastname'] = $row->lastname;
$_SESSION['user_pass'] = $hash;
$_SESSION['user_group'] = $row->user_group;
$_SESSION['user_email'] = $row->email;
$_SESSION['user_country'] = strtoupper($row->country);
$_SESSION['user_language'] = strtolower($row->country);
$_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']);
$user_group_permissions = explode('|', preg_replace('/\s+/', '', $row->user_group_permission));
@@ -200,9 +200,9 @@
$_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']);
}
define('UID', $_SESSION['user_id']);
define('UID', $_SESSION['user_id']);
define('UGROUP', $_SESSION['user_group']);
define('UNAME', $_SESSION['user_name']);
define('UNAME', $_SESSION['user_name']);
return true;
}
@@ -250,6 +250,7 @@
usr.password,
usr.status,
usrs.ip AS ip,
usrs.Id AS session_id,
grp.user_group_permission
FROM
" . PREFIX . "_users AS usr
@@ -293,30 +294,30 @@
" . PREFIX . "_users_session
SET
last_activ = '" . time() . "',
ip = '" . (int)ip2long($_SERVER['REMOTE_ADDR']) . "'
ip = '" . (int)ip2long($_SERVER['REMOTE_ADDR']) . "'
WHERE
Id = '" . $row->Id . "'
Id = '" . $row->session_id . "'
");
$_SESSION['user_id'] = (int)$user_id;
$_SESSION['user_name'] = get_username($row->user_name, $row->firstname, $row->lastname);
$_SESSION['user_firstname'] = $row->firstname;
$_SESSION['user_lastname'] = $row->lastname;
$_SESSION['user_pass'] = $row->password;
$_SESSION['user_group'] = (int)$row->user_group;
$_SESSION['user_email'] = $row->email;
$_SESSION['user_country'] = strtoupper($row->country);
$_SESSION['user_language'] = strtolower($row->country);
$_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']);
$_SESSION['user_id'] = (int)$user_id;
$_SESSION['user_name'] = get_username($row->user_name, $row->firstname, $row->lastname);
$_SESSION['user_firstname'] = $row->firstname;
$_SESSION['user_lastname'] = $row->lastname;
$_SESSION['user_pass'] = $row->password;
$_SESSION['user_group'] = (int)$row->user_group;
$_SESSION['user_email'] = $row->email;
$_SESSION['user_country'] = strtoupper($row->country);
$_SESSION['user_language'] = strtolower($row->country);
$_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']);
$user_group_permissions = explode('|', preg_replace('/\s+/', '', $row->user_group_permission));
foreach ($user_group_permissions as $user_group_permission)
$_SESSION[$user_group_permission] = 1;
define('UID', $_SESSION['user_id']);
define('UID', $_SESSION['user_id']);
define('UGROUP', $_SESSION['user_group']);
define('UNAME', $_SESSION['user_name']);
define('UNAME', $_SESSION['user_name']);
return true;
}