From 35a39031e0816d87997e3e1ef93362d3ad3112ce Mon Sep 17 00:00:00 2001 From: Repellent Date: Thu, 8 Jan 2026 10:11:18 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=B0=D0=B3=D0=B8=D0=BD=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D0=B2=D0=B5=D0=BD=20=D1=87=D0=B5=D0=BA=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=D1=81=20=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=BF=D0=BE=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=BD=D1=83=D1=8E=20=D0=BD=D0=B0=D0=B2=D0=B8=D0=B3?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B0=20=D1=81=D0=B0=D0=BC=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BD=D1=8B=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class/comment.php | 90 ++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/class/comment.php b/class/comment.php index 4abacca..1da207d 100644 --- a/class/comment.php +++ b/class/comment.php @@ -297,49 +297,59 @@ function commentListShow($tpl_dir) - if ($settings['comment_use_page_nav'] == 1) - { - $limit = (int)$settings['comment_page_nav_count']; - $start = get_current_page() * $limit - $limit; +if ($settings['comment_use_page_nav'] == 1) +{ + $limit = (int)$settings['comment_page_nav_count']; - // 1. Считаем только РОДИТЕЛЕЙ для пагинации - $num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0'")->GetCell(); + // Если лимит включен, но равен 0 — это то же самое, что лимит выключен + if ($limit <= 0) + { + $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' " . ($user_group == 1 ? '' : "AND comment_status = '1'") . " ORDER BY comment_published ASC"); + $page_nav = ''; + } + else + { + $start = get_current_page() * $limit - $limit; - // 2. Основной запрос: выбираем ВСЮ ветку (родителя и всё, что под ним) - // ищем записи, которые либо сами являются нужными родителями, - // либо имеют parent_id, указывающий на них (включая вложенность) - $sql = $AVE_DB->Query(" - SELECT * FROM " . PREFIX . "_module_comment_info - WHERE document_id = '" . $document_id . "' - AND ( - id IN (SELECT id FROM (SELECT id FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0' ORDER BY comment_published ASC LIMIT " . (int)$start . "," . (int)$limit . ") as tmp) - OR - parent_id != '0' - ) - " . ($user_group == 1 ? '' : "AND comment_status = '1'") . " - ORDER BY comment_published ASC - "); + // 1. Считаем только РОДИТЕЛЕЙ для пагинации + $num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0'")->GetCell(); - if ($num > $limit) - { - $page_nav = '{t} '; - - $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box')); - $page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav))); - $page_nav = preg_replace('/(? ceil($num / $limit) ? $GLOBALS['page_id'][$document_id]['page'] : ceil($num / $limit)); - } - else { $page_nav = ''; } - } - else - { - $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' " . ($user_group == 1 ? '' : "AND comment_status = '1'") . " ORDER BY comment_published ASC"); - $page_nav = ''; - } + // 2. Основной запрос: выбираем ВСЮ ветку (родителя и всё, что под ним) + $sql = $AVE_DB->Query(" + SELECT * FROM " . PREFIX . "_module_comment_info + WHERE document_id = '" . $document_id . "' + AND ( + id IN (SELECT id FROM (SELECT id FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0' ORDER BY comment_published ASC LIMIT " . (int)$start . "," . (int)$limit . ") as tmp) + OR + parent_id != '0' + ) + " . ($user_group == 1 ? '' : "AND comment_status = '1'") . " + ORDER BY comment_published ASC + "); + + if ($num > $limit) + { + $page_nav = '{t} '; + + // Теперь деление на $limit безопасно, так как мы выше проверили, что он > 0 + $total_pages = ceil($num / $limit); + $page_nav = get_pagination($total_pages, 'page', $page_nav, get_settings('navi_box')); + $page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav))); + $page_nav = preg_replace('/(? $total_pages ? $GLOBALS['page_id'][$document_id]['page'] : $total_pages); + } + else { $page_nav = ''; } + } +} +else +{ + $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' " . ($user_group == 1 ? '' : "AND comment_status = '1'") . " ORDER BY comment_published ASC"); + $page_nav = ''; +}