function panels_comment_render in Panels 5.2
Same name and namespace in other branches
- 6.2 content_types/node_comments.inc \panels_comment_render()
This function is a somewhat stripped down version of comment_render that removes a bunch of cruft that we both don't need, and makes it difficult to modify this.
1 call to panels_comment_render()
- panels_content_node_comments in content_types/
node_comments.inc - Output function for the 'node comments' content type. Outputs the comments that have been made on a given nid, as provided by the $context.
File
- content_types/
node_comments.inc, line 106
Code
function panels_comment_render($node, $conf) {
if (!user_access('access comments')) {
return;
}
$mode = $conf['mode'];
$order = $conf['order'];
$comments_per_page = $conf['comments_per_page'];
// Multiple comment view
$query_count = 'SELECT COUNT(*) FROM {comments} WHERE nid = %d';
$query = 'SELECT c.cid as cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.picture, u.data, c.score, c.users, c.thread, c.status FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.nid = %d';
$query_args = array(
$node->nid,
);
if (!user_access('administer comments')) {
$query .= ' AND c.status = %d';
$query_count .= ' AND status = %d';
$query_args[] = COMMENT_PUBLISHED;
}
if ($order == COMMENT_ORDER_NEWEST_FIRST) {
if ($mode == COMMENT_MODE_FLAT_COLLAPSED || $mode == COMMENT_MODE_FLAT_EXPANDED) {
$query .= ' ORDER BY c.timestamp DESC';
}
else {
$query .= ' ORDER BY c.thread DESC';
}
}
else {
if ($order == COMMENT_ORDER_OLDEST_FIRST) {
if ($mode == COMMENT_MODE_FLAT_COLLAPSED || $mode == COMMENT_MODE_FLAT_EXPANDED) {
$query .= ' ORDER BY c.timestamp';
}
else {
$query .= ' ORDER BY SUBSTRING(c.thread, 1, (LENGTH(c.thread) - 1))';
}
}
}
// Start a form, for use with comment control.
$result = pager_query($query, $comments_per_page, 0, $query_count, $query_args);
$divs = 0;
$last_depth = 0;
drupal_add_css(drupal_get_path('module', 'comment') . '/comment.css');
while ($comment = db_fetch_object($result)) {
$comment = drupal_unpack($comment);
$comment->name = $comment->uid ? $comment->registered_name : $comment->name;
$comment->depth = count(explode('.', $comment->thread)) - 1;
if ($mode == COMMENT_MODE_THREADED_COLLAPSED || $mode == COMMENT_MODE_THREADED_EXPANDED) {
if ($comment->depth > $last_depth) {
$divs++;
$output .= '<div class="indented">';
$last_depth++;
}
else {
while ($comment->depth < $last_depth) {
$divs--;
$output .= '</div>';
$last_depth--;
}
}
}
if ($mode == COMMENT_MODE_FLAT_COLLAPSED) {
$output .= theme('comment_flat_collapsed', $comment);
}
else {
if ($mode == COMMENT_MODE_FLAT_EXPANDED) {
$output .= theme('comment_flat_expanded', $comment);
}
else {
if ($mode == COMMENT_MODE_THREADED_COLLAPSED) {
$output .= theme('comment_thread_collapsed', $comment);
}
else {
if ($mode == COMMENT_MODE_THREADED_EXPANDED) {
$output .= theme('comment_thread_expanded', $comment);
}
}
}
}
}
for ($i = 0; $i < $divs; $i++) {
$output .= '</div>';
}
$output .= theme('pager', NULL, $comments_per_page, 0);
return $output;
}