+++++ fix куки сессии доки на предмет одиночных полей в рубрике
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user