📄 messenger.php
字号:
$show_popup = $to_member['view_pop'];
$db_string = $std->compile_db_string( array(
"member_id" => $to_member['id'],
"msg_date" => time( ),
"read_state" => "0",
"title" => $ibforums->input['msg_title'],
"message" => $std->remove_tags( $ibforums->input['Post'] ),
"from_id" => $this->member['id'],
"vid" => "in",
"recipient_id" => $to_member['id'],
"tracking" => $ibforums->input['add_tracking']
) );
$DB->query( "INSERT INTO ibf_messages (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")" );
$new_id = $DB->get_insert_id( );
unset( $db_string );
$DB->query( "UPDATE ibf_members SET msg_total = msg_total + 1, new_msg = new_msg + 1, msg_from_id='".$this->member['id']."', "."msg_msg_id='".$new_id."', "."show_popup='".$show_popup."' "."WHERE id='".$to_member['id']."'" );
if ( $to_member['email_pm'] == 1 )
{
$to_member['language'] = $to_member['language'] == "" ? "en" : $to_member['language'];
$this->email->get_template( "pm_notify", $to_member['language'] );
$this->email->build_message( array(
"NAME" => $to_member['name'],
"POSTER" => $ibforums->member['name'],
"TITLE" => $ibforums->input['msg_title'],
"LINK" => "?act=Msg&CODE=03&VID=in&MSID={$new_id}"
) );
$this->email->subject = $ibforums->lang['pm_email_subject'];
$this->email->to = $to_member['email'];
$this->email->send_mail( );
}
}
if ( $ibforums->input['add_sent'] )
{
$DB->query( "UPDATE ibf_members SET msg_total = msg_total + 1 WHERE id='".$this->member['id']."'" );
$db_string = $std->compile_db_string( array(
"member_id" => $this->member['id'],
"msg_date" => time( ),
"read_state" => 0,
"title" => $ibforums->lang['saved_sent_msg']." ".$ibforums->input['msg_title'],
"message" => $ibforums->input['Post'],
"from_id" => $this->member['id'],
"vid" => "sent",
"recipient_id" => $to_member['id']
) );
$DB->query( "INSERT INTO ibf_messages (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")" );
unset( $db_string );
}
if ( $ibforums->input['OID'] )
{
$DB->query( "DELETE from ibf_messages WHERE msg_id='".$ibforums->input['OID']."' AND member_id='".$ibforums->member['id']."' AND vid='unsent'" );
}
$text = preg_replace( "/<#FROM_MEMBER#>/", $this->member['name'], $ibforums->lang['sent_text'] );
$text = preg_replace( "/<#TO_MEMBER#>/", $to_member['name'], $text );
$text = preg_replace( "/<#MESSAGE_TITLE#>/", $ibforums->input['msg_title'], $text );
$print->redirect_screen( $text, "&act=Msg&CODE=01" );
}
}
}
}
function msg_list( )
{
global $ibforums;
global $DB;
global $std;
global $print;
$sort_key = "";
switch ( $ibforums->input['sort'] )
{
case "rdate" :
$sort_key = "m.msg_date ASC";
break;
case "title" :
$sort_key = "m.title ASC";
break;
case "name" :
$sort_key = "mp.name ASC";
break;
default :
$sort_key = "m.msg_date DESC";
break;
}
$DB->query( "SELECT COUNT(*) as msg_total FROM ibf_messages WHERE member_id='".$this->member['id']."' AND vid <> 'unsent'" );
$total = $DB->fetch_row( );
$total['msg_total'] = 0 < $total['msg_total'] ? $total['msg_total'] : 0;
if ( $ibforums->member['msg_total'] == "" )
{
$DB->query( "UPDATE ibf_members SET msg_total='".$total['msg_total']."' WHERE id='".$this->member['id']."'" );
}
$DB->query( "SELECT COUNT(*) as msg_total FROM ibf_messages WHERE member_id='".$this->member['id']."' AND vid='{$this->vid}'" );
$total_current = $DB->fetch_row( );
$total_current['msg_total'] = 0 < $total_current['msg_total'] ? $total_current['msg_total'] : 0;
$info['full_messenger'] = "";
$info['full_text'] = "";
$info['total_messages'] = $total['msg_total'];
$info['img_width'] = 1;
$info['vid'] = $this->vid;
$info['date_order'] = $sort_key == "m.msg_date DESC" ? "rdate" : "msg_date";
$amount_info = sprintf( $ibforums->lang['pmpc_info_string'], $total['msg_total'], $ibforums->lang['pmpc_unlimited'] );
if ( 0 < $ibforums->member['g_max_messages'] )
{
$amount_info = sprintf( $ibforums->lang['pmpc_info_string'], $total['msg_total'], $ibforums->member['g_max_messages'] );
$info['full_percent'] = $total['msg_total'] ? sprintf( "%.0f", $total['msg_total'] / $ibforums->member['g_max_messages'] * 100 ) : 0;
$info['img_width'] = 0 < $info['full_percent'] ? intval( $info['full_percent'] ) * 3 : 1;
if ( 300 < $info['img_width'] )
{
$info['img_width'] = 300;
}
if ( $ibforums->member['g_max_messages'] <= $total['msg_total'] )
{
$info['full_messenger'] = "<span class='highlight'>".$ibforums->lang['folders_full']."</span>";
}
else
{
$info['full_messenger'] = str_replace( "<#PERCENT#>", $info['full_percent'], $ibforums->lang['pmpc_full_string'] );
}
}
$start = 0 < intval( $ibforums->input['st'] ) ? intval( $ibforums->input['st'] ) : 0;
$p_end = 0 < $ibforums->vars['show_max_msg_list'] ? $ibforums->vars['show_max_msg_list'] : 50;
$pages = $std->build_pagelinks( array(
"TOTAL_POSS" => $total_current['msg_total'],
"PER_PAGE" => $p_end,
"CUR_ST_VAL" => $start,
"L_SINGLE" => "",
"L_MULTI" => $ibforums->lang['msg_pages'],
"BASE_URL" => $this->base_url."&act=Msg&CODE=1&VID=".$this->vid."&sort=".$ibforums->input['sort']
) );
if ( $this->vid == "sent" )
{
$ibforums->lang['message_from'] = $ibforums->lang['message_to'];
$DB->query( "SELECT m.*, mp.name as from_name FROM ibf_messages m, ibf_members mp WHERE member_id='".$this->member['id']."' AND vid='".$this->vid."' and mp.id=m.recipient_id ORDER BY {$sort_key} LIMIT {$start}, {$p_end}" );
}
else
{
$DB->query( "SELECT m.*, mp.name as from_name FROM ibf_messages m, ibf_members mp WHERE member_id='".$this->member['id']."' AND vid='".$this->vid."' and mp.id=m.from_id ORDER BY {$sort_key} LIMIT {$start}, {$p_end}" );
}
$this->output .= $this->html->inbox_table_header( $this->msg_stats['current_dir'], $info, $this->jump_html, $pages );
if ( $DB->get_num_rows( ) )
{
while ( $row = $DB->fetch_row( ) )
{
if ( $this->vid == "sent" )
{
$row['icon'] = "<{M_READ}>";
}
else
{
$row['icon'] = $row['read_state'] == 1 ? "<{M_READ}>" : "<{M_UNREAD}>";
}
$row['date'] = $std->get_date( $row['msg_date'], "LONG" );
if ( $this->vid != "sent" )
{
$row['add_to_contacts'] = "[<a href='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Msg&CODE=02&MID={$row['from_id']}'>{$ibforums->lang[add_to_book]}</a>]";
}
else
{
$row['from_id'] = $row['recipient_id'];
}
$d_array = array(
"msg" => $row,
"member" => $this->member,
"stat" => $this->msg_stats
);
$this->output .= $this->html->inbox_row( $d_array );
}
}
else
{
$this->output .= $this->html->no_msg_inbox( );
}
$this->output .= $this->html->end_inbox( $this->jump_html, $amount_info, $pages );
if ( $this->msg_stats['current_id'] == "in" )
{
$DB->query( "UPDATE ibf_members SET new_msg='0' WHERE id='".$this->member['id']."'" );
}
$this->page_title = $ibforums->lang['t_welcome'];
$this->nav = array(
"<a href='".$this->base_url."&act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>"
);
}
function view_saved( )
{
global $ibforums;
global $DB;
global $std;
global $print;
$this->output .= $this->html->unsent_table_header( );
$DB->query( "SELECT m.*, mp.name as to_name FROM ibf_messages m, ibf_members mp WHERE member_id='".$this->member['id']."' AND vid='unsent' and mp.id=m.recipient_id ORDER BY msg_date DESC" );
if ( $DB->get_num_rows( ) )
{
while ( $row = $DB->fetch_row( ) )
{
$row['icon'] = "<{M_READ}>";
$row['date'] = $std->get_date( $row['msg_date'], "LONG" );
$row['cc_users'] = $row['cc_users'] == "" ? $ibforums->lang['no'] : $ibforums->lang['yes'];
$d_array = array(
"msg" => $row,
"member" => $this->member
);
$this->output .= $this->html->unsent_row( $d_array );
}
}
else
{
$this->output .= $this->html->no_msg_inbox( );
}
$this->output .= $this->html->unsent_end( );
$this->page_title = $ibforums->lang['t_welcome'];
$this->nav = array(
"<a href='".$this->base_url."&act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>"
);
}
function show_tracking( )
{
global $ibforums;
global $DB;
global $std;
global $print;
$this->output .= $this->html->trackread_table_header( );
$DB->query( "SELECT m.*, mp.name as to_name, mp.id as memid FROM ibf_messages m, ibf_members mp WHERE m.tracking=1 AND m.read_state=1 AND m.from_id='".$this->member['id']."' AND m.member_id=mp.id ORDER BY msg_date DESC" );
if ( $DB->get_num_rows( ) )
{
while ( $row = $DB->fetch_row( ) )
{
$row['icon'] = "<{M_READ}>";
$row['date'] = $std->get_date( $row['read_date'], "LONG" );
$this->output .= $this->html->trackread_row( $row );
}
}
else
{
$this->output .= $this->html->no_msg_inbox( );
}
$this->output .= $this->html->trackread_end( );
$this->output .= $this->html->trackunread_table_header( );
$DB->query( "SELECT m.*, mp.name as to_name, mp.id as memid FROM ibf_messages m, ibf_members mp WHERE m.tracking=1 AND m.read_state=0 AND m.from_id='".$this->member['id']."' AND m.member_id=mp.id ORDER BY msg_date DESC" );
if ( $DB->get_num_rows( ) )
{
while ( $row = $DB->fetch_row( ) )
{
$row['icon'] = "<{M_UNREAD}>";
$row['date'] = $std->get_date( $row['msg_date'], "LONG" );
$this->output .= $this->html->trackunread_row( $row );
}
}
else
{
$this->output .= $this->html->no_msg_inbox( );
}
$this->output .= $this->html->trackunread_end( );
$this->page_title = $ibforums->lang['t_welcome'];
$this->nav = array(
"<a href='".$this->base_url."&act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>"
);
}
function parse_member( $member = array( ), $row = array( ) )
{
global $ibforums;
global $std;
global $DB;
$member['name'] = "<a href='{$this->base_url}&act=Profile&CODE=03&MID={$member['id']}'>{$member['name']}</a>";
$member['avatar'] = $std->get_avatar( $member['avatar'], $ibforums->member['view_avs'], $member['avatar_size'] );
$member['MEMBER_JOINED'] = $ibforums->lang['m_joined']." ".$std->get_date( $member['joined'], "JOINED" );
$member['MEMBER_GROUP'] = $ibforums->lang['m_group']." ".$member['member_group'];
$member['MEMBER_POSTS'] = $ibforums->lang['m_posts']." ".$member['posts'];
$member['PROFILE_ICON'] = "<a href='{$this->base_url}&act=Profile&CODE=03&MID={$member['id']}'><{P_PROFILE}></a> ";
$member['MESSAGE_ICON'] = "<a href='{$this->base_url}&act=Msg&CODE=04&MID={$member['id']}'><{P_MSG}></a> ";
if ( !$member['hide_email'] )
{
$member['EMAIL_ICON'] = "<a href='{$this->base_url}&act=Mail&CODE=00&MID={$member['id']}'><{P_EMAIL}></a> ";
}
if ( $member['website'] && ( $member['website'] = preg_match( "/^http:\\/\\/\\S+\$/", $member['WEBSITE'] ) ) )
{
$member['WEBSITE_ICON'] = "<a href='{$member['website']}' target='_blank'><{P_WEBSITE}></a> ";
}
if ( $member['icq_number'] )
{
$member['ICQ_ICON'] = "<a href=\"javascript:PopUp('{$this->base_url}&act=ICQ&MID={$member['id']}','Pager','450','330','0','1','1','1')\"><{P_ICQ}></a> ";
}
if ( $member['aim_name'] )
{
$member['AOL_ICON'] = "<a href='http://search.tencent.com/cgi-bin/friend/user_show_info?ln={$member['aim_name']}' target='_blank'><{P_AOL}></a> ";
}
return $member;
}
function html_add_smilie_box( )
{
global $ibforums;
global $std;
global $DB;
$show_table = 0;
$count = 0;
$smilies = "<tr align='center'>\n";
$DB->query( "SELECT * FROM ibf_emoticons WHERE clickable='1'" );
while ( $elmo = $DB->fetch_row( ) )
{
++$show_table;
++$count;
if ( strstr( $elmo['typed'], "'" ) )
{
$in_delim = "\"";
$out_delim = "'";
}
else
{
$in_delim = "'";
$out_delim = "\"";
}
$smilies .= "<td><a href={$out_delim}javascript:emoticon({$in_delim}".$elmo['typed']."{$in_delim}){$out_delim}><img src=\"".$ibforums->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='smilie' border='0'></a> </td>\n";
if ( $count == $ibforums->vars['emo_per_row'] )
{
$smilies .= "</tr>\n\n<tr align='center'>";
$count = 0;
}
}
if ( $count != $ibforums->vars['emo_per_row'] )
{
$i = $count;
for ( ; $i < $ibforums->vars['emo_per_row']; ++$i )
{
$smilies .= "<td> </td>\n";
}
$smilies .= "</tr>";
}
$table = $this->post_html->smilie_table( );
if ( $show_table != 0 )
{
$table = preg_replace( "/<!--THE SMILIES-->/", $smilies, $table );
$this->output = preg_replace( "/<!--SMILIE TABLE-->/", $table, $this->output );
}
}
function build_contact_list( )
{
global $DB;
global $std;
$contacts = "";
$DB->query( "SELECT * FROM ibf_contacts WHERE member_id='".$this->member['id']."' ORDER BY contact_name" );
if ( $DB->get_num_rows( ) )
{
$contacts = "<select name='from_contact' class='forminput'><option value='-'>".$ibforums->lang['other']."</option>\n<option value='-'>--------------------</option>\n";
while ( $entry = $DB->fetch_row( ) )
{
$contacts .= "<option value='".$entry['contact_id']."'>".$entry['contact_name']."</option>\n";
}
$contacts .= "</select>\n";
}
else
{
$contacts = $ibforums->lang['address_list_empty'];
}
return $contacts;
}
}
$idx = new messenger( );
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -