исправлена пагинация если активен чекбокс Использовать постраничную навигацию а сами значения равны 0
This commit is contained in:
@@ -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 = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
|
||||
. '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
|
||||
. ((isset($artpage) && is_numeric($artpage)) ? '&artpage=' . $artpage : '')
|
||||
. ((isset($apage) && is_numeric($apage)) ? '&apage=' . $apage : '')
|
||||
. '&page={s}">{t}</a> ';
|
||||
|
||||
$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('/(?<!:)\/\//', '/', $page_nav);
|
||||
$GLOBALS['page_id'][$document_id]['page'] = ($GLOBALS['page_id'][$document_id]['page'] > 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 = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
|
||||
. '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
|
||||
. ((isset($artpage) && is_numeric($artpage)) ? '&artpage=' . $artpage : '')
|
||||
. ((isset($apage) && is_numeric($apage)) ? '&apage=' . $apage : '')
|
||||
. '&page={s}">{t}</a> ';
|
||||
|
||||
// Теперь деление на $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('/(?<!:)\/\//', '/', $page_nav);
|
||||
$GLOBALS['page_id'][$document_id]['page'] = ($GLOBALS['page_id'][$document_id]['page'] > $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 = '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user