public static function show($object_id, $object_group = 'com_content', $object_title = '') { // only one copy of JComments per page is allowed if (defined('JCOMMENTS_SHOW')) { return ''; } $app = JFactory::getApplication('site'); $object_group = JCommentsSecurity::clearObjectGroup($object_group); if ($object_group == '' || !isset($object_id) || $object_id == '') { return ''; } $object_id = (int) $object_id; $object_title = trim($object_title); $acl = JCommentsFactory::getACL(); $config = JCommentsFactory::getConfig(); $document = JFactory::getDocument(); $tmpl = JCommentsFactory::getTemplate($object_id, $object_group); $tmpl->load('tpl_index'); if (!defined('JCOMMENTS_CSS')) { include_once JCOMMENTS_HELPERS . '/system.php'; if ($app->isAdmin()) { $tmpl->addVar('tpl_index', 'comments-css', 1); } else { $document->addStyleSheet(JCommentsSystemPluginHelper::getCSS()); $language = JFactory::getLanguage(); if ($language->isRTL()) { $rtlCSS = JCommentsSystemPluginHelper::getCSS(true); if ($rtlCSS != '') { $document->addStyleSheet($rtlCSS); } } } } if (!defined('JCOMMENTS_JS')) { include_once JCOMMENTS_HELPERS . '/system.php'; $document->addScript(JCommentsSystemPluginHelper::getCoreJS()); define('JCOMMENTS_JS', 1); if (!defined('JOOMLATUNE_AJAX_JS')) { $document->addScript(JCommentsSystemPluginHelper::getAjaxJS()); define('JOOMLATUNE_AJAX_JS', 1); } } $commentsCount = JComments::getCommentsCount($object_id, $object_group); $commentsPerObject = $config->getInt('max_comments_per_object'); $showForm = $config->getInt('form_show') == 1 || $config->getInt('form_show') == 2 && $commentsCount == 0; if ($commentsPerObject != 0 && $commentsCount >= $commentsPerObject) { $config->set('comments_locked', 1); } if ($config->getInt('comments_locked', 0) == 1) { $config->set('enable_rss', 0); $tmpl->addVar('tpl_index', 'comments-form-locked', 1); $acl->setCommentsLocked(true); } $tmpl->addVar('tpl_index', 'comments-form-captcha', $acl->check('enable_captcha')); $tmpl->addVar('tpl_index', 'comments-form-link', $showForm ? 0 : 1); if ($config->getInt('enable_rss') == 1) { if ($document->getType() == 'html') { $link = JCommentsFactory::getLink('rss', $object_id, $object_group); $title = htmlspecialchars($object_title, ENT_COMPAT, 'UTF-8'); $attribs = array('type' => 'application/rss+xml', 'title' => $title); $document->addHeadLink($link, 'alternate', 'rel', $attribs); } } $cacheEnabled = intval($app->getCfg('caching')) != 0; if ($cacheEnabled == 0) { $jrecache = JPATH_ROOT . '/components/com_jrecache/jrecache.config.php'; if (is_file($jrecache)) { $cfg = new _JRECache_Config(); $cacheEnabled = $cacheEnabled && $cfg->enable_cache; } } $load_cached_comments = intval($config->getInt('load_cached_comments', 0) && $commentsCount > 0); if ($cacheEnabled) { $tmpl->addVar('tpl_index', 'comments-anticache', 1); } if (!$cacheEnabled || $load_cached_comments === 1) { if ($config->get('template_view') == 'tree') { $tmpl->addVar('tpl_index', 'comments-list', $commentsCount > 0 ? JComments::getCommentsTree($object_id, $object_group) : ''); } else { $tmpl->addVar('tpl_index', 'comments-list', $commentsCount > 0 ? JComments::getCommentsList($object_id, $object_group) : ''); } } $needScrollToComment = ($cacheEnabled || $config->getInt('comments_per_page') > 0) && $commentsCount > 0; $tmpl->addVar('tpl_index', 'comments-gotocomment', (int) $needScrollToComment); $tmpl->addVar('tpl_index', 'comments-form', JComments::getCommentsForm($object_id, $object_group, $showForm)); $tmpl->addVar('tpl_index', 'comments-form-position', $config->getInt('form_position')); $result = $tmpl->renderTemplate('tpl_index'); $tmpl->freeAllTemplates(); // send notifications srand((double) microtime() * 10000000); $randValue = intval(rand(0, 100)); if ($randValue <= 30) { JCommentsNotificationHelper::send(); } define('JCOMMENTS_SHOW', 1); return $result; }
function updateCommentsList(&$response, $object_id, $object_group, $page) { $config =& JCommentsFactory::getConfig(); if ($config->get('template_view') == 'tree') { $html = JComments::getCommentsTree($object_id, $object_group); $html = JCommentsText::jsEscape($html); $response->addScript("jcomments.updateTree('{$html}',null);"); } else { $html = JComments::getCommentsList($object_id, $object_group, $page); $html = JCommentsText::jsEscape($html); $response->addScript("jcomments.updateList('{$html}','r');"); } }
function show($object_id, $object_group = 'com_content', $object_title = '') { global $mainframe; // only one copy of JComments per page is allowed if (defined('JCOMMENTS_SHOW')) { return; } $object_id = (int) $object_id; $object_group = trim(strip_tags($object_group)); $object_group = preg_replace('#[^0-9A-Za-z\\-\\_\\,\\.]#is', '', $object_group); $object_title = trim($object_title); $acl =& JCommentsFactory::getACL(); $config =& JCommentsFactory::getConfig(); $tmpl =& JCommentsFactory::getTemplate($object_id, $object_group); $tmpl->load('tpl_index'); if ($config->getInt('comments_locked', 0) == 1) { $config->set('enable_rss', 0); $tmpl->addVar('tpl_index', 'comments-form-locked', 1); } if (JCOMMENTS_JVERSION == '1.5') { $document =& JFactory::getDocument(); } if (!defined('JCOMMENTS_CSS')) { include_once JCOMMENTS_HELPERS . DS . 'system.php'; if ($mainframe->isAdmin()) { $tmpl->addVar('tpl_index', 'comments-css', 1); } else { $link = JCommentsSystemPluginHelper::getCSS(); if (JCOMMENTS_JVERSION == '1.5') { $document->addStyleSheet($link); $language =& JFactory::getLanguage(); if ($language->isRTL()) { $rtlCSS = JCommentsSystemPluginHelper::getCSS(true); if ($rtlCSS != '') { $document->addStyleSheet($rtlCSS); } } } else { $mainframe->addCustomHeadTag('<link href="' . $link . '" rel="stylesheet" type="text/css" />'); } } } if (!defined('JCOMMENTS_JS')) { include_once JCOMMENTS_HELPERS . DS . 'system.php'; if (JCOMMENTS_JVERSION == '1.5') { $document->addScript(JCommentsSystemPluginHelper::getCoreJS()); } else { $mainframe->addCustomHeadTag(JCommentsSystemPluginHelper::getCoreJS(true)); } if (!defined('JOOMLATUNE_AJAX_JS')) { if (JCOMMENTS_JVERSION == '1.5') { $document->addScript(JCommentsSystemPluginHelper::getAjaxJS()); } else { $mainframe->addCustomHeadTag(JCommentsSystemPluginHelper::getAjaxJS(true)); } define('JOOMLATUNE_AJAX_JS', 1); } } $commentsCount = JCommentsModel::getCommentsCount($object_id, $object_group); $showForm = $config->getInt('form_show') == 1 || $config->getInt('form_show') == 2 && $commentsCount == 0; $tmpl->addVar('tpl_index', 'comments-form-captcha', $acl->check('enable_captcha')); $tmpl->addVar('tpl_index', 'comments-form-link', $showForm ? 0 : 1); if ($config->getInt('enable_rss') == 1) { $link = JCommentsFactory::getLink('rss', $object_id, $object_group); if (JCOMMENTS_JVERSION == '1.5') { $attribs = array('type' => 'application/rss+xml', 'title' => strip_tags($object_title)); $document->addHeadLink($link, 'alternate', 'rel', $attribs); } else { $html = '<link rel="alternate" type="application/rss+xml" title="' . strip_tags($object_title) . '" href="' . $link . '" />'; $mainframe->addCustomHeadTag($html); } } $cacheEnabled = intval($mainframe->getCfg('caching')) == 1; if ($cacheEnabled == 0) { $jrecache = $mainframe->getCfg('absolute_path') . DS . 'components' . DS . 'com_jrecache' . DS . 'jrecache.config.php'; if (is_file($jrecache)) { $cfg = new _JRECache_Config(); $cacheEnabled = $cacheEnabled && $cfg->enable_cache; } } $load_cached_comments = intval($config->getInt('load_cached_comments', 0) && $commentsCount > 0); if ($cacheEnabled && $commentsCount > 0) { $tmpl->addVar('tpl_index', 'comments-anticache', 1); } if (!$cacheEnabled || $load_cached_comments === 1) { if ($config->get('template_view') == 'tree') { $tmpl->addVar('tpl_index', 'comments-list', $commentsCount > 0 ? JComments::getCommentsTree($object_id, $object_group) : ''); } else { $tmpl->addVar('tpl_index', 'comments-list', $commentsCount > 0 ? JComments::getCommentsList($object_id, $object_group) : ''); } } $needScrollToComment = ($cacheEnabled || $config->getInt('comments_per_page') > 0) && $commentsCount > 0; $tmpl->addVar('tpl_index', 'comments-gotocomment', (int) $needScrollToComment); $tmpl->addVar('tpl_index', 'comments-form', JComments::getCommentsForm($object_id, $object_group, $showForm)); $result = $tmpl->renderTemplate('tpl_index'); $tmpl->freeAllTemplates(); define('JCOMMENTS_SHOW', 1); return $result; }