From 45258f691bdb22ae7f7860a00d1ce043816eeee3 Mon Sep 17 00:00:00 2001 From: Repellent Date: Fri, 23 Jan 2026 13:56:02 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B9=20=D0=BD=D0=B0=20utf8mb4=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D1=8F=D1=82=D1=8C=20=D1=8D?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B7=D0=B8=20=E2=9A=A0=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class/comment.php | 13 +++++++++++++ sql.php | 7 ++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/class/comment.php b/class/comment.php index 7d6524f..3b00f29 100644 --- a/class/comment.php +++ b/class/comment.php @@ -304,6 +304,8 @@ function commentListShow($tpl_dir) if ($assign['no_read_permission'] == 0) { + // ПЕРЕКЛЮЧАЕМ РЕЖИМ ЧТЕНИЯ НА utf8mb4 + $AVE_DB->Query("SET NAMES 'utf8mb4'"); $assign['comment_max_chars'] = $settings['comment_max_chars']; $assign['im'] = $settings['comment_use_antispam']; $assign['comment_allowed_extensions'] = $settings['comment_allowed_extensions'] ?? 'jpg,jpeg,png,gif,webp'; @@ -732,6 +734,8 @@ if ($is_allowed_ext && !$is_dangerous && $file['size'] > 0 && $file['size'] <= $ // 4. Подготавливаем для вставки в SQL запрос $new_comment['comment_text'] = addslashes($comment_text_safe); + + $AVE_DB->Query("SET NAMES 'utf8mb4'"); $AVE_DB->Query("INSERT INTO " . PREFIX . "_module_comment_info (`" . implode('`,`', array_keys($new_comment)) ."`) VALUES ('" . implode("','", $new_comment) . "')"); $new_comment['Id'] = $AVE_DB->InsertId(); @@ -979,6 +983,9 @@ if (!$can_upload && isset($_FILES['comment_image'])) { // Обновление базы данных $new_status = $is_admin ? (int)$row['comment_status'] : ($row['comment_need_approve'] == '1' ? 0 : 1); + // ПЕРЕКЛЮЧАЕМ РЕЖИМ ПЕРЕД ОБНОВЛЕНИЕМ: + $AVE_DB->Query("SET NAMES 'utf8mb4'"); + $AVE_DB->Query(" UPDATE " . PREFIX . "_module_comment_info SET @@ -1473,6 +1480,9 @@ else { function commentAdminListShow($tpl_dir) { global $AVE_DB, $AVE_Template; + + // ПЕРЕКЛЮЧАЕМ РЕЖИМ СРАЗУ ДЛЯ ВСЕЙ АДМИНКИ МОДУЛЯ + $AVE_DB->Query("SET NAMES 'utf8mb4'"); $session_id = SESSION ?? ''; @@ -1797,6 +1807,9 @@ function commentAdminPostEdit($tpl_dir) { global $AVE_DB, $AVE_Template; + // ПЕРЕКЛЮЧАЕМ КОДИРОВКУ + $AVE_DB->Query("SET NAMES 'utf8mb4'"); + $post_sub = $_POST['sub'] ?? ''; $request_id = (int)($_REQUEST['Id'] ?? 0); $is_ajax = isset($_REQUEST['ajax']); diff --git a/sql.php b/sql.php index ec2ef92..e3ac0c7 100644 --- a/sql.php +++ b/sql.php @@ -3,6 +3,7 @@ /** * AVE.cms - Модуль Комментарии + * Исправлено: Поддержка Emoji (utf8mb4) */ $module_sql_install = array(); @@ -48,7 +49,7 @@ `comment_allow_self_answer` tinyint(1) NOT NULL DEFAULT '0', `comment_sort_order` varchar(20) NOT NULL DEFAULT 'ASC', PRIMARY KEY (`Id`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=1; + ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci PACK_KEYS=0 AUTO_INCREMENT=1; "; $module_sql_install[] = " @@ -77,7 +78,7 @@ KEY `parent_id` (`parent_id`), KEY `comment_status` (`comment_status`), KEY `anon_key` (`anon_key`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=1; + ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci PACK_KEYS=0 AUTO_INCREMENT=1; "; $module_sql_install[] = " @@ -94,7 +95,7 @@ KEY `anon_key` (`anon_key`), KEY `user_id` (`user_id`), KEY `remote_addr` (`remote_addr`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=1; + ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci PACK_KEYS=0 AUTO_INCREMENT=1; "; $module_sql_install[] = "INSERT INTO `%%PRFX%%_module_comments` VALUES (1, 1000, '1,3', '1,2,3,4', '0', '1', '1' , '0', '', 1, 0, '', 1, 0, '', 0, 'jpg,jpeg,png,gif,webp', 2048, 5, 0, 1, 0, 0, 0, 0, 60, 30, 5, 0, 'ASC');";