📄 my.php
字号:
<?php
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: my.php 13432 2008-04-15 07:32:32Z tiger $
*/
define('NOROBOT', TRUE);
require_once './include/common.inc.php';
require_once DISCUZ_ROOT.'./forumdata/cache/cache_forums.php';
$discuz_action = 8;
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'NOPERM');
}
$page = max(1, intval($page));
$start_limit = ($page - 1) * $tpp;
$threadlist = $postlist = array();
$tids = $comma = $threadadd = $postadd = $forumname = $extrafid = $extra = $multipage = '';
if($srchfid = empty($srchfid) ? 0 : intval($srchfid)) {
$threadadd = "AND t.fid='$srchfid'";
$postadd = "AND p.fid='$srchfid'";
$forumname = $_DCACHE['forums'][$srchfid]['name'];
$extrafid = '&srchfid='.$srchfid;
}
$item = isset($item) ? trim($item) : '';
if(empty($item)) {
$query = $db->query("SELECT m.*, t.subject, t.fid, t.displayorder, t.lastposter, t.lastpost, t.closed FROM {$tablepre}mythreads m, {$tablepre}threads t
WHERE m.uid='$discuz_uid' AND m.tid=t.tid $threadadd ORDER BY m.dateline DESC LIMIT 5");
while($thread = $db->fetch_array($query)) {
$thread['lastpost'] = gmdate("$dateformat $timeformat", $thread['lastpost'] + $timeoffset * 3600);
$thread['forumname'] = $_DCACHE['forums'][$thread['fid']]['name'];
$thread['lastposterenc'] = rawurlencode($thread['lastposter']);
$threadlist[] = $thread;
}
$query = $db->query("SELECT m.*, p.fid, p.invisible FROM {$tablepre}myposts m
INNER JOIN {$tablepre}posts p ON p.pid=m.pid $postadd
INNER JOIN {$tablepre}threads t ON t.tid=m.tid
WHERE m.uid = '$discuz_uid' ORDER BY m.dateline DESC LIMIT 5");
while($post = $db->fetch_array($query)) {
$post['forumname'] = $_DCACHE['forums'][$post['fid']]['name'];
$postlist[$post['tid']] = $post;
$tids .= $comma.$post['tid'];
$comma = ', ';
}
if($tids) {
$query = $db->query("SELECT tid, subject, lastposter, lastpost FROM {$tablepre}threads WHERE tid IN ($tids)");
while($thread = $db->fetch_array($query)) {
$postlist[$thread['tid']]['subject'] = $thread['subject'];
$postlist[$thread['tid']]['lastposter'] = $thread['lastposter'];
$postlist[$thread['tid']]['lastpost'] = gmdate("$dateformat $timeformat", $thread['lastpost'] + $timeoffset * 3600);
$postlist[$thread['tid']]['lastposterenc'] = rawurlencode($thread['lastposter']);
}
}
} elseif($item == 'grouppermission') {
$searchgroupid = isset($searchgroupid) ? intval($searchgroupid) : $groupid;
$grouplist = array();
$query = $db->query("SELECT groupid, type, grouptitle FROM {$tablepre}usergroups ORDER BY (creditshigher<>'0' || creditslower<>'0'), creditslower");
while($group = $db->fetch_array($query)) {
$grouplist[$group['type']] .= '<li><a href="my.php?item=grouppermission&type='.$group['type'].'&searchgroupid='.$group['groupid'].'">'.$group['grouptitle'].'</a></li>';
}
$group = $db->fetch_first("SELECT * FROM {$tablepre}usergroups u LEFT JOIN {$tablepre}admingroups a ON u.groupid=a.admingid WHERE u.groupid='$searchgroupid'");
if(!$group) {
showmessage('usergroups_nonexistence');
}
$group['maxattachsize'] = $group['maxattachsize'] / 1000;
$group['maxsizeperday'] = $group['maxsizeperday'] / 1000;
$group['maxbiosize'] = $group['maxbiosize'] ? $group['maxbiosize'] : 200;
include template('my_grouppermission');
exit;
} elseif($item == 'threads') {
$num = $db->result_first("SELECT COUNT(*) FROM {$tablepre}mythreads m, {$tablepre}threads t WHERE m.uid='$discuz_uid' $threadadd AND m.tid=t.tid");
$multipage = multi($num, $tpp, $page, 'my.php?item=threads'.($srchfid ? "&srchfid=$srchfid" : NULL).$extrafid);
$query = $db->query("SELECT m.*, t.subject, t.fid, t.displayorder, t.closed, t.lastposter, t.lastpost FROM {$tablepre}mythreads m, {$tablepre}threads t
WHERE m.uid = '$discuz_uid' $threadadd AND m.tid=t.tid ORDER BY m.dateline DESC LIMIT $start_limit, $tpp");
while($thread = $db->fetch_array($query)) {
$thread['lastpost'] = gmdate("$dateformat $timeformat", $thread['lastpost'] + $timeoffset * 3600);
$thread['forumname'] = $_DCACHE['forums'][$thread['fid']]['name'];
$thread['lastposterenc'] = rawurlencode($thread['lastposter']);
$threadlist[] = $thread;
}
} elseif($item == 'posts') {
$num = $db->result_first("SELECT COUNT(*) FROM {$tablepre}myposts m
INNER JOIN {$tablepre}posts p ON p.pid=m.pid $postadd
INNER JOIN {$tablepre}threads t ON t.tid=m.tid
WHERE m.uid = '$discuz_uid'");
$multipage = multi($num, $tpp, $page, 'my.php?item=posts'.($srchfid ? "&srchfid=$srchfid" : NULL).$extrafid);
$query = $db->query("SELECT m.uid, m.tid, m.pid, p.fid, p.invisible, p.dateline FROM {$tablepre}myposts m
INNER JOIN {$tablepre}posts p ON p.pid=m.pid $postadd
INNER JOIN {$tablepre}threads t ON t.tid=m.tid
WHERE m.uid = '$discuz_uid' ORDER BY m.dateline DESC LIMIT $start_limit, $tpp");
while($post = $db->fetch_array($query)) {
$post['forumname'] = $_DCACHE['forums'][$post['fid']]['name'];
$postlist[$post['tid']] = $post;
$tids .= $comma.$post['tid'];
$comma = ', ';
}
if($tids) {
$query = $db->query("SELECT tid, subject AS tsubject, lastposter, lastpost, closed FROM {$tablepre}threads WHERE tid IN ($tids)");
while($thread = $db->fetch_array($query)) {
$postlist[$thread['tid']]['tsubject'] = $thread['tsubject'];
$postlist[$thread['tid']]['lastposter'] = $thread['lastposter'];
$postlist[$thread['tid']]['closed'] = $thread['closed'];
$postlist[$thread['tid']]['lastpost'] = gmdate("$dateformat $timeformat", $thread['lastpost'] + $timeoffset * 3600);
$postlist[$thread['tid']]['lastposterenc'] = rawurlencode($thread['lastposter']);
}
}
} elseif(in_array($item, array('favorites', 'subscriptions'))) {
if($fid && empty($forum['allowview'])) {
if(!$forum['viewperm'] && !$readaccess) {
showmessage('group_nopermission', NULL, 'NOPERM');
} elseif($forum['viewperm'] && !forumperm($forum['viewperm'])) {
showmessage('forum_nopermission', NULL, 'NOPERM');
}
}
if($item == 'favorites') {
$ftid = $type == 'thread' || $tid ? 'tid' : 'fid';
$type = $type == 'thread' || $tid ? 'thread' : 'forum';
$extra .= $srchfid ? '&type='.$type : '';
if(($fid || $tid) && !submitcheck('favsubmit')) {
if($db->result_first("SELECT COUNT(*) FROM {$tablepre}favorites WHERE uid='$discuz_uid' AND $ftid>'0'") >= $maxfavorites) {
showmessage('favorite_is_full', 'my.php?item=favorites&type='.$type);
}
if($db->result_first("SELECT $ftid FROM {$tablepre}favorites WHERE uid='$discuz_uid' AND $ftid='${$ftid}' LIMIT 1")) {
showmessage('favorite_exists');
} else {
$db->query("INSERT INTO {$tablepre}favorites (uid, $ftid) VALUES ('$discuz_uid', '${$ftid}')");
showmessage('favorite_add_succeed', dreferer());
}
} elseif(!$fid && !$tid) {
if(!submitcheck('favsubmit')) {
$favlist = array();
if($type == 'forum') {
$num = $db->result_first("SELECT COUNT(*) FROM {$tablepre}favorites fav, {$tablepre}forums f
WHERE fav.uid = '$discuz_uid' AND fav.fid=f.fid");
$multipage = multi($num, $tpp, $page, "my.php?item=favorites&type=forum$extrafid");
$query = $db->query("SELECT f.fid, f.name, f.threads, f.posts, f.todayposts, f.lastpost
FROM {$tablepre}favorites fav, {$tablepre}forums f
WHERE fav.fid=f.fid AND fav.uid='$discuz_uid' ORDER BY f.lastpost DESC LIMIT $start_limit, $tpp");
while($fav = $db->fetch_array($query)) {
$fav['lastposterenc'] = rawurlencode($fav['lastposter']);
$fav['lastpost'] = gmdate("$dateformat $timeformat", $fav['lastpost'] + $timeoffset * 3600);
$favlist[] = $fav;
}
} else {
$num = $db->result_first("SELECT COUNT(*) FROM {$tablepre}favorites fav, {$tablepre}threads t
WHERE fav.uid = '$discuz_uid' AND fav.tid=t.tid AND t.displayorder>='0' $threadadd");
$multipage = multi($num, $tpp, $page, "my.php?item=favorites&type=thread$extrafid");
$query = $db->query("SELECT t.tid, t.fid, t.subject, t.replies, t.lastpost, t.lastposter, f.name
FROM {$tablepre}favorites fav, {$tablepre}threads t, {$tablepre}forums f
WHERE fav.tid=t.tid AND t.displayorder>='0' AND fav.uid='$discuz_uid' AND t.fid=f.fid $threadadd
ORDER BY t.lastpost DESC LIMIT $start_limit, $tpp");
while($fav = $db->fetch_array($query)) {
$fav['lastposterenc'] = rawurlencode($fav['lastposter']);
$fav['lastpost'] = gmdate("$dateformat $timeformat", $fav['lastpost'] + $timeoffset * 3600);
$favlist[] = $fav;
}
}
} else {
if($ids = implodeids($delete)) {
$db->query("DELETE FROM {$tablepre}favorites WHERE uid='$discuz_uid' AND $ftid IN ($ids)", 'UNBUFFERED');
}
showmessage('favorite_update_succeed', dreferer());
}
}
} else {
if(isset($subadd) && !submitcheck('subsubmit')) {
$subadd = intval($subadd);
if($pricethread = $db->result_first("SELECT price FROM {$tablepre}threads WHERE tid='$subadd'")) {
$query = $db->query("SELECT tid FROM {$tablepre}paymentlog WHERE tid='$subadd' AND uid='$discuz_uid'");
if(!$db->num_rows($query)) {
showmessage('subscription_nopermission');
}
}
if($db->result_first("SELECT COUNT(*) FROM {$tablepre}subscriptions WHERE uid='$discuz_uid'") >= $maxsubscriptions) {
showmessage('subscription_is_full', 'my.php?item=subscriptions');
}
if($db->result_first("SELECT tid FROM {$tablepre}subscriptions WHERE tid='$subadd' AND uid='$discuz_uid' LIMIT 1")) {
showmessage('subscription_exists');
} else {
$db->query("INSERT INTO {$tablepre}subscriptions (uid, tid, lastnotify) VALUES ('$discuz_uid', '$subadd', '')");
showmessage('subscription_add_succeed', dreferer());
}
} elseif(empty($subadd)) {
if(!submitcheck('subsubmit')) {
$num = $db->result_first("SELECT COUNT(*) FROM {$tablepre}subscriptions s, {$tablepre}threads t
WHERE s.uid = '$discuz_uid' AND s.tid=t.tid $threadadd");
$multipage = multi($num, $tpp, $page, "my.php?item=subscriptions$extrafid");
$subslist = array();
$query = $db->query("SELECT t.tid, t.fid, t.subject, t.replies, t.lastpost, t.lastposter, f.name
FROM {$tablepre}subscriptions s, {$tablepre}threads t, {$tablepre}forums f
WHERE t.tid=s.tid AND t.displayorder>='0' AND f.fid=t.fid AND s.uid='$discuz_uid' $threadadd
ORDER BY t.lastpost DESC LIMIT $start_limit, $tpp");
while($subs = $db->fetch_array($query)) {
$subs['lastposterenc'] = rawurlencode($subs['lastposter']);
$subs['lastpost'] = gmdate("$dateformat $timeformat", $subs['lastpost'] + $timeoffset * 3600);
$subslist[] = $subs;
}
} else {
if($ids = implodeids($delete)) {
$db->query("DELETE FROM {$tablepre}subscriptions WHERE uid='$discuz_uid' AND tid IN ($ids)", 'UNBUFFERED');
}
showmessage('subscription_update_succeed', dreferer());
}
}
}
} elseif($item == 'selltrades' || $item == 'buytrades') {
require_once DISCUZ_ROOT.'./include/trade.func.php';
include_once language('misc');
$sqlfield = $item == 'selltrades' ? 'sellerid' : 'buyerid';
$sqlfilter = '';
switch($filter) {
case 'attention': $typestatus = $item; break;
case 'eccredit' : $typestatus = 'eccredittrades';
$sqlfilter .= $item == 'selltrades' ? 'AND (tl.ratestatus=0 OR tl.ratestatus=1) ' : 'AND (tl.ratestatus=0 OR tl.ratestatus=2) ';
break;
case 'all' : $typestatus = ''; break;
case 'success' : $typestatus = 'successtrades'; break;
case 'closed' : $typestatus = 'closedtrades'; break;
case 'refund' : $typestatus = 'refundtrades'; break;
case 'unstart' : $typestatus = 'unstarttrades'; break;
default : $typestatus = 'tradingtrades'; $filter = '';
}
$sqlfilter .= $typestatus ? 'AND tl.status IN (\''.trade_typestatus($typestatus).'\')' : '';
if(!empty($srchkey)) {
$sqlkey = 'AND tl.subject like \'%'.str_replace('*', '%', addcslashes($srchkey, '%_')).'%\'';
$extrasrchkey = '&srchkey='.rawurlencode($srchkey);
$srchkey = dhtmlspecialchars($srchkey);
} else {
$sqlkey = $extrasrchkey = $srchkey = '';
}
$pid = intval($pid);
$sqltid = $tid ? 'AND tl.tid=\''.$tid.'\''.($pid ? ' AND tl.pid=\''.$pid.'\'' : '') : '';
$extra .= $srchfid ? '&filter='.$filter : '';
$extratid = $tid ? "&tid=$tid".($pid ? "&pid=$pid" : '') : '';
$num = $db->result_first("SELECT COUNT(*)
FROM {$tablepre}tradelog tl, {$tablepre}threads t
WHERE tl.tid=t.tid AND tl.$sqlfield='$discuz_uid'
$threadadd $sqltid $sqlkey $sqlfilter");
$multipage = multi($num, $tpp, $page, "my.php?item=$item$extratid$extrafid".($filter ? "&filter=$filter" : '').$extrafid.$extrasrchkey);
$query = $db->query("SELECT tl.*, tr.aid, t.subject AS threadsubject
FROM {$tablepre}tradelog tl, {$tablepre}threads t, {$tablepre}trades tr
WHERE tl.tid=t.tid AND tr.pid=tl.pid AND tr.tid=tl.tid AND tl.$sqlfield='$discuz_uid'
$threadadd $sqltid $sqlkey $sqlfilter
ORDER BY tl.lastupdate DESC LIMIT $start_limit, $tpp");
$tradeloglist = array();
while($tradelog = $db->fetch_array($query)) {
$tradelog['lastupdate'] = gmdate("$dateformat $timeformat", $tradelog['lastupdate'] + $timeoffset * 3600);
$tradelog['attend'] = trade_typestatus($item, $tradelog['status']);
$tradelog['status'] = trade_getstatus($tradelog['status']);
$tradeloglist[] = $tradelog;
}
} elseif($item == 'tradestats') {
$extrasrchkey = $extratid = '';
require_once DISCUZ_ROOT.'./include/trade.func.php';
$buystats = $db->fetch_first("SELECT COUNT(*) AS totalitems, SUM(price) AS tradesum FROM {$tablepre}tradelog WHERE buyerid='$discuz_uid' AND status IN ('".trade_typestatus('successtrades')."')");
$sellstats = $db->fetch_first("SELECT COUNT(*) AS totalitems, SUM(price) AS tradesum FROM {$tablepre}tradelog WHERE sellerid='$discuz_uid' AND status IN ('".trade_typestatus('successtrades')."')");
$query = $db->query("SELECT status FROM {$tablepre}tradelog WHERE buyerid='$discuz_uid' AND status IN ('".trade_typestatus('buytrades')."')");
$buyerattend = $db->num_rows($query);
$attendstatus = array();
while($status = $db->fetch_array($query)) {
@$attendstatus[$status['status']]++;
}
$query = $db->query("SELECT status FROM {$tablepre}tradelog WHERE sellerid='$discuz_uid' AND status IN ('".trade_typestatus('selltrades')."')");
$sellerattend = $db->num_rows($query);
while($status = $db->fetch_array($query)) {
@$attendstatus[$status['status']]++;
}
$goodsbuyer = $db->result_first("SELECT COUNT(*) FROM {$tablepre}tradelog WHERE buyerid='$discuz_uid' AND status IN ('".trade_typestatus('tradingtrades')."')");
$goodsseller = $db->result_first("SELECT COUNT(*) FROM {$tablepre}trades WHERE sellerid='$discuz_uid' AND closed='0'");
$eccreditbuyer = $db->result_first("SELECT COUNT(*) FROM {$tablepre}tradelog WHERE status IN ('".trade_typestatus('eccredittrades')."') AND buyerid='$discuz_uid' AND (ratestatus=0 OR ratestatus=2)");
$eccreditseller = $db->result_first("SELECT COUNT(*) FROM {$tablepre}tradelog WHERE status IN ('".trade_typestatus('eccredittrades')."') AND sellerid='$discuz_uid' AND (ratestatus=0 OR ratestatus=1)");
} elseif($item == 'tradethreads') {
if(!empty($srchkey)) {
$sqlkey = 'AND subject like \'%'.str_replace('*', '%', addcslashes($srchkey, '%_')).'%\'';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -