public static function getCommentsList($object_id, $object_group = 'com_content', $page = 0) { $object_id = (int) $object_id; $object_group = trim($object_group); $user = JFactory::getUser(); $acl = JCommentsFactory::getACL(); $config = JCommentsFactory::getConfig(); $comments_per_page = $config->getInt('comments_per_page'); $limitstart = 0; $total = JComments::getCommentsCount($object_id, $object_group); if ($acl->canComment() == 0 && $total == 0) { return ''; } if ($total > 0) { $options = array(); $options['object_id'] = $object_id; $options['object_group'] = $object_group; $options['published'] = $acl->canPublish() || $acl->canPublishForObject($object_id, $object_group) ? null : 1; $options['votes'] = $config->getInt('enable_voting'); if ($comments_per_page > 0) { $page = (int) $page; require_once JCOMMENTS_HELPERS . '/pagination.php'; $pagination = new JCommentsPagination($object_id, $object_group); $pagination->setCurrentPage($page); $total_pages = $pagination->getTotalPages(); $this_page = $pagination->getCurrentPage(); $limitstart = $pagination->getLimitStart(); $comments_per_page = $pagination->getCommentsPerPage(); $options['limit'] = $comments_per_page; $options['limitStart'] = $limitstart; } $rows = JCommentsModel::getCommentsList($options); } else { $rows = array(); } $tmpl = JCommentsFactory::getTemplate($object_id, $object_group); $tmpl->load('tpl_list'); $tmpl->load('tpl_comment'); if (count($rows)) { $isLocked = $config->getInt('comments_locked', 0) == 1; $tmpl->addVar('tpl_list', 'comments-refresh', intval(!$isLocked)); $tmpl->addVar('tpl_list', 'comments-rss', intval($config->getInt('enable_rss') && !$isLocked)); $tmpl->addVar('tpl_list', 'comments-can-subscribe', intval($user->id && $acl->check('enable_subscribe') && !$isLocked)); $tmpl->addVar('tpl_list', 'comments-count', count($rows)); if ($user->id && $acl->check('enable_subscribe')) { require_once JCOMMENTS_SITE . '/jcomments.subscription.php'; $manager = JCommentsSubscriptionManager::getInstance(); $isSubscribed = $manager->isSubscribed($object_id, $object_group, $user->id); $tmpl->addVar('tpl_list', 'comments-user-subscribed', $isSubscribed); } if ($config->get('comments_list_order') == 'DESC') { if ($comments_per_page > 0) { $i = $total - $comments_per_page * ($page > 0 ? $page - 1 : 0); } else { $i = count($rows); } } else { $i = $limitstart + 1; } JCommentsEventHelper::trigger('onJCommentsCommentsPrepare', array(&$rows)); if ($acl->check('enable_gravatar')) { JCommentsEventHelper::trigger('onPrepareAvatars', array(&$rows)); } $items = array(); foreach ($rows as $row) { // run autocensor, replace quotes, smilies and other pre-view processing JComments::prepareComment($row); // setup toolbar if (!$acl->canModerate($row)) { $tmpl->addVar('tpl_comment', 'comments-panel-visible', 0); } else { $tmpl->addVar('tpl_comment', 'comments-panel-visible', 1); $tmpl->addVar('tpl_comment', 'button-edit', $acl->canEdit($row)); $tmpl->addVar('tpl_comment', 'button-delete', $acl->canDelete($row)); $tmpl->addVar('tpl_comment', 'button-publish', $acl->canPublish($row)); $tmpl->addVar('tpl_comment', 'button-ip', $acl->canViewIP($row)); $tmpl->addVar('tpl_comment', 'button-ban', $acl->canBan($row)); } $tmpl->addVar('tpl_comment', 'comment-show-vote', $config->getInt('enable_voting')); $tmpl->addVar('tpl_comment', 'comment-show-email', $acl->canViewEmail($row)); $tmpl->addVar('tpl_comment', 'comment-show-homepage', $acl->canViewHomepage($row)); $tmpl->addVar('tpl_comment', 'comment-show-title', $config->getInt('comment_title')); $tmpl->addVar('tpl_comment', 'button-vote', $acl->canVote($row)); $tmpl->addVar('tpl_comment', 'button-quote', $acl->canQuote($row)); $tmpl->addVar('tpl_comment', 'button-reply', $acl->canReply($row)); $tmpl->addVar('tpl_comment', 'button-report', $acl->canReport($row)); $tmpl->addVar('tpl_comment', 'avatar', $acl->check('enable_gravatar') && !$row->deleted); $tmpl->addObject('tpl_comment', 'comment', $row); if (isset($row->_number)) { $tmpl->addVar('tpl_comment', 'comment-number', $row->_number); } else { $tmpl->addVar('tpl_comment', 'comment-number', $i); if ($config->get('comments_list_order') == 'DESC') { $i--; } else { $i++; } } $items[$row->id] = $tmpl->renderTemplate('tpl_comment'); } $tmpl->addObject('tpl_list', 'comments-items', $items); // build page navigation if ($comments_per_page > 0 && $total_pages > 1) { $tmpl->addVar('tpl_list', 'comments-nav-first', 1); $tmpl->addVar('tpl_list', 'comments-nav-total', $total_pages); $tmpl->addVar('tpl_list', 'comments-nav-active', $this_page); $pagination = $config->get('comments_pagination'); // show top pagination if ($pagination == 'both' || $pagination == 'top') { $tmpl->addVar('tpl_list', 'comments-nav-top', 1); } // show bottom pagination if ($pagination == 'both' || $pagination == 'bottom') { $tmpl->addVar('tpl_list', 'comments-nav-bottom', 1); } } unset($rows); } return $tmpl->renderTemplate('tpl_list'); }