function column_head($value, $sort = '', $event = '', $is_link = '', $dir = '', $crit = '', $method = '', $class = '') { return column_multi_head(array(array('value' => $value, 'sort' => $sort, 'event' => $event, 'is_link' => $is_link, 'dir' => $dir, 'crit' => $crit, 'method' => $method)), $class); }
function discuss_list($message = '') { pagetop(gTxt('list_discussions'), $message); echo graf('<a href="index.php?event=discuss' . a . 'step=ipban_list">' . gTxt('list_banned_ips') . '</a>', ' style="text-align: center;"'); extract(get_prefs()); extract(gpsa(array('sort', 'dir', 'page', 'crit', 'search_method'))); $dir = $dir == 'desc' ? 'desc' : 'asc'; switch ($sort) { case 'id': $sort_sql = 'discussid ' . $dir; break; case 'date': $sort_sql = 'posted ' . $dir; break; case 'ip': $sort_sql = 'ip ' . $dir . ', posted asc'; break; case 'name': $sort_sql = 'name ' . $dir . ', posted asc'; break; case 'email': $sort_sql = 'email ' . $dir . ', posted asc'; break; case 'website': $sort_sql = 'web ' . $dir . ', posted asc'; break; case 'message': $sort_sql = 'message ' . $dir . ', posted asc'; break; case 'parent': $sort_sql = 'parentid ' . $dir . ', posted asc'; break; default: $dir = 'desc'; $sort_sql = 'posted ' . $dir; break; } $switch_dir = $dir == 'desc' ? 'asc' : 'desc'; $criteria = 1; if ($search_method and $crit) { $crit_escaped = doSlash($crit); $critsql = array('id' => "discussid = '{$crit_escaped}'", 'parent' => "parentid = '{$crit_escaped}'", 'name' => "name like '%{$crit_escaped}%'", 'message' => "message like '%{$crit_escaped}%'", 'email' => "email like '%{$crit_escaped}%'", 'website' => "web like '%{$crit_escaped}%'", 'ip' => "ip like %{$crit_escaped}%"); if (array_key_exists($search_method, $critsql)) { $criteria = $critsql[$search_method]; $limit = 500; } else { $search_method = ''; $crit = ''; } } else { $search_method = ''; $crit = ''; } $total = safe_count('txp_discuss', "{$criteria}"); if ($total < 1) { if ($criteria != 1) { echo n . discuss_search_form($crit, $search_method) . n . graf(gTxt('no_results_found'), ' style="text-align: center;"'); } else { echo graf(gTxt('no_comments_recorded'), ' style="text-align: center;"'); } return; } $limit = max(@$comment_list_pageby, 15); list($page, $offset, $numPages) = pager($total, $limit, $page); echo discuss_search_form($crit, $search_method); $rs = safe_rows_start('*, unix_timestamp(posted) as uPosted', 'txp_discuss', "{$criteria} order by {$sort_sql} limit {$offset}, {$limit}"); if ($rs) { echo n . n . '<form name="longform" method="post" action="index.php" onsubmit="return verify(\'' . gTxt('are_you_sure') . '\')">' . n . startTable('list', '', '', '', '90%') . n . n . tr(column_head('ID', 'id', 'discuss', true, $switch_dir, $crit, $search_method) . column_head('date', 'date', 'discuss', true, $switch_dir, $crit, $search_method) . column_head('name', 'name', 'discuss', true, $switch_dir, $crit, $search_method) . column_head('message', 'message', 'discuss', true, $switch_dir, $crit, $search_method) . column_multi_head(array(array('value' => 'email', 'sort' => 'email', 'event' => 'discuss', 'is_link' => true, 'dir' => $switch_dir, 'crit' => $crit, 'method' => $search_method), array('value' => 'website', 'sort' => 'website', 'event' => 'discuss', 'is_link' => true, 'dir' => $switch_dir, 'crit' => $crit, 'method' => $search_method), array('value' => 'IP', 'sort' => 'ip', 'event' => 'discuss', 'is_link' => true, 'dir' => $switch_dir, 'crit' => $crit, 'method' => $search_method)), 'discuss_detail') . column_head('status', 'status', 'discuss', true, $switch_dir, $crit, $search_method, 'discuss_detail') . column_head('parent', 'parent', 'discuss', true, $switch_dir, $crit, $search_method) . hCell()); include_once txpath . '/publish/taghandlers.php'; while ($a = nextRow($rs)) { extract($a); $parentid = assert_int($parentid); $tq = safe_row('*, ID as thisid, unix_timestamp(Posted) as posted', 'textpattern', "ID = {$parentid}"); $edit_url = '?event=discuss' . a . 'step=discuss_edit' . a . 'discussid=' . $discussid . a . 'sort=' . $sort . a . 'dir=' . $dir . a . 'page=' . $page . a . 'search_method=' . $search_method . a . 'crit=' . $crit; $dmessage = $visible == SPAM ? short_preview($message) : $message; switch ($visible) { case VISIBLE: $comment_status = gTxt('visible'); $row_class = 'visible'; break; case SPAM: $comment_status = gTxt('spam'); $row_class = 'spam'; break; case MODERATE: $comment_status = gTxt('unmoderated'); $row_class = 'moderate'; break; default: break; } if (empty($tq)) { $parent = gTxt('article_deleted') . ' (' . $parentid . ')'; $view = ''; } else { $parent_title = empty($tq['Title']) ? '<em>' . gTxt('untitled') . '</em>' : $tq['Title']; $parent = href($parent_title, '?event=list' . a . 'step=list' . a . 'search_method=id' . a . 'crit=' . $tq['ID']); $view = ''; if ($visible == VISIBLE and in_array($tq['Status'], array(4, 5))) { $view = n . t . '<li><a href="' . permlinkurl($tq) . '#c' . $discussid . '">' . gTxt('view') . '</a></li>'; } } echo n . n . tr(n . td('<a href="' . $edit_url . '">' . $discussid . '</a>' . n . '<ul class="discuss_detail">' . n . t . '<li><a href="' . $edit_url . '">' . gTxt('edit') . '</a></li>' . $view . n . '</ul>', 50) . td(safe_strftime('%d %b %Y %I:%M %p', $uPosted), 140) . td($name, 75) . td(short_preview($dmessage)) . td("<ul><li>" . soft_wrap($email, 30) . "</li><li>" . soft_wrap($web, 30) . "</li><li>{$ip}</li></ul>", 100, 'discuss_detail') . td($comment_status, 75, 'discuss_detail') . td($parent, 75) . td(fInput('checkbox', 'selected[]', $discussid), 20), ' class="' . $row_class . '"'); } echo tr(tda(toggle_box('discuss_detail'), ' colspan="2" style="text-align: left; border: none;"') . tda(select_buttons() . discuss_multiedit_form($page, $sort, $dir, $crit, $search_method), ' colspan="9" style="text-align: right; border: none;"')) . endTable() . '</form>' . nav_form('discuss', $page, $numPages, $sort, $dir, $crit, $search_method) . pageby_form('discuss', $comment_list_pageby); } }