Please login or register.

Login with username, password and session length
Advanced search  

News:

You need/want an older version of sNews ? Download an older/unsupported version here.

Author Topic: Direct comment display  (Read 3545 times)

sjonkers

  • Newbie
  • *
  • Karma: 0
  • Posts: 5
Direct comment display
« on: May 05, 2009, 09:19:48 PM »

Good day everyone,

I really couldnt find any solutions to the following problem. I'm using snews to display news, but i would really like to see all the comments made on an article without having to click on the link. I know you really get a long list of comments underneath the article, but i really need it.

Do you guys know any solutions to this problem?

Thanks in advance.

Stan
Logged

Joost

  • Guest
Re: Direct comment display
« Reply #1 on: May 06, 2009, 10:09:53 AM »

Stan,

You mean, you want the comments of the article displayed on the frontpage of sNews?
Showing just the latest article ?
Logged

sjonkers

  • Newbie
  • *
  • Karma: 0
  • Posts: 5
Re: Direct comment display
« Reply #2 on: May 06, 2009, 10:21:28 AM »

Hi Joost,

thank you for your reply.

Indeed, all articles and all comments. Like:

<article>
    <comment>
    <comment>
<article>
    <comment>
    <comment>
    <comment>
    <comment>
<article>
    <comment>
    <comment>

Stan.
Logged

Joost

  • Guest
Re: Direct comment display
« Reply #3 on: May 06, 2009, 10:33:12 AM »

Holy Mozes! ::)
Logged

Joost

  • Guest
Re: Direct comment display
« Reply #4 on: May 06, 2009, 11:29:05 AM »

Well Stan, done much faster than expected. There is no edit box added, as it was not requested.
Be aware, in categories and subcategories, comments will be displayed as well.
I could do something about that (I think  ::) ).

Here it is: Quick and dirty.
Replace function articles and function comment with the following (don't include <?php ):

Code: [Select]
<?php


// ARTICLES
function articles() {
global $categorySEF$subcatSEF$articleSEF$_ID$_POS$_catID$_XNAME;
$frontpage s('display_page');
$title_not_found '<h2>'.l('none_yet').'</h2>';
if (_ADMIN) {
  $visible='';
$title_not_found .= '<p>'.l('create_new').'
<a href="'
._SITE.'administration/" title="'.l('administration').'">'.l('administration').'</a></p>';
} else {
$visible =' AND a.visible=\'YES\' ';
}
if ($_ID || (!$_catID && $frontpage != 0)) {
if (!$_ID$_ID $frontpage;
// article or page, id as indentifier
$query_articles 'SELECT
a.id AS aid,title,a.seftitle AS asef,text,a.date,
a.displaytitle,a.displayinfo,a.commentable,a.visible
FROM  '
._PRE.'articles'.' AS a
WHERE id ='
.$_ID.$visible;
} else {
if (s('display_pagination') == 'on'$on true; else $on false;
if ($on == true) {
if ($articleSEF) {
$SEF $articleSEF;
} elseif ($subcatSEF) {
$SEF $subcatSEF;
} else {
$SEF $categorySEF;
}
// pagination
$currentPage strpos($SEFl('paginator')) === str_replace(l('paginator'), ''$SEF) : '';
if ($_catID) {
$count 'SELECT COUNT(a.id) AS num
FROM  '
._PRE.'articles'.' AS a
WHERE position = 1
AND a.published =1
AND category = '
.$_catID.$visible.'
GROUP BY category'
;
} else {
$count 'SELECT COUNT(a.id) AS num
FROM '
._PRE.'articles'.' AS a
LEFT OUTER JOIN '
._PRE.'categories'.' as c
ON category = c.id
LEFT OUTER JOIN '
._PRE.'categories'.' as x
ON c.subcat =  x.id AND (x.published =\'YES\')
WHERE show_on_home = \'YES\' '
.$visible.'
AND position = 1
AND a.published =1
AND c.published =\'YES\'
GROUP BY show_on_home'
;
}
$count mysql_query($count);
if ($count) {
$r mysql_fetch_array($count);
$num $r['num'];
}
}
if ($num === ) {
echo $title_not_found;
} else {
$articleCount s('article_limit');
$article_limit = (empty($articleCount) || $articleCount 1) ? 100 $articleCount;
$totalPages ceil($num/$article_limit);
if (!isset($currentPage) || !is_numeric($currentPage) || $currentPage 1) {
$currentPage 1;
}
// get the rows for category
if ($_catID) {
$query_articles 'SELECT
a.id AS aid,title,a.seftitle AS asef,text,a.date,
a.displaytitle,a.displayinfo,a.commentable,a.visible
FROM '
._PRE.'articles'.' AS a
WHERE position = 1
AND a.published =1
AND category = '
.$_catID.$visible.'
ORDER BY artorder ASC,date DESC
LIMIT '
.($currentPage 1) * $article_limit.','.$article_limit;
} else {
$query_articles 'SELECT
a.id AS aid,title,a.seftitle AS asef,text,a.date,
displaytitle,displayinfo,commentable,a.visible,
c.name AS name,c.seftitle AS csef,
x.name AS xname,x.seftitle AS xsef
FROM '
._PRE.'articles'.' AS a
LEFT OUTER JOIN '
._PRE.'categories'.' as c
ON category = c.id
LEFT OUTER JOIN '
._PRE.'categories'.' as x
ON c.subcat =  x.id AND x.published =\'YES\'
WHERE show_on_home = \'YES\'
AND position = 1
AND a.published =1
AND c.published =\'YES\''
.$visible.'
ORDER BY date DESC
LIMIT '
.($currentPage 1) * $article_limit.','.$article_limit;
}
}
}
$result mysql_query($query_articles);
$numrows mysql_num_rows($result);
if (!$result || !$numrows) {
if (_ADMIN) {
echo $title_not_found;
}
echo '<ul class="vertical">';
menu_articles(0,10,1);
echo '</ul>';
} else {
$link '<a href="'._SITE;
while ($r mysql_fetch_array($result)) {
$infoline $r['displayinfo'] == 'YES' true false;
$text stripslashes($r['text']);
if (!empty($currentPage)) {
$short_display strpos($text'[break]');
$shorten $short_display == 9999000 $short_display;
} else {
$shorten 9999000;
}
/* $comments_query = 'SELECT id FROM '._PRE.'comments'.'
WHERE articleid = '.$r['aid'].' AND approved = \'True\'';
$comments_result = mysql_query($comments_query);
$comments_num = mysql_num_rows($comments_result);*/  # joost did this.
$a_date_format date(s('date_format'), strtotime($r['date']));
if ($r['csef']) $uri $r['xsef'] ? $r['xsef'].'/'.$r['csef'] :  $r['csef'];
elseif ($_XNAME$uri $categorySEF.'/'.$subcatSEF;
else $uri $categorySEF;
$title $r['title'];
if ($r['displaytitle'] == 'YES') {
if (!$_ID)  {
echo '<h2 class="big">'.$link.$uri.'/'.$r['asef'].'/">'.$title.'</a></h2>';
} else {
echo '<h2>'.$title.'</h2>';
}
}
file_include(str_replace('[break]''',$text), $shorten);
$commentable $r['commentable'];
$visiblity $r['visible'] == 'YES' ?
       
  '<a href="'._SITE.'?action=process&amp;task=hide&amp;item=snews_articles&amp;id='.$r['aid'].'&amp;back='.$uri.'">'.l('hide').'</a>' :
      
  l('hidden').' ( <a href="'._SITE.'?action=process&amp;task=show&amp;item=snews_articles&amp;id='.$r['aid'].'&amp;back='.$uri.'">'.l('show').'</a> )' ;
$edit_link $link.'?action=admin_article&amp;id='.$r['aid'].'" title="'.$title.'">'.l('edit').'</a> ';
$edit_link.= ' '.l('divider').' '.$visiblity;
if (!empty($currentPage)) {
if ($infoline == true) {
$tag explode(','tags('infoline'));
foreach ($tag as $tag) {
switch (true) {
case ($tag == 'date'):
echo $a_date_format;
break;
case ($tag == 'readmore' && strlen($r['text']) > $shorten):
echo $link.$uri.'/'.$r['asef'].'/">'.l('read_more').'</a> ';
break;
/* case ($tag == 'comments' && ($commentable == 'YES' || $commentable == 'FREEZ')):
echo $link.$uri.'/'.$r['asef'].'/#'.l('comment').'1">
'.l('comments').' ('.$comments_num.')</a> '; 
break;  */
case ($tag == 'edit' && _ADMIN):
echo ' '.$edit_link;
break;
case ($tag != 'readmore' && $tag != 'comments' && $tag != 'edit'):
echo $tag;
break;
}
}
if ($commentable == 'YES') {  #joost added: this line up to ->
comment('unfreezed',$r['aid']);
} else if ($commentable == 'FREEZ') {
comment('freezed');
}  #joost added: this
} else if (_ADMIN) {
echo '<p>'.$edit_link.'</p>';
}
} else if (empty($currentPage)) {
if ($infoline == true) {
$tag explode(','tags('infoline'));
foreach ($tag as $tag ) {
switch ($tag) {
case 'date':
echo $a_date_format;
break;
case 'readmore':
case 'comments': ;
break;
case 'edit':
if (_ADMIN) {
echo ' '.$edit_link;
}
break;
default:
echo $tag;
}
}
} else if (_ADMIN) {
echo '<p>'.$edit_link.'</p>';
}
}
}
if (!empty($currentPage) && ($num$article_limit) && $on) {
paginator$currentPage$totalPagesl('paginator'));
}
if (!empty($_POS) && empty($currentPage) && $infoline == true) {
if ($commentable == 'YES') {
comment('unfreezed');
} else if ($commentable == 'FREEZ') {
comment('freezed');
}
}
}
}

// COMMENTS
function comment($freeze_status$id=0) {  #joost added: if $id=0
 
echo '<h3>Comments</h3>';
 
global $categorySEF$subcatSEF$articleSEF$_ID$commentsPage;
 
if (isset($commentsPage)) {
 
$commentsPage str_replace(l('comment_pages'),'',$commentsPage);
 
}
 
if (strpos($articleSEFl('paginator')) === 0) {
 
$articleSEF str_replace(l('paginator'), ''$articleSEF);
 
}
 
if (!isset($commentsPage) || !is_numeric($commentsPage) || $commentsPage 1) {
 
$commentsPage 1;
 
}
 
$comments_order s('comments_order');
 
if (isset($_POST['comment'])) {
$comment cleanWords(trim($_POST['text']));
$comment strlen($comment) > clean(cleanXSS($comment)) : null;
$name trim($_POST['name']);
$name strlen($name) > clean(cleanXSS($name)) : null;
$url trim($_POST['url']);
$url = (strlen($url) > && strpos($url'?') === false) ? clean(cleanXSS($url)) : null;
$post_article_id = (is_numeric($_POST['id']) && $_POST['id'] > 0) ? $_POST['id'] : null;
$ip = (strlen($_POST['ip']) < 16) ? clean(cleanXSS($_POST['ip'])) : null;
if (_ADMIN) {
$doublecheck 1;
$ident=1;
} else {
$contentCheck retrieve('id''comments''comment'$comment);
$ident = !$contentCheck || (time() - $_SESSION[_SITE.'poster']['time']) > s('comment_repost_timer') ||
$_SESSION[_SITE.'poster']['ip'] !== $ip 0;
$doublecheck $_SESSION[_SITE.'poster']['article'] === "$comment:|:$post_article_id&&
(time()-$_SESSION[_SITE.'poster']['time']) < s('comment_repost_timer') ? 1;
}
if ($ip == $_SERVER['REMOTE_ADDR'] && $comment && $name && $post_article_id  &&
  checkMathCaptcha() && $doublecheck == && $ident == 1) {
$url preg_match('/((http)+(s)?:(\/\/)|(www\.))([a-z0-9_\-]+)/'$url) ? $url '';
$url substr($url03) == 'www' 'http://'.$url $url;
$time date('Y-m-d H:i:s');
unset($_SESSION[_SITE.'poster']);
$approved s('approve_comments') != 'on'|| _ADMIN 'True' '';
$query 'INSERT INTO '._PRE.'comments'.'(articleid, name, url, comment, time, approved) VALUES'.
"('$post_article_id', '$name', '$url', '$comment', '$time', '$approved')";
mysql_query($query);
$_SESSION[_SITE.'poster']['article']="$comment:|:$post_article_id";
$_SESSION[_SITE.'poster']['time'] = time();
// this is to set session for checking multiple postings.
$_SESSION[_SITE.'poster']['ip'] = $ip;
$commentStatus s('approve_comments') == 'on'&& !_ADMIN l('comment_sent_approve') : l('comment_sent');
// eMAIL COMMENTS
if (s('mail_on_comments') == 'on' && !_ADMIN) {
if (s('approve_comments') == 'on') {
$status l('approved_text');
$subject =l('subject_a');
} else {
$status l('not_waiting_approved');
$subject =l('subject_b');
}
$to s('website_email');
$send_array = array(
'to'=>$to,
'name'=>$name,
'comment'=>$comment,
'ip'=>$ip,
'url'=>$url,
'subject'=>$subject,
'status'=>$status);
send_email($send_array);
}
// End of Mail
} else {
$commentStatus l('comment_error');
$commentReason l('ce_reasons');
$fail true;
$_SESSION[_SITE.'comment']['name'] = $name;
$_SESSION[_SITE.'comment']['comment'] = br2nl($comment);
$_SESSION[_SITE.'comment']['url'] = $url;
$_SESSION[_SITE.'comment']['fail'] = $fail;
}
echo '<h2>'.$commentStatus.'</h2>';
if (!empty($commentReason)) {
echo '<p>'.$commentReason.'</p>';
}
$postArt clean(cleanXSS($_POST['article']));
$postArtID retrieve('category','articles','id',$post_article_id);
if ($postArtID == 0) {
$postCat '' ;
} else {
$postCat cat_rel($postArtID'seftitle').'/';
}
if ($fail){
$back_link _SITE.$postCat.$postArt;
echo '<a href="'.$back_link.'/">'.l('back').'</a>';
} else {
echo '<meta http-equiv="refresh" content="1; url='._SITE.$postCat.$postArt.'/">';
}
} else {
$commentCount s('comment_limit');
$comment_limit = (empty($commentCount) || $commentCount 1) ? 100 $commentCount;
if (isset($commentsPage)) {
$pageNum $commentsPage;
}
$offset = ($pageNum 1) * $comment_limit;
$id $id $id $_ID;  #joost added: line
$totalrows 'SELECT count(id) AS num FROM '._PRE.'comments'.'
WHERE articleid = '
.$id.' AND approved = \'True\';';
$rowsresult mysql_query($totalrows);
$numrows mysql_fetch_array($rowsresult);
$numrows $numrows['num'];
/**** redundant/excessive
/* if ($numrows == 0) {
if ($freeze_status != 'freezed' && s('freeze_comments') != 'YES') {
echo '<p>'.l('no_comment').'</p>';
} else {
echo '<p>'.l('frozen_comments').'</p>';
}
} else {
/**** end redundant/excessive*****/
if ($numrows 0) {
$query 'SELECT
id,articleid,name,url,comment,time,approved
FROM '
._PRE.'comments'.'
WHERE articleid = '
.$id.'
AND approved = \'True\'
ORDER BY id '
.$comments_order.'
LIMIT '
."$offset$comment_limit";
$result mysql_query($query) or die(l('dberror'));
$ordinal 1;
$date_format s('date_format');
$edit_link ' <a href="'._SITE.'?action=';
while ($r mysql_fetch_array($result)) {
$date date($date_formatstrtotime($r['time']));
$commentNum $offset $ordinal;
$tag explode(','tags('comments'));
foreach ($tag as $tag) {
  switch (true) {
case ($tag == 'date'):
echo '<a id="'.l('comment').$commentNum.'"
name="'
.l('comment').$commentNum.'"></a>'.$date;
break;
case ($tag == 'name'):
$name $r['name'];
echo !empty($r['url']) ?
'<a href="'.$r['url'].'" title="'.$r['url'].'" rel="nofollow">
'
.$name.'</a> ' $name;
break;
case ($tag == 'comment'):
echo $r['comment'];
break;
case ($tag == 'edit' && _ADMIN):
echo $edit_link.'editcomment&amp;commentid='.$r['id'].'"
title="'
.l('edit').' '.l('comment').'">'.l('edit').'</a> ';
echo $edit_link.'process&amp;task=deletecomment&amp;commentid='.$r['id'].'"
title="'
.l('delete').' '.l('comment').'" onclick="return pop()">'.l('delete').'</a>';
break;
case ($tag == 'edit'): ;
break;
default:
echo $tag;
}
}
$ordinal++;
}
$maxPage ceil($numrows $comment_limit);
$back_to_page ceil(($numrows 1) / $comment_limit);
if ($maxPage 1) {
paginator($pageNum$maxPage,l('comment_pages'));
}
}
if ( ! empty($_ID) && $freeze_status != 'freezed' && s('freeze_comments') != 'YES') { #joost added:empty (id)
/*added 24 jan 2009*/ 
if ($numrows == 0) {echo '<p>'.l('no_comment').'</p>';}
// recall and set vars for reuse when botched post
if($_SESSION[_SITE.'comment']['fail'] == true) {
$name $_SESSION[_SITE.'comment']['name'];
$comment $_SESSION[_SITE.'comment']['comment'];
$url $_SESSION[_SITE.'comment']['url'];
unset($_SESSION[_SITE.'comment']);
} else {
$url $name $comment '';
}
// end var retrieval
$art_value = empty($articleSEF) ? $subcatSEF $articleSEF;
echo '<div class="commentsbox"><h2>'.l('addcomment').'</h2>'."\r\n";
echo '<p>'.l('required').'</p>'."\r\n";
echo html_input('form''''post''''''''''''''''''''post'_SITE'')."\r\n";
echo html_input('text''name''name'$name'* '.l('name'), 'text''''''''''''''''''')."\r\n";
echo html_input('text''url''url'$urll('url'), 'text''''''''''''''''''')."\r\n";
echo html_input('textarea''text''text'$comment'* '.l('comment'), '''''''''''5''5''''''')."\r\n";
echo mathCaptcha()."\r\n";
echo '<p>';
echo html_input('hidden''category''category'$categorySEF'''''''''''''''''''''')."\r\n";
echo html_input('hidden''id''id'$_ID'''''''''''''''''''''')."\r\n";
echo html_input('hidden''article''article'$art_value'''''''''''''''''''''')."\r\n";
echo html_input('hidden''commentspage''commentspage'$back_to_page'''''''''''''''''''''')."\r\n";
echo html_input('hidden''ip''ip'$_SERVER['REMOTE_ADDR'], '''''''''''''''''''''')."\r\n";
echo html_input('hidden''time''time'time(), '''''''''''''''''''''');
echo html_input('submit''comment''comment'l('submit'), '''button''''''''''''''''''')."\r\n";
echo '</p></form></div>';
} else {
if( ! empty($_ID) )echo '<p>'.l('frozen_comments').'</p>'#joost added: if
}
}
}



?>

Al changes are marked similar to the way it is coded: quick and dirty
« Last Edit: May 06, 2009, 11:31:48 AM by Joost »
Logged