From f77db6da4c5dc957c54a4b3c69f49a9c67864cd1 Mon Sep 17 00:00:00 2001 From: Repellent Date: Wed, 3 Dec 2025 18:10:42 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class/class.docs.php | 84 +++++++++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 28 deletions(-) diff --git a/class/class.docs.php b/class/class.docs.php index 20da461..c614b30 100644 --- a/class/class.docs.php +++ b/class/class.docs.php @@ -260,10 +260,6 @@ } - /** - * Метод, предназначенный для получения списка документов в Панели управления - * - */ /** * Метод, предназначенный для получения списка документов в Панели управления * @@ -2177,7 +2173,7 @@ } } - /** +/** * Метод, предназначенный для редактирования документа * * @param int $document_id идентификатор Документа @@ -2186,12 +2182,55 @@ { global $AVE_DB, $AVE_Rubric, $AVE_Template; + // --- ИНИЦИАЛИЗАЦИЯ ДЛЯ НОВЫХ ДОКУМЕНТОВ (Id=0) --- + + // определение $rubric_id из входящего запроса. + + $rubric_id = isset($_REQUEST['rubric_id']) ? (int)$_REQUEST['rubric_id'] : 0; + + // 2. Выполняем запрос к БД на получение данных о документе + $document = $AVE_DB->Query(" + SELECT * + FROM + " . PREFIX . "_documents + WHERE + Id = '" . $document_id . "' + ")->FetchRow(); + + // ПОЛНАЯ ИНИЦИАЛИЗАЦИЯ $document, если он не найден (для нового документа). + + if ($document === null) { + $document = new stdClass(); + + // Обязательные свойства для логики и сохранения: + $document->Id = 0; + $document->document_author_id = $_SESSION['user_id']; + $document->rubric_id = $rubric_id; + $document->document_status = 0; + $document->document_level = 0; + $document->document_template = 0; + $document->document_tpl_name = ''; + $document->document_alias = ''; + $document->document_parent = 0; + $document->document_published = 0; + $document->document_expire = 0; + $document->document_lang_group = 0; + $document->document_title = ""; + $document->document_meta_keywords = ""; + $document->document_meta_description = ""; + $document->document_breadcrum_title = ""; + $document->group_id = 0; + $document->group_position = 0; + $document->group_title = ""; + } + // ------------------------------------------------------------- + // Определяем действие, выбранное пользователем switch ($_REQUEST['sub']) { // Если была нажата кнопка Сохранить изменения case 'save': - + $row = $AVE_DB->Query(" SELECT rubric_id, @@ -2201,8 +2240,12 @@ WHERE Id = '" . $document_id . "' ")->FetchRow(); + + // Гарантируем, что используем корректный rubric_id для сохранения, + // в случае нового документа - тот, что мы инициализировали из REQUEST. + $current_rubric_id = ($row && isset($row->rubric_id)) ? $row->rubric_id : $document->rubric_id; - $this->documentSave($row->rubric_id, $document_id, $_POST, true); + $this->documentSave($current_rubric_id, $document_id, $_POST, true); if (isset($_REQUEST['closeafter']) && $_REQUEST['closeafter'] == 1) { @@ -2224,7 +2267,7 @@ if (! isAjax()) { - header('Location:index.php?do=docs&action=after&document_id=' . $document_id . '&rubric_id=' . $row->rubric_id . '&cp=' . SESSION); + header('Location:index.php?do=docs&action=after&document_id=' . $document_id . '&rubric_id=' . $current_rubric_id . '&cp=' . SESSION); } else { @@ -2237,23 +2280,9 @@ } exit; - // Если пользователь не выполнял никаких действий, а просто открыл документ для редактирования + // Если пользователь не выполнял никаких действий, а просто открыл документ для редактирования case '': - // Выполняем запрос к БД на получение данных о документе - $document = $AVE_DB->Query(" - SELECT * - FROM - " . PREFIX . "_documents - WHERE - Id = '" . $document_id . "' - ")->FetchRow(); - - // Проверяем, был ли найден документ - if ($document === null) { - header('Location:index.php?do=docs&rubric_id=' . $rubric_id . '&cp=' . SESSION); - exit; - } - + $lang_pack = array(); $sql = $AVE_DB->Query(" @@ -2280,7 +2309,7 @@ $show = true; - // Проверяем права доступа к документу + // Проверяем права доступа к документу $this->documentPermissionFetch($document->rubric_id); // запрещаем доступ, @@ -2446,8 +2475,8 @@ $document_rev = array(); - if ( (isset($_SESSION[$document->rubric_id . '_delrev']) && $_SESSION[$document->rubric_id . '_delrev'] == 1) - || (isset($_SESSION[$document->rubric_id . '_alles']) && $_SESSION[$document->rubric_id . '_alles'] == 1) + if ( (isset($_SESSION[$document->rubric_id . '_delrev']) && $_SESSION[$document->rubric_id . '_delrev'] == 1) + || (isset($_SESSION[$document->rubric_id . '_alles']) && $_SESSION[$document->rubric_id . '_alles'] == 1) || (defined('UGROUP') && UGROUP == 1) ) { $document->canDelRev = 1; @@ -2664,7 +2693,6 @@ exit; // Если пользователь не выполнял никаких действий, а просто открыл документ для копирования - // Если пользователь не выполнял никаких действий, а просто открыл документ для редактирования case '': // Выполняем запрос к БД на получение данных о документе $document = $AVE_DB->Query("