drawmsg.inc.t
来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 389 行
T
389 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: drawmsg.inc.t,v 1.3 2003/12/18 18:20:49 iliaa 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.***************************************************************************//* Handle poll votes if any are present */function register_vote(&$options, $poll_id, $opt_id, $mid){ /* invalid option or previously voted */ if (!isset($options[$opt_id]) || q_singleval('SELECT id FROM {SQL_TABLE_PREFIX}poll_opt_track WHERE poll_id='.$poll_id.' AND user_id='._uid)) { return; } if (db_li('INSERT INTO {SQL_TABLE_PREFIX}poll_opt_track(poll_id, user_id, poll_opt) VALUES('.$poll_id.', '._uid.', '.$opt_id.')', $a)) { q('UPDATE {SQL_TABLE_PREFIX}poll_opt SET count=count+1 WHERE id='.$opt_id); q('UPDATE {SQL_TABLE_PREFIX}poll SET total_votes=total_votes+1 WHERE id='.$poll_id); poll_cache_rebuild($opt_id, $options); q('UPDATE {SQL_TABLE_PREFIX}msg SET poll_cache='.strnull(addslashes(@serialize($options))).' WHERE id='.$mid); } return 1;}$query_type = (empty($_POST['poll_opt']) || !($_POST['poll_opt'] = (int)$_POST['poll_opt']) ? 'uq' : 'q');/* needed for message threshold & reveling messages */if (isset($_GET['rev'])) { $tmp = explode(':', $_GET['rev']); foreach ($tmp as $v) { $GLOBALS['__FMDSP__'][$v] = 1; } define('reveal_lnk', '&rev=' . $_GET['rev']);} else { define('reveal_lnk', '');}/* initialize buddy & ignore list for registered users */if (_uid) { if ($usr->buddy_list) { $usr->buddy_list = @unserialize($usr->buddy_list); } if ($usr->ignore_list) { $usr->ignore_list = @unserialize($usr->ignore_list); } /* handle temporarily un-hidden users */ if (isset($_GET['reveal'])) { $tmp = explode(':', $_GET['reveal']); foreach($tmp as $v) { if (isset($usr->ignore_list[$v])) { $usr->ignore_list[$v] = 0; } } define('unignore_tmp', '&reveal='.$_GET['reveal']); } else { define('unignore_tmp', ''); }} else { define('unignore_tmp', '');}if ($GLOBALS['FUD_OPT_2'] & 2048) { $GLOBALS['affero_domain'] = parse_url($WWW_ROOT); $GLOBALS['affero_domain'] = $GLOBALS['affero_domain']['host'];}$_SERVER['QUERY_STRING_ENC'] = str_replace('&', '&', $_SERVER['QUERY_STRING']);function make_tmp_unignore_lnk($id){ if (!isset($_GET['reveal'])) { return $_SERVER['QUERY_STRING_ENC'] . '&reveal='.$id; } else { return str_replace('&reveal='.$_GET['reveal'], unignore_tmp . ':' . $id, $_SERVER['QUERY_STRING_ENC']); }}function make_reveal_link($id){ if (!isset($GLOBALS['__FMDSP__'])) { return $_SERVER['QUERY_STRING_ENC'] . '&rev='.$id; } else { return str_replace('&rev='.$_GET['rev'], reveal_lnk . ':' . $id, $_SERVER['QUERY_STRING_ENC']); }}/* Draws a message, needs a message object, user object, permissions array, * flag indicating wether or not to show controls and a variable indicating * the number of the current message (needed for cross message pager) * last argument can be anything, allowing forms to specify various vars they * need to. */function tmpl_drawmsg($obj, $usr, $perms, $hide_controls, &$m_num, $misc){ $o1 =& $GLOBALS['FUD_OPT_1']; $o2 =& $GLOBALS['FUD_OPT_2']; $a =& $obj->users_opt; $b =& $usr->users_opt; $c =& $obj->level_opt; /* draw next/prev message controls */ if (!$hide_controls && $misc) { /* tree view is a special condition, we only show 1 message per page */ if ($_GET['t'] == 'tree') { $prev_message = $misc[0] ? '{TEMPLATE: dmsg_tree_prev_message_prev_page}' : ''; $next_message = $misc[1] ? '{TEMPLATE: dmsg_tree_next_message_next_page}' : ''; $next_page = ''; } else { /* handle previous link */ if (!$m_num && $obj->id > $obj->root_msg_id) { /* prev link on different page */ $msg_start = $misc[0] - $misc[1]; $prev_message = '{TEMPLATE: dmsg_prev_message_prev_page}'; } else if ($m_num) { /* inline link, same page */ $msg_num = $m_num; $prev_message = '{TEMPLATE: dmsg_prev_message}'; } else { $prev_message = ''; } /* handle next link */ if ($obj->id < $obj->last_post_id) { if ($m_num && !($misc[1] - $m_num - 1)) { /* next page link */ $msg_start = $misc[0] + $misc[1]; $next_message = '{TEMPLATE: dmsg_next_message_next_page}'; $next_page = '{TEMPLATE: dmsg_next_msg_page}'; } else { $msg_num = $m_num + 2; $next_message = '{TEMPLATE: dmsg_next_message}'; $next_page = ''; } } else { $next_page = $next_message = ''; } } $m_num++; } else { $next_page = $next_message = $prev_message = ''; } if (!$obj->user_id) { $user_login =& $GLOBALS['ANON_NICK']; $user_login_td = '{TEMPLATE: dmsg_ignored_user_message_anon}'; } else { $user_login =& $obj->login; $user_login_td = '{TEMPLATE: dmsg_ignored_user_message_regged}'; } /* check if the message should be ignored and it is not temporarily revelead */ if ($usr->ignore_list && !empty($usr->ignore_list[$obj->poster_id]) && !isset($GLOBALS['__FMDSP__'][$obj->id])) { $rev_url = make_reveal_link($obj->id); $un_ignore_url = make_tmp_unignore_lnk($obj->poster_id); return !$hide_controls ? '{TEMPLATE: dmsg_ignored_user_message}' : '{TEMPLATE: dmsg_ignored_user_message_static}'; } if ($obj->user_id) { if (!$hide_controls) { $custom_tag = $obj->custom_status ? '{TEMPLATE: dmsg_custom_tags}' : '{TEMPLATE: dmsg_no_custom_tags}'; if ($obj->avatar_loc && $a & 8388608 && $b & 8192 && $o1 & 28 && !($c & 2)) { if (!($c & 1)) { $level_name =& $obj->level_name; $level_image = $obj->level_img ? '{TEMPLATE: dmsg_level_image}' : ''; } else { $level_name = $level_image = ''; } } else { $level_image = $obj->level_img ? '{TEMPLATE: dmsg_level_image}' : ''; $obj->avatar_loc = ''; $level_name =& $obj->level_name; } $avatar = ($obj->avatar_loc || $level_image) ? '{TEMPLATE: dmsg_avatar}' : ''; $dmsg_tags = ($custom_tag || $level_name) ? '{TEMPLATE: dmsg_tags}' : ''; if (($o2 & 32 && !($a & 32768)) || $b & 1048576) { $online_indicator = (($obj->time_sec + $GLOBALS['LOGEDIN_TIMEOUT'] * 60) > __request_timestamp__) ? '{TEMPLATE: dmsg_online_indicator}' : '{TEMPLATE: dmsg_offline_indicator}'; } else { $online_indicator = ''; } $user_link = '{TEMPLATE: dmsg_reg_user_link}'; if ($obj->location) { if (strlen($obj->location) > $GLOBALS['MAX_LOCATION_SHOW']) { $location = substr($obj->location, 0, $GLOBALS['MAX_LOCATION_SHOW']) . '...'; } else { $location =& $obj->location; } $location = '{TEMPLATE: dmsg_location}'; } else { $location = '{TEMPLATE: dmsg_no_location}'; } if (_uid && _uid != $obj->user_id) { $buddy_link = !isset($usr->buddy_list[$obj->user_id]) ? '{TEMPLATE: dmsg_buddy_link_add}' : '{TEMPLATE: dmsg_buddy_link_remove}'; $ignore_link = !isset($usr->ignore_list[$obj->user_id]) ? '{TEMPLATE: dmsg_add_user_ignore_list}' : '{TEMPLATE: dmsg_remove_user_ignore_list}'; $dmsg_bd_il = '{TEMPLATE: dmsg_bd_il}'; } else { $dmsg_bd_il = ''; } /* show im buttons if need be */ if ($b & 16384) { $im_icq = $obj->icq ? '{TEMPLATE: dmsg_im_icq}' : ''; $im_aim = $obj->aim ? '{TEMPLATE: dmsg_im_aim}' : ''; $im_yahoo = $obj->yahoo ? '{TEMPLATE: dmsg_im_yahoo}' : ''; $im_msnm = $obj->msnm ? '{TEMPLATE: dmsg_im_msnm}' : ''; $im_jabber = $obj->jabber ? '{TEMPLATE: dmsg_im_jabber}' : ''; if ($o2 & 2048) { $im_affero = $obj->affero ? '{TEMPLATE: drawmsg_affero_reg}' : '{TEMPLATE: drawmsg_affero_noreg}'; } else { $im_affero = ''; } $dmsg_im_row = ($im_icq || $im_aim || $im_yahoo || $im_msnm || $im_jabber || $im_affero) ? '{TEMPLATE: dmsg_im_row}' : ''; } else { $dmsg_im_row = ''; } } else { $user_link = '{TEMPLATE: dmsg_reg_user_no_link}'; $dmsg_tags = $dmsg_im_row = $dmsg_bd_il = $location = $online_indicator = $avatar = ''; } } else { $user_link = '{TEMPLATE: dmsg_anon_user}'; $dmsg_tags = $dmsg_im_row = $dmsg_bd_il = $location = $online_indicator = $avatar = ''; } /* Display message body * If we have message threshold & the entirity of the post has been revelead show a preview * otherwise if the message body exists show an actual body * if there is no body show a 'no-body' message */ if (!$hide_controls && $obj->message_threshold && $obj->length_preview && $obj->length > $obj->message_threshold && !isset($GLOBALS['__FMDSP__'][$obj->id])) { $rev_url = make_reveal_link($obj->id); $msg_body = read_msg_body($obj->offset_preview, $obj->length_preview, $obj->file_id_preview); $msg_body = '{TEMPLATE: dmsg_short_message_body}'; } else if ($obj->length) { $msg_body = read_msg_body($obj->foff, $obj->length, $obj->file_id); $msg_body = '{TEMPLATE: dmsg_normal_message_body}'; } else { $msg_body = '{TEMPLATE: dmsg_no_msg_body}'; } if ($obj->poll_cache) { $obj->poll_cache = @unserialize($obj->poll_cache); } /* handle poll votes */ if (!empty($_POST['poll_opt']) && ($_POST['poll_opt'] = (int)$_POST['poll_opt']) && !($obj->thread_opt & 1) && $perms & 512) { if (register_vote($obj->poll_cache, $obj->poll_id, $_POST['poll_opt'], $obj->id)) { $obj->total_votes += 1; $obj->cant_vote = 1; } unset($_GET['poll_opt']); } /* display poll if there is one */ if ($obj->poll_id && $obj->poll_cache) { /* we need to determine if we allow the user to vote or see poll results */ $show_res = 1; if (isset($_GET['pl_view']) && !isset($_POST['pl_view'])) { $_POST['pl_view'] = $_GET['pl_view']; } /* various conditions that may prevent poll voting */ if (!$hide_controls && !$obj->cant_vote && (!isset($_POST['pl_view']) || $_POST['pl_view'] != $obj->poll_id)) { if ($perms & 512 && (!($obj->thread_opt & 1) || $perms & 4096)) { if (!$obj->expiry_date || ($obj->creation_date + $obj->expiry_date) > __request_timestamp__) { /* check if the max # of poll votes was reached */ if (!$obj->max_votes || $obj->total_votes < $obj->max_votes) { $show_res = 0; } } } } $i = 0; $poll_data = ''; foreach ($obj->poll_cache as $k => $v) { $i++; if ($show_res) { $length = ($v[1] && $obj->total_votes) ? round($v[1] / $obj->total_votes * 100) : 0; $poll_data .= '{TEMPLATE: dmsg_poll_result}'; } else { $poll_data .= '{TEMPLATE: dmsg_poll_option}'; } } if (!$show_res) { $view_poll_results_button = $obj->total_votes ? '{TEMPLATE: dmsg_view_poll_results_button}' : ''; $poll_buttons = '{TEMPLATE: dmsg_poll_buttons}'; $poll = '{TEMPLATE: dmsg_poll}'; } else { $poll = '{TEMPLATE: mini_dmsg_poll}'; } } else { $poll = ''; } /* draw file attachments if there are any */ $drawmsg_file_attachments = ''; if ($obj->attach_cnt && !empty($obj->attach_cache)) { $atch = @unserialize($obj->attach_cache); if (is_array($atch) && count($atch)) { foreach ($atch as $v) { $sz = $v[2] / 1024; $sz = $sz < 1000 ? number_format($sz, 2).'KB' : number_format($sz/1024, 2).'MB'; $drawmsg_file_attachments .= '{TEMPLATE: dmsg_drawmsg_file_attachment}'; } $drawmsg_file_attachments = '{TEMPLATE: dmsg_drawmsg_file_attachments}'; } } /* Determine if the message was updated and if this needs to be shown */ if ($obj->update_stamp) { if ($obj->updated_by != $obj->poster_id && $o1 & 67108864) { $modified_message = '{TEMPLATE: dmsg_modified_message_mod}'; } else if ($obj->updated_by == $obj->poster_id && $o1 & 33554432) { $modified_message = '{TEMPLATE: dmsg_modified_message}'; } else { $modified_message = ''; } } else { $modified_message = ''; } $rpl = ''; if (!$hide_controls) { $ip_address = ($b & 1048576 || $usr->md || $o1 & 134217728) ? '{TEMPLATE: dmsg_ip_address}' : ''; $host_name = ($obj->host_name && $o1 & 268435456) ? '{TEMPLATE: dmsg_host_name}' : ''; $msg_icon = !$obj->icon ? '{TEMPLATE: dmsg_no_msg_icon}' : '{TEMPLATE: dmsg_msg_icon}'; $signature = ($obj->sig && $o1 & 32768 && $obj->msg_opt & 1 && $b & 4096) ? '{TEMPLATE: dmsg_signature}' : ''; $report_to_mod_link = '{TEMPLATE: dmsg_report_to_mod_link}'; if ($obj->reply_to && $obj->reply_to != $obj->id && $o2 & 536870912) { if ($_GET['t'] != 'tree' && $_GET['t'] != 'msg') { $lnk = d_thread_view; } else { $lnk =& $_GET['t']; } $rpl = '{TEMPLATE: dmsg_reply_to}'; } if ($obj->user_id) { $user_profile = '{TEMPLATE: dmsg_user_profile}'; $email_link = ($o1 & 4194304 && $a & 16) ? '{TEMPLATE: dmsg_email_link}' : ''; $private_msg_link = $o1 & 1024 ? '{TEMPLATE: dmsg_private_msg_link}' : ''; $dmsg_user_info = '{TEMPLATE: dmsg_user_info}'; } else { $user_profile = $email_link = $private_msg_link = ''; $dmsg_user_info = ($host_name || $ip_address) ? '{TEMPLATE: dmsg_anon_info}' : ''; } /* little trick, this variable will only be avaliable if we have a next link leading to another page */ if (isset($next_page)) { $next_page = '{TEMPLATE: dmsg_no_next_msg_page}'; } $delete_link = $perms & 32 ? '{TEMPLATE: dmsg_delete_link}' : ''; if ($perms & 16 || (_uid == $obj->poster_id && (!$GLOBALS['EDIT_TIME_LIMIT'] || __request_timestamp__ - $obj->post_stamp < $GLOBALS['EDIT_TIME_LIMIT'] * 60))) { $edit_link = '{TEMPLATE: dmsg_edit_link}'; } else { $edit_link = ''; } if (!($obj->thread_opt & 1) || $perms & 4096) { $reply_link = '{TEMPLATE: dmsg_reply_link}'; $quote_link = '{TEMPLATE: dmsg_quote_link}'; } else { $reply_link = $quote_link = ''; } $message_toolbar = '{TEMPLATE: dmsg_message_toolbar}'; } else { $host_name = $ip_address = $dmsg_user_info = $msg_icon = $signature = $report_to_mod_link = $message_toolbar = ''; } return '{TEMPLATE: message_entry}';}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?