selmsg.php.t
来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 230 行
T
230 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: selmsg.php.t,v 1.1.1.1 2003/10/17 21:11:30 ralfbecker Exp $** This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or * (at your option) any later version.***************************************************************************//*{PRE_HTML_PHP}*/function ifstr($opt1, $opt2, $str){ return (strlen($str) ? $opt1 : $opt2);}function valstat($a){ return ($a ? '{TEMPLATE: status_indicator_on}' : '{TEMPLATE: status_indicator_off}');}function path_info_lnk($var, $val){ $a = $_GET; unset($a['rid'], $a['S'], $a['t']); if (isset($a[$var])) { unset($a[$var]); $rm = 1; } $url = '/sel'; foreach ($a as $k => $v) { $url .= '/' . $k . '/' . $v; } if (!isset($rm)) { $url .= '/' . $var . '/' . $val; } return $url . '/' . _rsid;} ses_update_status($usr->sid, '{TEMPLATE: selmsg_update}'); $count = $usr->posts_ppg ? $usr->posts_ppg : $POSTS_PER_PAGE; if (!isset($_GET['start']) || !($start = (int)$_GET['start'])) { $start = 0; } /* limited to today */ if (isset($_GET['date'])) { if ($_GET['date'] != 'today') { $tm = __request_timestamp__ - ((int)$_GET['date'] - 1) * 86400; } else { $tm = __request_timestamp__; } list($day, $month, $year) = explode(' ', strftime('%d %m %Y', $tm)); $tm_today_start = mktime(0, 0, 0, $month, $day, $year); $tm_today_end = $tm_today_start + 86400; $date_limit = ' AND m.post_stamp>'.$tm_today_start.' AND m.post_stamp<'.$tm_today_end . ' '; } else { $date_limit = ''; } if (!_uid) { /* these options are restricted to registered users */ unset($_GET['sub_forum_limit'], $_GET['sub_th_limit'], $_GET['unread']); } $unread_limit = (isset($_GET['unread']) && _uid) ? ' AND m.post_stamp > '.$usr->last_read.' AND (r.id IS NULL OR r.last_view < m.post_stamp) ' : ''; $th = isset($_GET['th']) ? (int)$_GET['th'] : 0; $frm_id = isset($_GET['frm_id']) ? (int)$_GET['frm_id'] : 0; $perm_limit = $usr->users_opt & 1048576 ? '' : ' AND (mm.id IS NOT NULL OR ' . (_uid ? '((CASE WHEN g2.id IS NOT NULL THEN g2.group_cache_opt ELSE g1.group_cache_opt END)' : '(g1.group_cache_opt') . ' & 2) > 0)'; /* mark messages read for registered users */ if (_uid && isset($_GET['mr']) && !empty($usr->data) && count($usr->data)) { foreach ($usr->data as $ti => $mi) { if (!(int)$ti || !(int)$mi) { break; } user_register_thread_view($ti, __request_timestamp__, $mi); } } ses_putvar((int)$usr->sid, null); /* no other limiters are present, assume 'today' limit */ if (!$unread_limit && !isset($_GET['date']) && !isset($_GET['reply_count'])) { $_GET['date'] = 1; } /* date limit */ $dt_opt = isset($_GET['date']) ? str_replace('&date='.$_GET['date'], '', $_SERVER['QUERY_STRING']) : $_SERVER['QUERY_STRING'] . '&date=1'; $rp_opt = isset($_GET['reply_count']) ? str_replace('&reply_count='.$_GET['reply_count'], '', $_SERVER['QUERY_STRING']) : $_SERVER['QUERY_STRING'] . '&reply_count=0'; $s_today = valstat(isset($_GET['date'])); /* reply limit */ $s_unu = valstat(isset($_GET['reply_count'])); if (_uid) { $un_opt = isset($_GET['unread']) ? str_replace('&unread='.$_GET['unread'], '', $_SERVER['QUERY_STRING']) : $_SERVER['QUERY_STRING'] . '&unread=1'; $frm_opt = isset($_GET['sub_forum_limit']) ? str_replace('&sub_forum_limit='.$_GET['sub_forum_limit'], '', $_SERVER['QUERY_STRING']) : $_SERVER['QUERY_STRING'] . '&sub_forum_limit=1'; $th_opt = isset($_GET['sub_th_limit']) ? str_replace('&sub_th_limit='.$_GET['sub_th_limit'], '', $_SERVER['QUERY_STRING']) : $_SERVER['QUERY_STRING'] . '&sub_th_limit=1'; $s_unread = valstat(isset($_GET['unread'])); $s_subf = valstat(isset($_GET['sub_forum_limit'])); $s_subt = valstat(isset($_GET['sub_th_limit'])); $subscribed_thr = '{TEMPLATE: subscribed_thr}'; $subscribed_frm = '{TEMPLATE: subscribed_frm}'; $unread_messages = '{TEMPLATE: unread_messages}'; } else { $subscribed_thr = $subscribed_frm = $unread_messages = ''; } $todays_posts = '{TEMPLATE: todays_posts}'; $unanswered = '{TEMPLATE: unanswered}'; make_perms_query($fields, $join); if (!$unread_limit) { $total = (int) q_singleval('SELECT count(*) FROM {SQL_TABLE_PREFIX}msg m INNER JOIN {SQL_TABLE_PREFIX}thread t ON m.thread_id=t.id INNER JOIN {SQL_TABLE_PREFIX}forum f ON t.forum_id=f.id INNER JOIN {SQL_TABLE_PREFIX}cat c ON f.cat_id=c.id '.(isset($_GET['sub_forum_limit']) ? 'INNER JOIN {SQL_TABLE_PREFIX}forum_notify fn ON fn.forum_id=f.id AND fn.user_id='._uid : '').' '.(isset($_GET['sub_th_limit']) ? 'INNER JOIN {SQL_TABLE_PREFIX}thread_notify tn ON tn.thread_id=t.id AND tn.user_id='._uid : '').' '.$join.' LEFT JOIN {SQL_TABLE_PREFIX}mod mm ON mm.forum_id=f.id AND mm.user_id='._uid.' WHERE m.apr=1 '.$date_limit.' '.($frm_id ? ' AND f.id='.$frm_id : '').' '.($th ? ' AND t.id='.$th : '').' '.(isset($_GET['reply_count']) ? ' AND t.replies='.(int)$_GET['reply_count'] : '').' '.$perm_limit); }/*{POST_HTML_PHP}*/ if ($unread_limit || $total) { /* figure out the query */ $c = $query_type('SELECT m.*, t.thread_opt, t.root_msg_id, t.last_post_id, t.forum_id, f.message_threshold, f.name, u.id AS user_id, u.alias AS login, u.avatar_loc, u.email, u.posted_msg_count, u.join_date, u.location, u.sig, u.custom_status, u.icq, u.jabber, u.affero, u.aim, u.msnm, u.yahoo, u.last_visit AS time_sec, u.users_opt, l.name AS level_name, l.level_opt, l.img AS level_img, p.max_votes, p.expiry_date, p.creation_date, p.name AS poll_name, p.total_votes, pot.id AS cant_vote, r.last_view, mm.id AS md, m2.subject AS thr_subject, '.$fields.' FROM {SQL_TABLE_PREFIX}msg m INNER JOIN {SQL_TABLE_PREFIX}thread t ON m.thread_id=t.id INNER JOIN {SQL_TABLE_PREFIX}msg m2 ON m2.id=t.root_msg_id INNER JOIN {SQL_TABLE_PREFIX}forum f ON t.forum_id=f.id INNER JOIN {SQL_TABLE_PREFIX}cat c ON f.cat_id=c.id '.(isset($_GET['sub_forum_limit']) ? 'INNER JOIN {SQL_TABLE_PREFIX}forum_notify fn ON fn.forum_id=f.id AND fn.user_id='._uid : '').' '.(isset($_GET['sub_th_limit']) ? 'INNER JOIN {SQL_TABLE_PREFIX}thread_notify tn ON tn.thread_id=t.id AND tn.user_id='._uid : '').' '.$join.' LEFT JOIN {SQL_TABLE_PREFIX}read r ON r.thread_id=t.id AND r.user_id='._uid.' LEFT JOIN {SQL_TABLE_PREFIX}users u ON m.poster_id=u.id LEFT JOIN {SQL_TABLE_PREFIX}level l ON u.level_id=l.id LEFT JOIN {SQL_TABLE_PREFIX}poll p ON m.poll_id=p.id LEFT JOIN {SQL_TABLE_PREFIX}poll_opt_track pot ON pot.poll_id=p.id AND pot.user_id='._uid.' LEFT JOIN {SQL_TABLE_PREFIX}mod mm ON mm.forum_id=f.id AND mm.user_id='._uid.' WHERE m.apr=1 '.$date_limit.' '.($frm_id ? ' AND f.id='.$frm_id : '').' '.($th ? ' AND t.id='.$th : '').' '.(isset($_GET['reply_count']) ? ' AND t.replies='.(int)$_GET['reply_count'] : '').' '.$unread_limit.' '.$perm_limit.' ORDER BY f.last_post_id, t.last_post_date, m.post_stamp LIMIT '.qry_limit($count, $start)); /* message drawing code */ $message_data = ''; $n = $prev_frm = $prev_th = ''; while ($r = db_rowobj($c)) { if ($prev_frm != $r->forum_id) { $prev_frm = $r->forum_id; $message_data .= '{TEMPLATE: forum_row}'; $perms = perms_from_obj($r, ($usr->users_opt & 1048576)); } if ($prev_th != $r->thread_id) { $thl[] = $r->thread_id; $prev_th = $r->thread_id; $message_data .= '{TEMPLATE: thread_row}'; } if (_uid && $r->last_view < $r->post_stamp && $r->post_stamp > $usr->last_read && !isset($mark_read[$r->thread_id])) { $mark_read[$r->thread_id] = $r->id; } $usr->md = $r->md; $message_data .= tmpl_drawmsg($r, $usr, $perms, false, $n, ''); } un_register_fps(); unset($c); } else { $message_data = ''; } if (_uid && isset($mark_read)) { ses_putvar((int)$usr->sid, $mark_read); } if (isset($thl)) { q('UPDATE {SQL_TABLE_PREFIX}thread SET views=views+1 WHERE id IN('.implode(',', $thl).')'); } if (!$message_data) { if (isset($_GET['unread'])) { $message_data = '{TEMPLATE: no_unread_messages}'; if (!$frm_id && !$th) { user_mark_all_read(_uid); } else if ($frm_id) { user_mark_forum_read(_uid, $frm_id, $usr->last_read); } } else { $message_data = '{TEMPLATE: no_result}'; } } if (!$unread_limit && $total > $count) { if (!isset($_GET['mr'])) { $_SERVER['QUERY_STRING'] .= '&mr=1'; } $pager = tmpl_create_pager($start, $count, $total, '{ROOT}?' . str_replace('&start='.$start, '', $_SERVER['QUERY_STRING'])); } else if ($unread_limit) { if (!isset($_GET['mark_page_read'])) { $_SERVER['QUERY_STRING'] .= '&mark_page_read=1&mr=1'; } $pager = '{TEMPLATE: more_unread_messages}'; } else { $pager = ''; }/*{POST_PAGE_PHP_CODE}*/?>{TEMPLATE: SELMSG_PAGE}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?