📄 pm.php
字号:
<?php
/*
[Discuz!] (C)2001-2009 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: pm.php 17074 2008-12-05 02:35:55Z monkey $
*/
define('CURSCRIPT', 'pm');
define('NOROBOT', TRUE);
require_once './include/common.inc.php';
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'HALTED');
}
include_once DISCUZ_ROOT.'./uc_client/client.php';
if(isset($checknewpm)) {
@dheader("Expires: 0");
@dheader("Cache-Control: private, post-check=0, pre-check=0, max-age=0", FALSE);
@dheader("Pragma: no-cache");
$ucnewpm = uc_pm_checknew($discuz_uid, 1);
if($newpm != $ucnewpm['newpm']) {
$db->query("UPDATE {$tablepre}members SET prompt=prompt|1 WHERE uid='$discuz_uid'", 'UNBUFFERED');
}
setcookie('checkpm', 1, $timestamp + 30);
dsetcookie('pmnum', $ucnewpm['newpm'], $timestamp + 30);
include_once template('pm_checknew');
exit;
}
$page = max($page, 1);
$action = !empty($action) ? $action : (isset($uid) || !empty($pmid) ? 'view' : '');
if(!$action) {
$pmstatus = uc_pm_checknew($discuz_uid, 4);
$systemnewpm = $pmstatus['newpm'] - $pmstatus['newprivatepm'];
$filter = !empty($filter) && in_array($filter, array('newpm', 'privatepm', 'systempm', 'announcepm')) ? $filter : ($pmstatus['newpm'] ? 'newpm' : 'privatepm');
$ucdata = uc_pm_list($discuz_uid, $page, $ppp, !isset($search) ? 'inbox' : 'searchbox', !isset($search) ? $filter : $srchtxt, 200);
if(!empty($search) && $srchtxt !== '') {
$filter = '';
$srchtxtinput = htmlspecialchars(stripslashes($srchtxt));
$srchtxtenc = rawurlencode($srchtxt);
} else {
$multipage = multi($ucdata['count'], $ppp, $page, 'pm.php?filter='.$filter);
}
$_COOKIE['checkpm'] && setcookie('checkpm', '', -86400 * 365);
$pmlist = array();
$today = $timestamp - ($timestamp + $timeoffset * 3600) % 86400;
foreach($ucdata['data'] as $pm) {
$pm['msgfromurl'] = $pm['fromappid'] && $ucapp[$pm['fromappid']]['viewprourl'] ? sprintf($ucapp[$pm['fromappid']]['viewprourl'], $pm['msgfromid']) : 'space.php?uid='.$pm['msgfromid'];
$pm['daterange'] = 5;
if($pm['dateline'] >= $today) {
$pm['daterange'] = 1;
} elseif($pm['dateline'] >= $today - 86400) {
$pm['daterange'] = 2;
} elseif($pm['dateline'] >= $today - 172800) {
$pm['daterange'] = 3;
}
$pm['date'] = gmdate($dateformat, $pm['dateline'] + $timeoffset * 3600);
$pm['time'] = gmdate($timeformat, $pm['dateline'] + $timeoffset * 3600);
$pmlist[] = $pm;
}
} elseif($action == 'viewnew') {
$newpmnum = uc_pm_checknew($discuz_uid);
$pmlist = array();
if($newpmnum) {
$num = min(5, $newpmnum);
$morenum = max(0, $newpmnum - 5);
$ucdata = uc_pm_list($discuz_uid, 1, $num, 'inbox', 'newpm', 0);
$today = $timestamp - ($timestamp + $timeoffset * 3600) % 86400;
foreach($ucdata['data'] as $pm) {
$pm['daterange'] = 5;
if($pm['dateline'] >= $today) {
$pm['daterange'] = 1;
} elseif($pm['dateline'] >= $today - 86400) {
$pm['daterange'] = 2;
} elseif($pm['dateline'] >= $today - 172800) {
$pm['daterange'] = 3;
}
$pmlist[] = $pm;
}
$db->query("UPDATE {$tablepre}members SET prompt=prompt^1 WHERE uid='$discuz_uid' AND prompt=prompt|1", 'UNBUFFERED');
}
include template('pm_viewnew');
exit;
} elseif($action == 'view') {
$daterange = empty($daterange) ? 1 : $daterange;
if(isset($uid)) {
$ucdata = uc_pm_view($discuz_uid, '', $uid, $daterange);
$msgfromurl = $pm['fromappid'] && $ucapp[$pm['fromappid']]['viewprourl'] ? sprintf($ucapp[$pm['fromappid']]['viewprourl'], $uid) : 'space.php?uid='.$uid;
list(,$user) = uc_get_user($uid, 1);
} elseif(!empty($pmid)) {
$ucdata = uc_pm_view($discuz_uid, $pmid, 0, $daterange);
$msgfromurl = '';
}
$pmlist = array();
$pmdate = '';
foreach($ucdata as $pm) {
$dateline = $pm['dateline'] + $timeoffset * 3600;
$pm['date'] = gmdate($dateformat, $dateline);
if($pmdate != $pm['date']) {
$lastdaterange = $pm['daterange'] = $pm['date'];
} else {
$pm['daterange'] = '';
}
$pmdate = $pm['date'];
$pm['dateline'] = gmdate("$dateformat $timeformat", $dateline);
$pm['new'] && $pmunread++;
$pmlist[] = $pm;
}
if(!empty($export)) {
ob_end_clean();
dheader('Content-Encoding: none');
dheader('Content-Type: '.(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
dheader('Content-Disposition: attachment; filename="PM_'.$discuz_userss.'_'.$user.'_'.gmdate('ymd_Hi', $timestamp + $timeoffset * 3600).'.htm"');
dheader('Pragma: no-cache');
dheader('Expires: 0');
include template('pm_archive_html');
exit;
}
} elseif($action == 'new') {
if(!$allowsendpm) {
showmessage('pm_send_disable');
}
$username = $subject = $message = '';
if(!empty($uid)) {
$username = htmlspecialchars($db->result_first("SELECT username FROM {$tablepre}members WHERE uid='$uid'", 0));
}
if(!empty($pmid)) {
include_once language('misc');
$ucdata = uc_pm_view($discuz_uid, $pmid);
$subject = 'Fw: '.$ucdata[0]['subject'];
$message = ($ucdata[0]['msgfromid'] ? $language['pm_from'].': '.$ucdata[0]['msgfrom'] : $lang['pm_system'])."\n".
$language['pm_to'].': '.$discuz_userss."\n".
$language['pm_date'].': '.gmdate("$dateformat $timeformat", $ucdata[0]['dateline'] + $timeoffset * 3600)."\n\n".
'[quote]'.trim(preg_replace("/(\[quote])(.*)(\[\/quote])/siU", '', $ucdata[0]['message'])).'[/quote]'."\n";
}
if($operation == 'trade' && ($tradepid = intval($pid))) {
include_once language('misc');
$tradepid = intval($tradepid);
$trade = $db->fetch_first("SELECT * FROM {$tablepre}trades WHERE pid='$tradepid'");
if($trade) {
$subject = htmlspecialchars($language['post_trade_pm_subject'].$trade['subject']);
$message = '[url='.$boardurl.'viewthread.php?do=tradeinfo&tid='.$trade['tid'].'&pid='.$tradepid.']'.$trade['subject']."[/url]\n";
$message .= $trade['costprice'] ? $language['post_trade_costprice'].': '.$trade['costprice']."\n" : '';
$message .= $language['post_trade_price'].': '.$trade['price']."\n";
$message .= $language['post_trade_transport_type'].': ';
if($trade['transport'] == 1) {
$message .= $language['post_trade_transport_seller'];
} elseif($trade['transport'] == 2) {
$message .= $language['post_trade_transport_buyer'];
} elseif($trade['transport'] == 3) {
$message .= $language['post_trade_transport_virtual'];
} elseif($trade['transport'] == 4) {
$message .= $language['post_trade_transport_physical'];
}
if($trade['transport'] == 1 or $trade['transport'] == 2 or $trade['transport'] == 4) {
if(!empty($trade['ordinaryfee'])) {
$message .= ', '.$language['post_trade_transport_mail'].' '.$trade['ordinaryfee'].' '.$language['payment_unit'];
}
if(!empty($trade['expressfee'])) {
$message .= ', '.$language['post_trade_transport_express'].' '.$trade['expressfee'].' '.$language['payment_unit'];
}
if(!empty($trade['emsfee'])) {
$message .= ', EMS '.$trade['emsfee'].' '.$language['payment_unit'];
}
}
$message .= "\n".$language['post_trade_locus'].': '.$trade['locus']."\n\n";
$message .= $language['post_trade_pm_buynum'].": \n";
$message .= $language['post_trade_pm_wishprice'].": \n";
$message .= $language['post_trade_pm_reason'].": \n";
$message = htmlspecialchars($message);
}
} elseif($operation == 'emailfriend') {
include_once language('misc');
$thread = $db->fetch_first("SELECT * FROM {$tablepre}threads WHERE tid='$tid' AND displayorder>='0'");
$fromuid = $creditspolicy['promotion_visit'] ? '&fromuid='.$discuz_uid : '';
$threadurl = "{$boardurl}viewthread.php?tid=$tid$fromuid";
eval("\$message = \"".$language['emailfriend_message']."\";");
}
$buddynum = uc_friend_totalnum($discuz_uid, 3);
$buddyarray = uc_friend_ls($discuz_uid, 1, $buddynum, $buddynum, 3);
$uids = array();
foreach($buddyarray as $buddy) {
$uids[] = $buddy['friendid'];
}
$buddyarray = array();
if($uids) {
$query = $db->query("SELECT uid, username FROM {$tablepre}members WHERE uid IN (".implodeids($uids).")");
while($buddy = $db->fetch_array($query)) {
$buddyarray[] = $buddy;
}
}
include template('pm_send');
exit;
} elseif($action == 'send' && submitcheck('pmsubmit')) {
if(!$allowsendpm) {
showmessage('pm_send_disable');
}
if(!$adminid && $newbiespan && (!$lastpost || $timestamp - $lastpost < $newbiespan * 3600)) {
$query = $db->query("SELECT regdate FROM {$tablepre}members WHERE uid='$discuz_uid'");
if($timestamp - ($db->result($query, 0)) < $newbiespan * 3600) {
showmessage('pm_newbie_span');
}
}
!($exempt & 1) && checklowerlimit($creditspolicy['sendpm'], -1);
if(!empty($uid)) {
$msgto = intval($uid);
} else {
if(!empty($msgtos)) {
$buddynum = uc_friend_totalnum($discuz_uid, 3);
$buddyarray = uc_friend_ls($discuz_uid, 1, $buddynum, $buddynum, 3);
$uids = array();
foreach($buddyarray as $buddy) {
$uids[] = $buddy['friendid'];
}
$msgto = $p = '';
foreach($msgtos as $uid) {
$msgto .= in_array($uid, $uids) ? $p.$uid : '';
$p = ',';
}
if(!$msgto) {
showmessage('pm_send_nonexistence');
}
} else {
if(!($uid = $db->result_first("SELECT uid FROM {$tablepre}members WHERE username='$msgto'"))) {
showmessage('pm_send_nonexistence');
}
$msgto = $uid;
}
}
if($discuz_uid == $msgto) {
showmessage('pm_send_self_ignore');
}
if(trim($message) === '') {
showmessage('pm_send_empty');
}
include_once './forumdata/cache/cache_bbcodes.php';
foreach($_DCACHE['smilies']['replacearray'] AS $key => $smiley) {
$_DCACHE['smilies']['replacearray'][$key] = '[img]'.$boardurl.'images/smilies/'.$_DCACHE['smileytypes'][$_DCACHE['smilies']['typearray'][$key]]['directory'].'/'.$smiley.'[/img]';
}
$message = preg_replace($_DCACHE['smilies']['searcharray'], $_DCACHE['smilies']['replacearray'], $message);
$pmid = uc_pm_send($discuz_uid, $msgto, '', $message, 1, 0, 0);
if($pmid > 0) {
!($exempt & 1) && updatecredits($discuz_uid, $creditspolicy['sendpm'], -1);
if(empty($sendnew)) {
$pm = uc_pm_viewnode($discuz_uid, 0, $pmid);
$dateline = $pm['dateline'] + $timeoffset * 3600;
$pm['daterange'] = gmdate($dateformat, $dateline);
$pm['daterange'] = $pm['daterange'] != $lastdaterange ? $pm['daterange'] : '';
$pm['dateline'] = gmdate("$dateformat $timeformat", $dateline);
include template('header_ajax');
include template('pm_node');
include template('footer_ajax');
exit;
} else {
showmessage('pm_send_succeed', '', 1);
exit;
}
} elseif($pmid == -1) {
showmessage('pm_send_limit1day_error');
} elseif($pmid == -2) {
showmessage('pm_send_floodctrl_error');
} elseif($pmid == -3) {
showmessage('pm_send_batnotfriend_error');
} elseif($pmid == -4) {
showmessage('pm_send_pmsendregdays_error');
} else {
showmessage('pm_send_invalid');
}
} elseif($action == 'del') {
$uid = !empty($uid) ? (!is_array($uid) ? array($uid) : $uid) : array();
$pmid = !empty($pmid) ? (!is_array($pmid) ? array($pmid) : $pmid) : array();
if($uid || $pmid) {
if(!$readopt) {
if($uid) {
uc_pm_deleteuser($discuz_uid, $uid);
}
if($pmid) {
uc_pm_delete($discuz_uid, 'inbox', $pmid);
}
showmessage('pm_delete_succeed', "pm.php?filter=$filter&page=$page");
} else {
uc_pm_readstatus($discuz_uid, $uid, $pmid, $readopt == 1 ? 0 : 1);
showmessage($readopt == 1 ? 'pm_mark_read_succeed' : 'pm_mark_unread_succeed', "pm.php?filter=$filter&page=$page");
}
} else {
showmessage('pm_nonexistence', "pm.php?filter=$filter&page=$page");
}
} elseif($action == 'addblack') {
if($formhash != FORMHASH) {
showmessage('undefined_action', NULL, 'HALTED');
}
uc_pm_blackls_add($discuz_uid, $user);
if($user != '{ALL}') {
showmessage('pm_addblack_succeed', 'pm.php?action=viewblack');
} else {
showmessage('pm_addblackall_succeed', 'pm.php?action=viewblack');
}
} elseif($action == 'delblack') {
if($formhash != FORMHASH) {
showmessage('undefined_action', NULL, 'HALTED');
}
uc_pm_blackls_delete($discuz_uid, $user);
showmessage('pm_delblack_succeed', 'pm.php?action=viewblack');
} elseif($action == 'viewblack') {
$blackls = explode(',', uc_pm_blackls_get($discuz_uid));
$blackall = in_array('{ALL}', $blackls);
}
include template('pm');
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -