1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/phpbb-wap-phpbb-wap

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
privmsg.php 51 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
phpbb-wap Отправлено 27.10.2014 18:11 71bfece
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636
<?php
/**
* @package phpBB-WAP
* @copyright (c) phpBB Group
* @Оптимизация под WAP: Гутник Игорь ( чел ).
* @简体中文:中文phpBB-WAP团队
* @license http://opensource.org/licenses/gpl-license.php
**/
/**
* 这是一款自由软件, 您可以在 Free Software Foundation 发布的
* GNU General Public License 的条款下重新发布或修改; 您可以
* 选择目前 version 2 这个版本(亦可以选择任何更新的版本,由
* 你喜欢)作为新的牌照.
**/
define('IN_PHPBB', true);
define('ROOT_PATH', './');
require(ROOT_PATH . 'common.php');
require(ROOT_PATH . 'includes/functions/bbcode.php');
require(ROOT_PATH . 'includes/functions/post.php');
if ( !empty($board_config['privmsg_disable']) )
{
trigger_error('超级管理员没有开放信息功能,如需开启请联系超级管理员!', E_USER_ERROR);
}
$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;', '&quot;');
$submit = ( isset($_POST['post']) ) ? TRUE : 0;
$submit_search = ( isset($_POST['usersubmit']) ) ? TRUE : 0;
$submit_msgdays = ( isset($_POST['submit_msgdays']) ) ? TRUE : 0;
$cancel = ( isset($_POST['cancel']) ) ? TRUE : 0;
$preview = ( isset($_POST['preview']) ) ? TRUE : 0;
$confirm = ( isset($_POST['confirm']) ) ? TRUE : 0;
$delete = ( isset($_POST['delete']) ) ? TRUE : 0;
$delete_all = ( isset($_POST['deleteall']) ) ? TRUE : 0;
$save = ( isset($_POST['save']) ) ? TRUE : 0;
$sid = (isset($_POST['sid'])) ? $_POST['sid'] : 0;
$refresh = $preview || $submit_search;
$mark_list = ( !empty($_POST['mark']) ) ? $_POST['mark'] : 0;
if ( isset($_POST['folder']) || isset($_GET['folder']) )
{
$folder = ( isset($_POST['folder']) ) ? $_POST['folder'] : $_GET['folder'];
$folder = htmlspecialchars($folder);
if ( $folder != 'inbox' && $folder != 'outbox' && $folder != 'sentbox' && $folder != 'savebox' )
{
$folder = 'inbox';
}
}
else
{
$folder = 'inbox';
}
$userdata = $session->start($user_ip, PAGE_PRIVMSGS);
init_userprefs($userdata);
if ( $cancel )
{
redirect(append_sid('privmsg.php?folder=' . $folder, true));
}
if ( !empty($_POST['mode']) || !empty($_GET['mode']) )
{
$mode = ( !empty($_POST['mode']) ) ? $_POST['mode'] : $_GET['mode'];
$mode = htmlspecialchars($mode);
}
else
{
$mode = '';
}
//获取 $start
$start = get_pagination_start($board_config['posts_per_page']);
if ( isset($_POST[POST_POST_URL]) || isset($_GET[POST_POST_URL]) )
{
$privmsg_id = ( isset($_POST[POST_POST_URL]) ) ? intval($_POST[POST_POST_URL]) : intval($_GET[POST_POST_URL]);
}
else
{
$privmsg_id = '';
}
$error = FALSE;
//收信箱
$inbox_img = ( $folder != 'inbox' || $mode != '' ) ? make_style_image('privmsg_inbox') : '';
$inbox_url = ( $folder != 'inbox' || $mode != '' ) ? '&nbsp;<a href="' . append_sid("privmsg.php?folder=inbox") . '">收信箱</a>&nbsp;' : '';
//发件箱
$outbox_img = ( $folder != 'outbox' || $mode != '' ) ? make_style_image('privmsg_outbox') : '';
$outbox_url = ( $folder != 'outbox' || $mode != '' ) ? '&nbsp;<a href="' . append_sid("privmsg.php?folder=outbox") . '">发件箱</a>&nbsp;' : '';
//已发送
$sentbox_img = ( $folder != 'sentbox' || $mode != '' ) ? make_style_image('privmsg_sentbox') : '';
$sentbox_url = ( $folder != 'sentbox' || $mode != '' ) ? '&nbsp;<a href="' . append_sid("privmsg.php?folder=sentbox") . '">已发送</a>&nbsp;' : '';
//草稿
$savebox_img = ( $folder != 'savebox' || $mode != '' ) ? make_style_image('privmsg_savebox') : '';
$savebox_url = ( $folder != 'savebox' || $mode != '' ) ? '&nbsp;<a href="' . append_sid("privmsg.php?folder=savebox") . '">草稿箱</a>&nbsp;' : '';
if ( $mode == 'read' )
{
if ( !empty($_GET[POST_POST_URL]) )
{
$privmsgs_id = intval($_GET[POST_POST_URL]);
}
else
{
trigger_error('对不起,您输入的网址错误,请重新载入页面!', E_USER_ERROR);
}
if ( !$userdata['session_logged_in'] )
{
login_back("privmsg.php?folder=$folder&mode=$mode&" . POST_POST_URL . "=$privmsgs_id");
}
switch( $folder )
{
case 'inbox':
$l_box_name = '收信箱';
$pm_sql_user = "AND pm.privmsgs_to_userid = " . $userdata['user_id'] . "
AND ( pm.privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'outbox':
$l_box_name = '发件箱';
$pm_sql_user = "AND pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " ) ";
break;
case 'sentbox':
$l_box_name = '已发送';
$pm_sql_user = "AND pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND pm.privmsgs_type = " . PRIVMSGS_SENT_MAIL;
break;
case 'savebox':
$l_box_name = '草稿箱';
$pm_sql_user = "AND ( ( pm.privmsgs_to_userid = " . $userdata['user_id'] . "
AND pm.privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
OR ( pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND pm.privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " )
)";
break;
default:
trigger_error('没有这样的文件夹', E_USER_ERROR);
break;
}
$sql = 'SELECT u.username AS username_1, u.user_id AS user_id_1, u2.username AS username_2, u2.user_id AS user_id_2, pm.*, pmt.privmsgs_text
FROM ' . PRIVMSGS_TABLE . ' pm, ' . PRIVMSGS_TEXT_TABLE . ' pmt, ' . USERS_TABLE . ' u, ' . USERS_TABLE . " u2
WHERE pm.privmsgs_id = $privmsgs_id
AND pmt.privmsgs_text_id = pm.privmsgs_id
$pm_sql_user
AND u.user_id = pm.privmsgs_from_userid
AND u2.user_id = pm.privmsgs_to_userid";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('无法查询信息内容', E_USER_WARNING);
}
if ( !($privmsg = $db->sql_fetchrow($result)) )
{
redirect(append_sid("privmsg.php?folder=$folder", true));
}
$privmsg_id = $privmsg['privmsgs_id'];
if (($privmsg['privmsgs_type'] == PRIVMSGS_NEW_MAIL || $privmsg['privmsgs_type'] == PRIVMSGS_UNREAD_MAIL) && $folder == 'inbox')
{
switch ($privmsg['privmsgs_type'])
{
case PRIVMSGS_NEW_MAIL:
$sql = "user_new_privmsg = user_new_privmsg - 1";
break;
case PRIVMSGS_UNREAD_MAIL:
$sql = "user_unread_privmsg = user_unread_privmsg - 1";
break;
}
$sql = 'UPDATE ' . USERS_TABLE . "
SET $sql
WHERE user_id = " . $userdata['user_id'];
if ( !$db->sql_query($sql) )
{
trigger_error('无法更新用户表信息数', E_USER_WARNING);
}
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
SET privmsgs_type = ' . PRIVMSGS_READ_MAIL . '
WHERE privmsgs_id = ' . $privmsg['privmsgs_id'];
if ( !$db->sql_query($sql) )
{
trigger_error('无法更新信息表', E_USER_WARNING);
}
$sql = "SELECT COUNT(privmsgs_id) AS sent_items, MIN(privmsgs_date) AS oldest_post_time
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain sent message info for sendee', E_USER_WARNING);
}
if ( $sent_info = $db->sql_fetchrow($result) )
{
if ($board_config['max_sentbox_privmsgs'] && $sent_info['sent_items'] >= $board_config['max_sentbox_privmsgs'])
{
$sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
AND privmsgs_date = " . $sent_info['oldest_post_time'] . "
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
if ( !$result = $db->sql_query($sql) )
{
trigger_error('Could not find oldest privmsgs', E_USER_WARNING);
}
$old_privmsgs_id = $db->sql_fetchrow($result);
$old_privmsgs_id = $old_privmsgs_id['privmsgs_id'];
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . "
WHERE privmsgs_id = $old_privmsgs_id";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs (sent)', E_USER_WARNING);
}
$sql = 'DELETE FROM ' . PRIVMSGS_TEXT_TABLE . "
WHERE privmsgs_text_id = $old_privmsgs_id";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs text (sent)', E_USER_WARNING);
}
}
}
$sql = 'INSERT INTO ' . PRIVMSGS_TABLE . ' (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
VALUES (' . PRIVMSGS_SENT_MAIL . ", '" . str_replace("\'", "''", addslashes($privmsg['privmsgs_subject'])) . "', " . $privmsg['privmsgs_from_userid'] . ", " . $privmsg['privmsgs_to_userid'] . ", " . $privmsg['privmsgs_date'] . ", '" . $privmsg['privmsgs_ip'] . "')";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not insert private message sent info', E_USER_WARNING);
}
$privmsg_sent_id = $db->sql_nextid();
$sql = 'INSERT INTO ' . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_text)
VALUES ($privmsg_sent_id, '" . str_replace("\'", "''", addslashes($privmsg['privmsgs_text'])) . "')";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not insert private message sent text', E_USER_WARNING);
}
}
$pm = array(
'post' => '<a href="' . append_sid("privmsg.php?mode=post") . '" class="button">&nbsp;&nbsp;发信息&nbsp;&nbsp;</a>',
'reply' => '<a href="' . append_sid("privmsg.php?mode=reply&amp;" . POST_POST_URL . "=$privmsg_id") . '" class="button">&nbsp;&nbsp;回复信息&nbsp;&nbsp;</a>',
'quote' => '<a href="' . append_sid("privmsg.php?mode=quote&amp;" . POST_POST_URL . "=$privmsg_id") . '">引用信息</a>',
'edit' => '<a href="' . append_sid("privmsg.php?mode=edit&amp;" . POST_POST_URL . "=$privmsg_id") . '">编辑信息</a>'
);
if ( $folder == 'inbox' )
{
$post = $pm['post'];
$reply = $pm['reply'];
$quote = $pm['quote'];
$edit = '';
$l_box_name = '收信箱';
}
else if ( $folder == 'outbox' )
{
$post = $pm['post'];
$reply = '';
$quote = '';
$edit = $pm['edit'];
$l_box_name = '发件箱';
}
else if ( $folder == 'savebox' )
{
if ( $privmsg['privmsgs_type'] == PRIVMSGS_SAVED_IN_MAIL )
{
$post = $pm['post'];
$reply = $pm['reply'];
$quote = $pm['quote'];
$edit = '';
}
else
{
$post = $pm['post'];
$reply = '';
$quote = '';
$edit = '';
}
$l_box_name = '草稿箱';
}
else if ( $folder == 'sentbox' )
{
$post = $pm['post'];
$reply = '';
$quote = '';
$edit = '';
$l_box_name = '已发送';
}
$username_from = $privmsg['username_1'];
$user_id_from = $privmsg['user_id_1'];
$username_to = $privmsg['username_2'];
$user_id_to = $privmsg['user_id_2'];
$post_date = create_date($board_config['default_dateformat'], $privmsg['privmsgs_date'], $board_config['board_timezone']);
$temp_url = append_sid("privmsg.php?mode=post&amp;" . POST_USERS_URL . "=$user_id_from");
$pm = '<a href="' . $temp_url . '">发信息</a>';
$post_subject = $privmsg['privmsgs_subject'];
$private_message = $privmsg['privmsgs_text'];
$page_title = '阅读信息';
page_header($page_title);
$template->set_filenames(array(
'body' => 'privmsgs_read_body.tpl')
);
$template->assign_vars(array(
'INBOX' => $inbox_url,
'U_FROM_USER_PROFILE' => ($privmsg['user_id_1'] == ANONYMOUS) ? '' : append_sid("ucp.php?mode=viewprofile&amp;" . POST_USERS_URL . "=".$privmsg['user_id_1']),
'POST_PM' => $post,
'REPLY_PM' => $reply,
'EDIT_PM' => $edit,
'QUOTE_PM' => $quote,
'SENTBOX' => $sentbox_url,
'OUTBOX' => $outbox_url,
'SAVEBOX' => $savebox_url,
'BOX_NAME' => $l_box_name,
'U_INBOX' => append_sid('privmsg.php?folder=inbox'),
'S_HISTORY' => append_sid("privmsg.php?history&amp;p=$privmsgs_id"),
'S_PRIVMSGS_ACTION' => append_sid("privmsg.php?folder=$folder"),
'S_HIDDEN_FIELDS' => '<input type="hidden" name="mark[]" value="' . $privmsgs_id . '" />')
);
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
if ( count($orig_word) )
{
$post_subject = str_replace($orig_word, $replacement_word, $post_subject);
$private_message = str_replace($orig_word, $replacement_word, $private_message);
}
if ( $board_config['allow_smilies'] )
{
$private_message = smilies_pass($private_message);
}
$private_message = str_replace(PHP_EOL, '<br />', $private_message);
$template->assign_vars(array(
'MESSAGE_TO' => $username_to,
'MESSAGE_FROM' => ($privmsg['user_id_1'] == ANONYMOUS) ? '系统管理员' : $username_from,
'POST_SUBJECT' => $post_subject,
'POST_DATE' => $post_date,
'MESSAGE' => $private_message)
);
$template->pparse('body');
page_footer();
}
else if ( ( $delete && $mark_list ) || $delete_all )
{
if ( !$userdata['session_logged_in'] )
{
login_back("privmsg.php?folder=inbox");
}
if ( isset($mark_list) && !is_array($mark_list) )
{
$mark_list = array();
}
if ( !$confirm )
{
$page_title = '删除全部';
page_header($page_title);
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';
$s_hidden_fields .= ( isset($_POST['delete']) ) ? '<input type="hidden" name="delete" value="true" />' : '<input type="hidden" name="deleteall" value="true" />';
$s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
for($i = 0; $i < count($mark_list); $i++)
{
$s_hidden_fields .= '<input type="hidden" name="mark[]" value="' . intval($mark_list[$i]) . '" />';
}
$template->set_filenames(array(
'confirm_body' => 'confirm_body.tpl')
);
$template->assign_vars(array(
'MESSAGE_TITLE' => '确认',
'MESSAGE_TEXT' => ( count($mark_list) == 1 ) ? '请确认是否删除这条信息?' : '请确认是否删除这些信息?',
'L_YES' => '是',
'L_NO' => '否',
'S_CONFIRM_ACTION' => append_sid("privmsg.php?folder=$folder"),
'S_HIDDEN_FIELDS' => $s_hidden_fields)
);
$template->pparse('confirm_body');
page_footer();
}
else if ($confirm && $sid === $userdata['session_id'])
{
$delete_sql_id = '';
if (!$delete_all)
{
for ($i = 0; $i < count($mark_list); $i++)
{
$delete_sql_id .= (($delete_sql_id != '') ? ', ' : '') . intval($mark_list[$i]);
}
$delete_sql_id = "AND privmsgs_id IN ($delete_sql_id)";
}
switch($folder)
{
case 'inbox':
$delete_type = "privmsgs_to_userid = " . $userdata['user_id'] . " AND (
privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'outbox':
$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'sentbox':
$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
break;
case 'savebox':
$delete_type = "( ( privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " )
OR ( privmsgs_to_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )";
break;
}
$sql = "SELECT privmsgs_id
FROM " . PRIVMSGS_TABLE . "
WHERE $delete_type $delete_sql_id";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain id list to delete messages', E_USER_WARNING);
}
$mark_list = array();
while ( $row = $db->sql_fetchrow($result) )
{
$mark_list[] = $row['privmsgs_id'];
}
unset($delete_type);
if ( count($mark_list) )
{
$delete_sql_id = '';
for ($i = 0; $i < count($mark_list); $i++)
{
$delete_sql_id .= (($delete_sql_id != '') ? ', ' : '') . intval($mark_list[$i]);
}
if ($folder == 'inbox' || $folder == 'outbox')
{
switch ($folder)
{
case 'inbox':
$sql = "privmsgs_to_userid = " . $userdata['user_id'];
break;
case 'outbox':
$sql = "privmsgs_from_userid = " . $userdata['user_id'];
break;
}
$sql = "SELECT privmsgs_to_userid, privmsgs_type
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id IN ($delete_sql_id)
AND $sql
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain user id list for outbox messages', E_USER_WARNING);
}
if ( $row = $db->sql_fetchrow($result))
{
$update_users = $update_list = array();
do
{
switch ($row['privmsgs_type'])
{
case PRIVMSGS_NEW_MAIL:
$update_users['new'][$row['privmsgs_to_userid']]++;
break;
case PRIVMSGS_UNREAD_MAIL:
$update_users['unread'][$row['privmsgs_to_userid']]++;
break;
}
}
while ($row = $db->sql_fetchrow($result));
if (count($update_users))
{
foreach($update_users as $type => $users)
{
foreach($users as $user_id => $dec)
{
$update_list[$type][$dec][] = $user_id;
}
}
unset($update_users);
foreach($update_list as $type => $dec_ary)
{
switch ($type)
{
case 'new':
$type = "user_new_privmsg";
break;
case 'unread':
$type = "user_unread_privmsg";
break;
}
foreach($dec_ary as $dec => $user_ary)
{
$user_ids = implode(', ', $user_ary);
$sql = "UPDATE " . USERS_TABLE . "
SET $type = $type - $dec
WHERE user_id IN ($user_ids)";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not update user pm counters', E_USER_WARNING);
}
}
}
unset($update_list);
}
}
$db->sql_freeresult($result);
}
$delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
WHERE privmsgs_text_id IN ($delete_sql_id)";
$delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id IN ($delete_sql_id)
AND ";
switch( $folder )
{
case 'inbox':
$delete_sql .= "privmsgs_to_userid = " . $userdata['user_id'] . " AND (
privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'outbox':
$delete_sql .= "privmsgs_from_userid = " . $userdata['user_id'] . " AND (
privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'sentbox':
$delete_sql .= "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
break;
case 'savebox':
$delete_sql .= "( ( privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " )
OR ( privmsgs_to_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )";
break;
}
if ( !$db->sql_query($delete_sql, BEGIN_TRANSACTION) )
{
trigger_error('Could not delete private message info', E_USER_WARNING);
}
if ( !$db->sql_query($delete_text_sql, END_TRANSACTION) )
{
trigger_error('Could not delete private message text', E_USER_WARNING);
}
}
}
}
else if ( $save && $mark_list && $folder != 'savebox' && $folder != 'outbox' )
{
if ( !$userdata['session_logged_in'] )
{
login_back("privmsg.php?folder=inbox");
}
if (count($mark_list))
{
$sql = "SELECT COUNT(privmsgs_id) AS savebox_items, MIN(privmsgs_date) AS oldest_post_time
FROM " . PRIVMSGS_TABLE . "
WHERE ( ( privmsgs_to_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain sent message info for sendee', E_USER_WARNING);
}
if ( $saved_info = $db->sql_fetchrow($result) )
{
if ($board_config['max_savebox_privmsgs'] && $saved_info['savebox_items'] >= $board_config['max_savebox_privmsgs'] )
{
$sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . "
WHERE ( ( privmsgs_to_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )
AND privmsgs_date = " . $saved_info['oldest_post_time'];
if ( !$result = $db->sql_query($sql) )
{
trigger_error('Could not find oldest privmsgs (save)', E_USER_WARNING);
}
$old_privmsgs_id = $db->sql_fetchrow($result);
$old_privmsgs_id = $old_privmsgs_id['privmsgs_id'];
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . '
WHERE privmsgs_id = ' . $old_privmsgs_id;
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs (save)', E_USER_WARNING);
}
$sql = 'DELETE FROM ' . PRIVMSGS_TEXT_TABLE . '
WHERE privmsgs_text_id = ' . $old_privmsgs_id;
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs text (save)', E_USER_WARNING);
}
}
}
$saved_sql_id = '';
for ($i = 0; $i < count($mark_list); $i++)
{
$saved_sql_id .= (($saved_sql_id != '') ? ', ' : '') . intval($mark_list[$i]);
}
$saved_sql = "UPDATE " . PRIVMSGS_TABLE;
if ($folder == 'inbox' || $folder == 'outbox')
{
switch ($folder)
{
case 'inbox':
$sql = "privmsgs_to_userid = " . $userdata['user_id'];
break;
case 'outbox':
$sql = "privmsgs_from_userid = " . $userdata['user_id'];
break;
}
$sql = "SELECT privmsgs_to_userid, privmsgs_type
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id IN ($saved_sql_id)
AND $sql
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain user id list for outbox messages', E_USER_WARNING);
}
if ( $row = $db->sql_fetchrow($result))
{
$update_users = $update_list = array();
do
{
switch ($row['privmsgs_type'])
{
case PRIVMSGS_NEW_MAIL:
$update_users['new'][$row['privmsgs_to_userid']]++;
break;
case PRIVMSGS_UNREAD_MAIL:
$update_users['unread'][$row['privmsgs_to_userid']]++;
break;
}
}
while ($row = $db->sql_fetchrow($result));
if (count($update_users))
{
foreach($update_users as $type => $users)
{
foreach($users as $user_id => $dec)
{
$update_list[$type][$dec][] = $user_id;
}
}
unset($update_users);
foreach($update_list as $type => $dec_ary)
{
switch ($type)
{
case 'new':
$type = "user_new_privmsg";
break;
case 'unread':
$type = "user_unread_privmsg";
break;
}
foreach($dec_ary as $dec => $user_ary)
{
$user_ids = implode(', ', $user_ary);
$sql = "UPDATE " . USERS_TABLE . "
SET $type = $type - $dec
WHERE user_id IN ($user_ids)";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not update user pm counters', E_USER_WARNING);
}
}
}
unset($update_list);
}
}
$db->sql_freeresult($result);
}
switch ($folder)
{
case 'inbox':
$saved_sql .= " SET privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . "
WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
AND ( privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . ")";
break;
case 'outbox':
$saved_sql .= " SET privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . "
WHERE privmsgs_from_userid = " . $userdata['user_id'] . "
AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " ) ";
break;
case 'sentbox':
$saved_sql .= " SET privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . "
WHERE privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
break;
}
$saved_sql .= " AND privmsgs_id IN ($saved_sql_id)";
if ( !$db->sql_query($saved_sql) )
{
trigger_error('Could not save private messages', E_USER_WARNING);
}
redirect(append_sid("privmsg.php?folder=savebox", true));
}
}
else if ( $submit || $refresh || $mode != '' )
{
if ( !$userdata['session_logged_in'] )
{
$user_id = ( isset($_GET[POST_USERS_URL]) ) ? '&' . POST_USERS_URL . '=' . intval($_GET[POST_USERS_URL]) : '';
redirect(append_sid("login.php?redirect=privmsg.php?folder=$folder&mode=$mode" . $user_id, true));
}
if ( $submit )
{
$sql = "SELECT MAX(privmsgs_date) AS last_post_time
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_from_userid = " . $userdata['user_id'];
if ( $result = $db->sql_query($sql) )
{
$db_row = $db->sql_fetchrow($result);
$last_post_time = $db_row['last_post_time'];
$current_time = time();
if ( ( $current_time - $last_post_time ) < $board_config['flood_interval'])
{
$pm_wait_time = $board_config['flood_interval'] - ($current_time - $last_post_time);
trigger_error("您必须等待 $pm_wait_time 秒后才能再次发送消息!", E_USER_ERROR);
}
}
}
if ( $submit )
{
$error_msg = '';
if ($sid == '' || $sid != $userdata['session_id'])
{
$error = true;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . '错误!请重新加载页面!';
}
if ( !empty($_POST['username']) )
{
$to_username = phpbb_clean_username($_POST['username']);
$sql = "SELECT user_id, user_notify_pm, user_email, user_active
FROM " . USERS_TABLE . "
WHERE username = '" . str_replace("\'", "''", $to_username) . "'
AND user_id <> " . ANONYMOUS;
if ( !$result = $db->sql_query($sql) )
{
$error = TRUE;
$error_msg = '对不起,您输入的用户不存在!11';
}
if ( !$to_userdata = $db->sql_fetchrow($result) )
{
$error = TRUE;
$error_msg = '对不起,您输入的用户不存在!';
}
}
else
{
$error = TRUE;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . '必须输入收件人才能发送信息';
}
$privmsg_subject = trim(htmlspecialchars($_POST['subject']));
if ( empty($privmsg_subject) )
{
$error = TRUE;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . '信息的标题不能为空';
}
if ( strlen($privmsg_subject) < 3 )
{
$error = TRUE;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . '信息的标题不能小于三个字符';
}
if ( !empty($_POST['message']) )
{
if ( !$error )
{
$privmsg_message = trim($_POST['message']);
}
}
else
{
$error = TRUE;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . '信息的内容不能为空';
}
}
if ( $submit && !$error )
{
if ( !$userdata['user_allow_pm'] )
{
$message = '对不起,仅超级管理员才可以拒收信息';
trigger_error($message);
}
$msg_time = time();
if ( $mode != 'edit' )
{
$sql = "SELECT COUNT(privmsgs_id) AS inbox_items, MIN(privmsgs_date) AS oldest_post_time
FROM " . PRIVMSGS_TABLE . "
WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
AND privmsgs_to_userid = " . $to_userdata['user_id'];
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('对不起,您输入的用户不存在', E_USER_ERROR);
}
if ( $inbox_info = $db->sql_fetchrow($result) )
{
if ($board_config['max_inbox_privmsgs'] && $inbox_info['inbox_items'] >= $board_config['max_inbox_privmsgs'])
{
$sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . "
WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
AND privmsgs_date = " . $inbox_info['oldest_post_time'] . "
AND privmsgs_to_userid = " . $to_userdata['user_id'];
if ( !$result = $db->sql_query($sql) )
{
trigger_error('Could not find oldest privmsgs (inbox)', E_USER_WARNING);
}
$old_privmsgs_id = $db->sql_fetchrow($result);
$old_privmsgs_id = $old_privmsgs_id['privmsgs_id'];
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . "
WHERE privmsgs_id = $old_privmsgs_id";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs (inbox)'.$sql, E_USER_WARNING);
}
$sql = 'DELETE FROM ' . PRIVMSGS_TEXT_TABLE . "
WHERE privmsgs_text_id = $old_privmsgs_id";
if ( !$db->sql_query($sql) )
{
trigger_error('Could not delete oldest privmsgs text (inbox)', E_USER_WARNING);
}
}
}
$sql_info = "INSERT INTO " . PRIVMSGS_TABLE . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
VALUES (" . PRIVMSGS_NEW_MAIL . ", '" . str_replace("\'", "''", $privmsg_subject) . "', " . $userdata['user_id'] . ", " . $to_userdata['user_id'] . ", $msg_time, '$user_ip')";
}
else
{
$sql_info = "UPDATE " . PRIVMSGS_TABLE . "
SET privmsgs_type = " . PRIVMSGS_NEW_MAIL . ", privmsgs_subject = '" . str_replace("\'", "''", $privmsg_subject) . "', privmsgs_from_userid = " . $userdata['user_id'] . ", privmsgs_to_userid = " . $to_userdata['user_id'] . ", privmsgs_date = $msg_time, privmsgs_ip = '$user_ip', privmsgs_enable_html = $html_on
WHERE privmsgs_id = $privmsg_id";
}
if ( !($result = $db->sql_query($sql_info, BEGIN_TRANSACTION)) )
{
trigger_error('Could not insert/update private message sent info.', E_USER_WARNING);
}
if ( $mode != 'edit' )
{
$privmsg_sent_id = $db->sql_nextid();
$sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_text)
VALUES ($privmsg_sent_id, '" . str_replace("\'", "''", $privmsg_message) . "')";
}
else
{
$sql = "UPDATE " . PRIVMSGS_TEXT_TABLE . "
SET privmsgs_text = '" . str_replace("\'", "''", $privmsg_message) . "'
WHERE privmsgs_text_id = $privmsg_id";
}
if ( !$db->sql_query($sql, END_TRANSACTION) )
{
trigger_error('Could not insert/update private message sent text.', E_USER_WARNING);
}
if ( $mode != 'edit' )
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_new_privmsg = user_new_privmsg + 1, user_last_privmsg = ' . time() . '
WHERE user_id = ' . $to_userdata['user_id'];
if ( !$status = $db->sql_query($sql) )
{
trigger_error('无法更新用户信息条数', E_USER_WARNING);
}
if ( $to_userdata['user_notify_pm'] && !empty($to_userdata['user_email']) && $to_userdata['user_active'] )
{
$script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path']));
$script_name = ( $script_name != '' ) ? $script_name . '/privmsg.php' : 'privmsg.php';
$server_name = trim($board_config['server_name']);
$server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
$server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';
include(ROOT_PATH . 'includes/class/emailer.php');
$emailer = new emailer();
$emailer->cc('');
$emailer->bcc('');
$emailer->from($board_config['board_email']);
$emailer->replyto($board_config['board_email']);
$emailer->use_template('privmsg_notify');
$emailer->email_address($to_userdata['user_email']);
$emailer->set_subject('您有一条新信息');
$emailer->assign_vars(array(
'USERNAME' => stripslashes($to_username),
'SITENAME' => $board_config['sitename'],
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
'U_INBOX' => $server_protocol . $server_name . $server_port . $script_name . '?folder=inbox')
);
$emailer->send();
$emailer->reset();
}
}
trigger_error('信息发送成功!<br /><br />点击<a href="' . append_sid("privmsg.php?folder=inbox") . '">这里</a>返回收信箱', E_USER_ERROR);
}
else if ( $preview || $refresh || $error )
{
$to_username = (isset($_POST['username']) ) ? trim(htmlspecialchars(stripslashes($_POST['username']))) : '';
$privmsg_subject = ( isset($_POST['subject']) ) ? trim(htmlspecialchars(stripslashes($_POST['subject']))) : '';
$privmsg_message = ( isset($_POST['message']) ) ? trim($_POST['message']) : '';
if ( !$preview )
{
$privmsg_message = stripslashes($privmsg_message);
}
if ( $mode == 'post' )
{
$page_title = '发信息';
}
else if ( $mode == 'reply' )
{
$page_title = '回信息';
}
}
else
{
if ( !$privmsg_id && ( $mode == 'reply' || $mode == 'edit' || $mode == 'quote' ) )
{
trigger_error('您必须指定信息的ID', E_USER_ERROR);
}
if ( !empty($_GET[POST_USERS_URL]) )
{
$user_id = intval($_GET[POST_USERS_URL]);
$sql = "SELECT username
FROM " . USERS_TABLE . "
WHERE user_id = $user_id
AND user_id <> " . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
$error = TRUE;
$error_msg = '对不起,您输入的用户不存在';
}
if ( $row = $db->sql_fetchrow($result) )
{
$to_username = $row['username'];
}
}
else if ( $mode == 'edit' )
{
$sql = "SELECT pm.*, pmt.privmsgs_text, u.username, u.user_id
FROM " . PRIVMSGS_TABLE . " pm, " . PRIVMSGS_TEXT_TABLE . " pmt, " . USERS_TABLE . " u
WHERE pm.privmsgs_id = $privmsg_id
AND pmt.privmsgs_text_id = pm.privmsgs_id
AND pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
AND u.user_id = pm.privmsgs_to_userid";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain private message for editing', E_USER_WARNING);
}
if ( !($privmsg = $db->sql_fetchrow($result)) )
{
redirect(append_sid("privmsg.php?folder=$folder", true));
}
$privmsg_subject = $privmsg['privmsgs_subject'];
$privmsg_message = $privmsg['privmsgs_text'];
$privmsg_message = str_replace('<br />', "\n", $privmsg_message);
$to_username = $privmsg['username'];
$to_userid = $privmsg['user_id'];
}
else if ( $mode == 'reply' )
{
$sql = "SELECT pm.privmsgs_subject, pm.privmsgs_date, pmt.privmsgs_text, u.username, u.user_id
FROM " . PRIVMSGS_TABLE . " pm, " . PRIVMSGS_TEXT_TABLE . " pmt, " . USERS_TABLE . " u
WHERE pm.privmsgs_id = $privmsg_id
AND pmt.privmsgs_text_id = pm.privmsgs_id
AND pm.privmsgs_to_userid = " . $userdata['user_id'] . "
AND u.user_id = pm.privmsgs_from_userid";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not obtain private message for editing', E_USER_WARNING);
}
if ( !($privmsg = $db->sql_fetchrow($result)) )
{
redirect(append_sid("privmsg.php?folder=$folder", true));
}
$orig_word = $replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
$privmsg_subject = ( ( !preg_match('/^Re:/', $privmsg['privmsgs_subject']) ) ? 'Re: ' : '' ) . $privmsg['privmsgs_subject'];
$privmsg_subject = str_replace($orig_word, $replacement_word, $privmsg_subject);
$to_username = $privmsg['username'];
$to_userid = $privmsg['user_id'];
}
else
{
$privmsg_subject = $privmsg_message = $to_username = '';
}
}
if ( !$userdata['user_allow_pm'] )
{
$message = '对不起,仅超级管理员可以拒收信息';
trigger_error($message);
}
if ($error)
{
$privmsg_message = htmlspecialchars($privmsg_message);
error_box('ERROR_BOX', $error_msg);
}
$template->set_filenames(array(
'body' => 'privmsg_posting.tpl')
);
if ( $mode == 'post' )
{
$post_a = '发送信息';
}
else if ( $mode == 'reply' )
{
$post_a = '回复信息';
$mode = 'post';
}
$page_title = $post_a;
page_header($page_title);
$s_hidden_fields = '<input type="hidden" name="folder" value="' . $folder . '" />';
$s_hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
$s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
$privmsg_subject = isset($privmsg_subject) ? $privmsg_subject : '';
$privmsg_message = isset($privmsg_message) ? $privmsg_message : '';
$template->assign_vars(array(
'SUBJECT' => $privmsg_subject,
'USERNAME' => $to_username,
'MESSAGE' => $privmsg_message,
'BOX_NAME' => $post_a,
'U_INBOX' => append_sid('privmsg.php?folder=inbox'),
'S_HIDDEN_FORM_FIELDS' => $s_hidden_fields,
'S_POST_ACTION' => append_sid("privmsg.php"))
);
$template->pparse('body');
page_footer();
}
if ( !$userdata['session_logged_in'] )
{
login_back("privmsg.php?folder=inbox");
}
$pr_id = isset($_GET['p']) ? abs(intval($_GET['p'])) : '';
if( isset($_GET['history']) )
{
if( !(is_numeric($pr_id) && $pr_id > 0) )
{
trigger_error('您必须指定信息的ID', E_USER_ERROR);
}
}
if( is_numeric($pr_id) && (isset($_GET['history'])) )
{
if (isset($_GET['download']))
{
$sql = "SELECT privmsgs_from_userid
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id = " . $pr_id;
$result = $db->sql_query($sql);
if (!$result)
{
trigger_error('Could not query private message post information', E_USER_WARNING);
}
$privrow = $db->sql_fetchrow($result);
$user_from = $privrow['privmsgs_from_userid'];
$user_id = $userdata['user_id'];
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
$sql = "SELECT *
FROM " . PRIVMSGS_TABLE . " t, " . PRIVMSGS_TEXT_TABLE . " p
WHERE t.privmsgs_id = p.privmsgs_text_id
AND ((t.privmsgs_from_userid = $user_from
AND t.privmsgs_to_userid = $user_id)
OR (t.privmsgs_from_userid = $user_id
AND t.privmsgs_to_userid = $user_from))
AND ( t.privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR t.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR t.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
ORDER BY t.privmsgs_date ASC";
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not create download', E_USER_WARNING);
}
$download_file = '';
while ( $row = $db->sql_fetchrow($result) )
{
$poster_id = $row['privmsgs_from_userid'];
$poster_fro = $row['privmsgs_to_userid'];
$this_userdata = get_userdata($poster_id);
$poster_from = $this_userdata['username'];
$t_userdata = get_userdata($poster_fro);
$poster = $t_userdata['username'];
$post_date = create_date($board_config['default_dateformat'], $row['privmsgs_date'], $board_config['board_timezone']);
$post_subject = '信息: ' . $row['privmsgs_subject'];
//$bbcode_uid = $row['bbcode_uid'];
$message = $row['privmsgs_text'];
$message = strip_tags($message);
//$message = preg_replace("/\[.*?:$bbcode_uid:?.*?\]/si", '', $message);
$message = preg_replace('/\[url\]|\[\/url\]/si', '', $message);
$message = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
$message = unprepare_message($message);
$message = preg_replace('/&#40;/', '(', $message);
$message = preg_replace('/&#41;/', ')', $message);
$message = preg_replace('/&#58;/', ':', $message);
$message = preg_replace('/&#91;/', '[', $message);
$message = preg_replace('/&#93;/', ']', $message);
$message = preg_replace('/&#123;/', '{', $message);
$message = preg_replace('/&#125;/', '}', $message);
if (count($orig_word))
{
$post_subject = str_replace($orig_word, $replacement_word, $post_subject);
$message = str_replace($orig_word, $replacement_word, $message);
}
$break = "\n";
$line = '---------------';
$download_file .= $post_subject . $break . '来自: '.$poster_from . $break . '收件人: ' . $poster . $break . $post_date . $break . $message . $break . $line . $break;
}
$disp_folder = 'from_'.$poster_id.'_to_'.$poster_fro;
$filename = $board_config['sitename'] . '_' . $disp_folder . '.txt';
header('Content-Type: text/plain; name="'.$filename.'"');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Content-Transfer-Encoding: plain/text');
header('Content-Length: '.strlen($download_file));
print $download_file;
exit;
}
$sql = "SELECT privmsgs_from_userid
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id = " . $pr_id;
$result = $db->sql_query($sql);
if (!$result)
{
trigger_error('Could not query private message post information', E_USER_WARNING);
}
$privrow = $db->sql_fetchrow($result);
$user_from = $privrow['privmsgs_from_userid'];
$user_id = $userdata['user_id'];
$page_title = '信息记录';
page_header($page_title);
$template->set_filenames(array(
'body' => 'privmsgs_history_body.tpl')
);
$sql = "SELECT *
FROM " . PRIVMSGS_TABLE . " t, " . PRIVMSGS_TEXT_TABLE . " p
WHERE t.privmsgs_id = p.privmsgs_text_id
AND ((t.privmsgs_from_userid = $user_from
AND t.privmsgs_to_userid = $user_id)
OR (t.privmsgs_from_userid = $user_id
AND t.privmsgs_to_userid = $user_from))
AND ( t.privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR t.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR t.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
ORDER BY t.privmsgs_date DESC";
if (!$result = $db->sql_query($sql))
{
trigger_error('Could not query users', E_USER_WARNING);
}
$total = $db->sql_fetchrowset($result);
for($i = $start; $i < count($total) & $i < $board_config['topics_per_page'] + $start; $i++)
{
$privmsgs_text = $total[$i]['privmsgs_text'];
$privmsgs_from = $total[$i]['privmsgs_from_userid'];
$privmsgs_text = str_replace(PHP_EOL, '<br />', $privmsgs_text);
$sql = "SELECT user_id, username
FROM " . USERS_TABLE . "
WHERE user_id = " . $privmsgs_from;
if (!$result = $db->sql_query($sql))
{
trigger_error('Could not query users', E_USER_WARNING);
}
$name = $db->sql_fetchrow($result);
$from_id = $name['user_id'];
$from = ( $privmsgs_from == $userdata['user_id']) ? '我' : $name['username'];
$temp_urla = append_sid("ucp.php?mode=viewprofile&amp;" . POST_USERS_URL . "=$from_id");
$otvet = '<a href="' . $temp_urla . '">' .$from . '</a>';
$row_class = ( !($i % 2) ) ? 'row1' : 'row2';
$template->assign_block_vars('history', array(
'ROW_CLASS' => $row_class,
'DATE' => create_date('H:i', $total[$i]['privmsgs_date'], $board_config['board_timezone']),
//'THEME' => $privmsgs_subject, //取消标题显示
'TEXT' => $privmsgs_text,
'FROM' => $otvet)
);
}
$pagination = ( count($total) > $board_config['topics_per_page']) ? generate_pagination("privmsg.php?history&amp;p=$pr_id", count($total), $board_config['topics_per_page'], $start) : '';
$template->assign_vars(array(
'S_BACK' => append_sid("privmsg.php?folder=inbox"),
'U_NEW_PM' => append_sid("privmsg.php?mode=post&amp;" . POST_USERS_URL . "=$user_from"),
'S_HTXT' => append_sid("privmsg.php?history&amp;p=$pr_id&amp;download"),
'PAGINATION' => $pagination)
);
$template->pparse('body');
page_footer();
}
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_unread_privmsg = user_unread_privmsg + user_new_privmsg, user_new_privmsg = 0, user_last_privmsg = ' . $userdata['session_start'] . '
WHERE user_id = ' . $userdata['user_id'];
if ( !$db->sql_query($sql) )
{
trigger_error('Could not update private message new/read status for user', E_USER_WARNING);
}
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
SET privmsgs_type = ' . PRIVMSGS_UNREAD_MAIL . '
WHERE privmsgs_type = ' . PRIVMSGS_NEW_MAIL . '
AND privmsgs_to_userid = ' . $userdata['user_id'];
if ( !$db->sql_query($sql) )
{
trigger_error('Could not update private message new/read status (2) for user', E_USER_WARNING);
}
$userdata['user_new_privmsg'] = 0;
$userdata['user_unread_privmsg'] = ( $userdata['user_new_privmsg'] + $userdata['user_unread_privmsg'] );
$page_title = '我的信箱';
page_header($page_title);
$template->set_filenames(array(
'body' => 'privmsgs_body.tpl')
);
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
$sql_tot = 'SELECT COUNT(privmsgs_id) AS total
FROM ' . PRIVMSGS_TABLE . ' ';
$sql = 'SELECT pm.privmsgs_type, pm.privmsgs_id, pm.privmsgs_date, pm.privmsgs_subject, u.user_id, u.username
FROM ' . PRIVMSGS_TABLE . ' pm, ' . USERS_TABLE . ' u ';
switch( $folder )
{
case 'inbox':
$sql_tot .= "WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
$sql .= "WHERE pm.privmsgs_to_userid = " . $userdata['user_id'] . "
AND u.user_id = pm.privmsgs_from_userid
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR pm.privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'outbox':
$sql_tot .= "WHERE privmsgs_from_userid = " . $userdata['user_id'] . "
AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
$sql .= "WHERE pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND u.user_id = pm.privmsgs_to_userid
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
break;
case 'sentbox':
$sql_tot .= "WHERE privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
$sql .= "WHERE pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND u.user_id = pm.privmsgs_to_userid
AND pm.privmsgs_type = " . PRIVMSGS_SENT_MAIL;
break;
case 'savebox':
$sql_tot .= "WHERE ( ( privmsgs_to_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )";
$sql .= "WHERE u.user_id = pm.privmsgs_from_userid
AND ( ( pm.privmsgs_to_userid = " . $userdata['user_id'] . "
AND pm.privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
OR ( pm.privmsgs_from_userid = " . $userdata['user_id'] . "
AND pm.privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " ) )";
break;
default:
trigger_error('没有这样的文件夹', E_USER_ERROR);
break;
}
//
// Show messages over previous x days/months
//
if ( $submit_msgdays && ( !empty($HTTP_POST_VARS['msgdays']) || !empty($HTTP_GET_VARS['msgdays']) ) )
{
$msg_days = ( !empty($HTTP_POST_VARS['msgdays']) ) ? intval($HTTP_POST_VARS['msgdays']) : intval($HTTP_GET_VARS['msgdays']);
$min_msg_time = time() - ($msg_days * 86400);
$limit_msg_time_total = " AND privmsgs_date > $min_msg_time";
$limit_msg_time = " AND pm.privmsgs_date > $min_msg_time ";
if ( !empty($HTTP_POST_VARS['msgdays']) )
{
$start = 0;
}
}
else
{
$limit_msg_time = $limit_msg_time_total = '';
$msg_days = 0;
}
$sql .= $limit_msg_time . " ORDER BY pm.privmsgs_date DESC LIMIT $start, " . $board_config['topics_per_page'];
$sql_all_tot = $sql_tot;
$sql_tot .= $limit_msg_time_total;
if ( !($result = $db->sql_query($sql_tot)) )
{
trigger_error('Could not query private message information', E_USER_WARNING);
}
$pm_total = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
if ( !($result = $db->sql_query($sql_all_tot)) )
{
trigger_error('Could not query private message information', E_USER_WARNING);
}
$pm_all_total = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
$previous_days = array(0, 1, 7, 14, 30, 90, 180, 364);
$select_msg_days = '';
$previous_days_text = array('所有信息', '1天内', '7天内', '2周内', '1个月内', '3个月内', '6个月内', '一年内');
for($i = 0; $i < count($previous_days); $i++)
{
$selected = ( $msg_days == $previous_days[$i] ) ? ' selected="selected"' : '';
$select_msg_days .= '<option value="' . $previous_days[$i] . '"' . $selected . '>' . $previous_days_text[$i] . '</option>';
}
switch ( $folder )
{
case 'inbox':
$l_box_name = '收信箱';
break;
case 'outbox':
$l_box_name = '发件箱';
break;
case 'savebox':
$l_box_name = '草稿箱';
break;
case 'sentbox':
$l_box_name = '已发送';
break;
}
if ( $folder != 'outbox' )
{
$inbox_limit_pct = ( $board_config['max_' . $folder . '_privmsgs'] > 0 ) ? $pm_all_total . '/' . $board_config['max_' . $folder . '_privmsgs'] : 100;
$inbox_limit_img_length = ( $board_config['max_' . $folder . '_privmsgs'] > 0 ) ? round(( $pm_all_total / $board_config['max_' . $folder . '_privmsgs'] ) * 175) : 175;
$inbox_limit_remain = ( $board_config['max_' . $folder . '_privmsgs'] > 0 ) ? $board_config['max_' . $folder . '_privmsgs'] - $pm_all_total : 0;
$template->assign_block_vars('switch_box_size_notice', array());
switch( $folder )
{
case 'inbox':
$l_box_size_status = '收信箱(' . $inbox_limit_pct. ')';
break;
case 'sentbox':
$l_box_size_status = '发件箱(' . $inbox_limit_pct. ')';
break;
case 'savebox':
$l_box_size_status = '草稿箱(' . $inbox_limit_pct. ')';
break;
default:
$l_box_size_status = '';
break;
}
}
else
{
$inbox_limit_img_length = $inbox_limit_pct = $l_box_size_status = '';
$template->assign_block_vars('switch_box_size_notice', array());
$l_box_size_status = '发件箱';
}
$template->assign_vars(array(
'BOX_NAME' => $l_box_name,
'INBOX_IMG' => $inbox_img,
'SENTBOX_IMG' => $sentbox_img,
'OUTBOX_IMG' => $outbox_img,
'SAVEBOX_IMG' => $savebox_img,
'INBOX' => $inbox_url,
'SENTBOX' => $sentbox_url,
'OUTBOX' => $outbox_url,
'SAVEBOX' => $savebox_url,
'IMG_POSTPM' => make_style_image('privmsg_create'),
'U_POST_PM' => append_sid('privmsg.php?mode=post'),
'INBOX_LIMIT_IMG_WIDTH' => $inbox_limit_img_length,
'INBOX_LIMIT_PERCENT' => $inbox_limit_pct,
'BOX_SIZE_STATUS' => $l_box_size_status,
'L_FROM_OR_TO' => ( $folder == 'inbox' || $folder == 'savebox' ) ? '来自' : '收信人',
'S_PRIVMSGS_ACTION' => append_sid("privmsg.php?folder=$folder"),
'S_SELECT_MSG_DAYS' => $select_msg_days,
'U_POST_NEW_TOPIC' => append_sid("privmsg.php?mode=post"))
);
if ( !($result = $db->sql_query($sql)) )
{
trigger_error('Could not query private messages', E_USER_WARNING);
}
if ( $row = $db->sql_fetchrow($result) )
{
$i = 0;
do
{
$privmsg_id = $row['privmsgs_id'];
$flag = $row['privmsgs_type'];
$icon_flag = ( $flag == PRIVMSGS_NEW_MAIL || $flag == PRIVMSGS_UNREAD_MAIL ) ? make_style_image('privmsg_unread') : make_style_image('privmsg_read');
$msg_userid = $row['user_id'];
$msg_username = $row['username'];
$u_from_user_profile = append_sid('ucp.php?mode=viewprofile&amp;' . POST_USERS_URL . '=' . $msg_userid);
$msg_subject = $row['privmsgs_subject'];
//标题
if ( count($orig_word) )
{
$msg_subject = str_replace($orig_word, $replacement_word, $msg_subject);
}
//标题链接
$u_subject = append_sid("privmsg.php?folder=$folder&amp;mode=read&amp;" . POST_POST_URL . "=$privmsg_id");
//创建日期
$msg_date = create_date($board_config['default_dateformat'], $row['privmsgs_date'], $board_config['board_timezone']);
if ( $flag == PRIVMSGS_NEW_MAIL && $folder == 'inbox' )
{
$msg_subject = '<b>' . $msg_subject . '</b>';
$msg_date = '<b>' . $msg_date . '</b>';
$msg_username = '<b>' . $msg_username . '</b>';
}
$row_class = ( !($i % 2) ) ? 'row1 row-padding' : 'row2 row-padding';
$template->assign_block_vars('listrow', array(
//'NUMBER' => $i + $start + 1,//信息楼层数量
'ROW_CLASS' => $row_class,
'FROM' => $msg_username,
'SUBJECT' => $msg_subject,
'DATE' => $msg_date,
'PRIVMSG_FOLDER_IMG' => $icon_flag,
'U_READ' => $u_subject)
);
$i++;
}
while( $row = $db->sql_fetchrow($result) );
$template->assign_vars(array(
'PAGINATION' => generate_pagination("privmsg.php?folder=$folder", $pm_total, $board_config['topics_per_page'], $start))
);
}
else
{
$template->assign_block_vars('switch_no_messages', array());
}
$template->pparse('body');
page_footer();
?>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/phpbb-wap-phpbb-wap.git
git@api.gitlife.ru:oschina-mirror/phpbb-wap-phpbb-wap.git
oschina-mirror
phpbb-wap-phpbb-wap
phpbb-wap-phpbb-wap
master