public static function getCommentsTree($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(); $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'); $rows = JCommentsModel::getCommentsList($options); } else { $rows = array(); } $tmpl = JCommentsFactory::getTemplate($object_id, $object_group); $tmpl->load('tpl_tree'); $tmpl->load('tpl_comment'); if (count($rows)) { $isLocked = $config->getInt('comments_locked', 0) == 1; $tmpl->addVar('tpl_tree', 'comments-refresh', intval(!$isLocked)); $tmpl->addVar('tpl_tree', 'comments-rss', intval($config->getInt('enable_rss') && !$isLocked)); $tmpl->addVar('tpl_tree', 'comments-can-subscribe', intval($user->id && $acl->check('enable_subscribe') && !$isLocked)); $tmpl->addVar('tpl_tree', '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_tree', 'comments-user-subscribed', $isSubscribed); } $i = 1; JCommentsEventHelper::trigger('onJCommentsCommentsPrepare', array(&$rows)); if ($acl->check('enable_gravatar')) { JCommentsEventHelper::trigger('onPrepareAvatars', array(&$rows)); } require_once JCOMMENTS_LIBRARIES . '/joomlatune/tree.php'; $tree = new JoomlaTuneTree($rows); $items = $tree->get(); 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); if (isset($items[$row->id])) { $tmpl->addVar('tpl_comment', 'comment-number', ''); $tmpl->addObject('tpl_comment', 'comment', $row); $items[$row->id]->html = $tmpl->renderTemplate('tpl_comment'); $i++; } } $tmpl->addObject('tpl_tree', 'comments-items', $items); unset($rows); } return $tmpl->renderTemplate('tpl_tree'); }
public static function showUserComments() { $config = JCommentsFactory::getConfig(); if ($config->get('enable_rss') == '1') { $app = JCommentsFactory::getApplication('site'); $acl = JCommentsFactory::getACL(); $userid = (int) JCommentsInput::getVar('userid', 0); $limit = (int) JCommentsInput::getVar('limit', $config->getInt('feed_limit', 100)); $user = JCommentsFactory::getUser($userid); if (!isset($user->id)) { self::showNotFound(); return; } if (JCOMMENTS_JVERSION == '1.0') { $offset = $app->getCfg('offset') + date('O') / 100; } else { $offset = $app->getCfg('offset'); } $lm = $limit != $config->getInt('feed_limit') ? '&limit=' . $limit : ''; if (JCommentsMultilingual::isEnabled()) { $language = JCommentsMultilingual::getLanguage(); $lp = '&lang=' . $language; } else { $language = null; $lp = ''; } if (JCOMMENTS_JVERSION == '1.0') { $syndicationURL = $app->getCfg('live_site') . '/index2.php?option=com_jcomments&task=rss_user&userid=' . $userid . $lm . $lp . '&no_html=1'; } else { $liveSite = str_replace(JURI::root(true), '', $app->getCfg('live_site')); $syndicationURL = $liveSite . JRoute::_('index.php?option=com_jcomments&task=rss_user&userid=' . $userid . $lm . $lp . '&tmpl=raw'); } $user->userid = $user->id; $username = JComments::getCommentAuthorName($user); $rss = new JoomlaTuneFeed(); $rss->setOffset($offset); $rss->encoding = JCOMMENTS_ENCODING; $rss->title = JText::sprintf('USER_FEED_TITLE', $username); $rss->link = $app->getCfg('live_site'); $rss->syndicationURL = $syndicationURL; $rss->description = JText::sprintf('USER_FEED_DESCRIPTION', $username); $options = array(); $options['lang'] = $language; $options['userid'] = $userid; $options['published'] = 1; $options['filter'] = 'c.deleted = 0'; $options['orderBy'] = 'c.date DESC'; $options['votes'] = false; $options['limit'] = $limit; $options['limitStart'] = 0; $options['objectinfo'] = true; $options['access'] = $acl->getUserAccess(); $rows = JCommentsModel::getCommentsList($options); $word_maxlength = $config->getInt('word_maxlength'); $lang = JCommentsMultilingual::isEnabled() ? JCommentsMultilingual::getLanguage() : null; foreach ($rows as $row) { $comment = JCommentsText::cleanText($row->comment); if ($comment != '') { // getting object's information (title and link) $object_title = empty($row->object_title) ? JCommentsObjectHelper::getTitle($row->object_id, $row->object_group, $lang) : $row->object_title; $object_link = empty($row->object_link) ? JCommentsObjectHelper::getLink($row->object_id, $row->object_group, $lang) : $row->object_link; $object_link = JCommentsFactory::getAbsLink(str_replace('amp;', '', $object_link)); // apply censor filter $object_title = JCommentsText::censor($object_title); $comment = JCommentsText::censor($comment); // fix long words problem if ($word_maxlength > 0) { $comment = JCommentsText::fixLongWords($comment, $word_maxlength, ' '); if ($object_title != '') { $object_title = JCommentsText::fixLongWords($object_title, $word_maxlength, ' '); } } $author = JComments::getCommentAuthorName($row); $item = new JoomlaTuneFeedItem(); $item->title = $object_title; $item->link = $object_link . '#comment-' . $row->id; $item->description = JText::sprintf('USER_FEED_ITEM_DESCRIPTION', $author, $comment); $item->source = $object_link; if (JCOMMENTS_JVERSION == '1.0') { $date = strtotime((string) $row->date) - $offset * 3600; $item->pubDate = date('Y-m-d H:i:s', $date); } else { $item->pubDate = $row->date; } $item->author = $author; $rss->addItem($item); } } $rss->display(); unset($rows, $rss); exit; } }
public static function showUserComments() { $config = JCommentsFactory::getConfig(); if ($config->get('enable_rss') == '1') { $app = JFactory::getApplication('site'); $acl = JCommentsFactory::getACL(); $userid = $app->input->getInt('userid', 0); $limit = $app->input->getInt('limit', $config->getInt('feed_limit', 100)); $user = JFactory::getUser($userid); if (!isset($user->id)) { self::showNotFound(); return; } $lm = $limit != $config->getInt('feed_limit') ? '&limit=' . $limit : ''; if (JCommentsMultilingual::isEnabled()) { $language = JCommentsMultilingual::getLanguage(); $lp = '&lang=' . $language; } else { $language = null; $lp = ''; } $liveSite = trim(str_replace(JURI::root(true), '', str_replace('/administrator', '', JURI::root())), '/'); $syndicationURL = $liveSite . JRoute::_('index.php?option=com_jcomments&task=rss_user&userid=' . $userid . $lm . $lp . '&tmpl=raw'); $user->userid = $user->id; $username = JComments::getCommentAuthorName($user); $rss = new JoomlaTuneFeed(); $rss->title = JText::sprintf('USER_FEED_TITLE', $username); $rss->link = str_replace('/administrator', '', JURI::root()); $rss->syndicationURL = $syndicationURL; $rss->description = JText::sprintf('USER_FEED_DESCRIPTION', $username); $options = array(); $options['lang'] = $language; $options['userid'] = $userid; $options['published'] = 1; $options['filter'] = 'c.deleted = 0'; $options['orderBy'] = 'c.date DESC'; $options['votes'] = false; $options['limit'] = $limit; $options['limitStart'] = 0; $options['objectinfo'] = true; $options['access'] = $acl->getUserAccess(); $rows = JCommentsModel::getCommentsList($options); $word_maxlength = $config->getInt('word_maxlength'); foreach ($rows as $row) { $comment = JCommentsText::cleanText($row->comment); if ($comment != '') { // getting object's information (title and link) $object_title = $row->object_title; $object_link = JCommentsFactory::getAbsLink(str_replace('amp;', '', $row->object_link)); // apply censor filter $object_title = JCommentsText::censor($object_title); $comment = JCommentsText::censor($comment); // fix long words problem if ($word_maxlength > 0) { $comment = JCommentsText::fixLongWords($comment, $word_maxlength, ' '); if ($object_title != '') { $object_title = JCommentsText::fixLongWords($object_title, $word_maxlength, ' '); } } $author = JComments::getCommentAuthorName($row); $item = new JoomlaTuneFeedItem(); $item->title = $object_title; $item->link = $object_link . '#comment-' . $row->id; $item->description = JText::sprintf('USER_FEED_ITEM_DESCRIPTION', $author, $comment); $item->source = $object_link; $item->pubDate = $row->date; $item->author = $author; $rss->addItem($item); } } $rss->display(); unset($rows, $rss); exit; } }
function getCommentsTree($object_id, $object_group = 'com_content') { global $my; $object_id = (int) $object_id; $object_group = trim($object_group); $acl =& JCommentsFactory::getACL(); $dbo =& JCommentsFactory::getDBO(); $config =& JCommentsFactory::getConfig(); $canPublish = $acl->canPublish(); $canComment = $acl->canComment(); if ($canComment == 0) { $total = JCommentsModel::getCommentsCount($object_id, $object_group); if ($total == 0) { return ''; } } $rows = JCommentsModel::getCommentsList($object_id, $object_group); $tmpl =& JCommentsFactory::getTemplate($object_id, $object_group); $tmpl->load('tpl_tree'); $tmpl->load('tpl_comment'); if (count($rows)) { $isLocked = $config->getInt('comments_locked', 0) == 1; $tmpl->addVar('tpl_tree', 'comments-refresh', intval(!$isLocked)); $tmpl->addVar('tpl_tree', 'comments-rss', intval($config->getInt('enable_rss') && !$isLocked)); $tmpl->addVar('tpl_tree', 'comments-can-subscribe', intval($my->id && $acl->check('enable_subscribe') && !$isLocked)); $tmpl->addVar('tpl_tree', 'comments-count', count($rows)); if ($my->id && $acl->check('enable_subscribe')) { require_once JCOMMENTS_BASE . DS . 'jcomments.subscription.php'; $manager =& JCommentsSubscriptionManager::getInstance(); $isSubscribed = $manager->isSubscribed($object_id, $object_group, $my->id); $tmpl->addVar('tpl_tree', 'comments-user-subscribed', $isSubscribed); } $i = 1; if ($config->getInt('enable_mambots') == 1) { require_once JCOMMENTS_HELPERS . DS . 'plugin.php'; JCommentsPluginHelper::importPlugin('jcomments'); JCommentsPluginHelper::trigger('onBeforeDisplayCommentsList', array(&$rows)); if ($acl->check('enable_gravatar')) { JCommentsPluginHelper::trigger('onPrepareAvatars', array(&$rows)); } } require_once JCOMMENTS_LIBRARIES . DS . 'joomlatune' . DS . 'tree.php'; $tree = new JoomlaTuneTree($rows); $items = $tree->get(); foreach ($rows as $row) { if ($config->getInt('enable_mambots') == 1) { JCommentsPluginHelper::trigger('onBeforeDisplayComment', array(&$row)); } // run autocensor, replace quotes, smiles 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', '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')); if (isset($items[$row->id])) { $tmpl->addVar('tpl_comment', 'comment-number', ''); $tmpl->addObject('tpl_comment', 'comment', $row); $items[$row->id]->html = $tmpl->renderTemplate('tpl_comment'); $i++; } } $tmpl->addObject('tpl_tree', 'comments-items', $items); unset($rows); } return $tmpl->renderTemplate('tpl_tree'); }