www.gusucode.com > 家居装修网站+论坛网站源码程序 > 家居装修网站+论坛/整站安装/整站源码/uc_server/control/pm_client.php
<?php /* [UCenter] (C)2001-2099 Comsenz Inc. This is NOT a freeware, use is subject to license terms $Id: pm_client.php 1059 2011-03-01 07:25:09Z monkey $ */ !defined('IN_UC') && exit('Access Denied'); class pm_clientcontrol extends base { function __construct() { $this->pm_clientcontrol(); } function pm_clientcontrol() { parent::__construct(); if(!$this->settings['pmcenter']) { exit('PMCenter closed'); } $this->load('user'); $this->load('pm', NULL, UC_SERVER_RELEASE); } function _auth() { $input = getgpc('input'); if(!$this->user['uid'] || isset($input)) { $this->init_input(); header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); if($this->input['uid']) { $this->setcookie('uc_auth', @$this->authcode($this->input['uid']."||".md5($_SERVER['HTTP_USER_AGENT']), 'ENCODE', UC_KEY), 1800); @$this->user['uid'] = $this->input['uid']; } else { $this->setcookie('uc_auth', ''); $this->message('please_login', '', 1); } } } function onls() { $folder = getgpc('folder'); $page = getgpc('page'); $filter = getgpc('filter'); $a = getgpc('a'); $this->_auth(); $uid = $this->user['uid']; $_ENV['pm']->lang = &$this->lang; $page = $page ? $page : 1; $filter = $filter ? (in_array($filter, array('newpm', 'privatepm')) ? $filter : '') : 'privatepm'; $pmnum_private = $_ENV['pm']->getpmnum($uid, 0, 0); $unreadpmnum = $_ENV['pm']->getpmnum($uid, 0, 1); $this->view->assign('user', $this->user); $this->view->assign('pmnum_private', $pmnum_private); $this->view->assign('pmnum_chatpm', $pmnum_chatpm); $this->view->assign('unreadpmnum', $unreadpmnum); if($folder == 'blackls') { $blackls = htmlspecialchars($_ENV['pm']->get_blackls($uid)); $this->view->assign('folder', $folder); $this->view->assign('blackls', $blackls); $this->view->display('pm_blackls'); } else { $start = ($page - 1) * 10; $pmlist = $_ENV['pm']->getpmlist($uid, $filter, $start, 10); if($pmlist) { foreach($pmlist as $key => $value) { $pmlist[$key]['filter'] = 'privatepm'; $pmlist[$key]['lastdateline'] = $this->date($value['lastdateline']); } } $extra = 'extra='.rawurlencode('page='.$page); $multipage = $this->page($pmnum, 10, $page, 'index.php?m=pm_client&a=ls&folder='.$folder.'&filter='.$filter); $this->view->assign('extra', $extra); $this->view->assign('filter', $filter); $this->view->assign('pmlist', $pmlist); $this->view->assign('multipage', $multipage); $this->view->display('pm_ls'); } } function onblackls() { $blackls = getgpc('blackls', 'P'); $this->_auth(); $uid = $this->user['uid']; if($this->submitcheck()) { $_ENV['pm']->set_blackls($uid, $blackls); } $this->message('blackls_updated', 'index.php?m=pm_client&a=ls&folder=blackls', 1); } function onsend() { $a = getgpc('a'); $do = getgpc('do'); $this->_auth(); $uid = $this->user['uid']; $this->load('friend'); $totalnum = $_ENV['friend']->get_totalnum_by_uid($this->user['uid'], 3); $friends = $totalnum ? $_ENV['friend']->get_list($this->user['uid'], 1, $totalnum, $totalnum, 3) : array(); if(!$this->submitcheck()) { $extra = 'extra='.rawurlencode($_GET['extra']); $type = !empty($_GET['type']) ? $_GET['type'] : ''; $pmid = @is_numeric($_GET['pmid']) ? $_GET['pmid'] : 0; $daterange = $_GET['daterange'] ? intval($_GET['daterange']) : 1; $touid = intval($_GET['touid']); $plid = intval($_GET['plid']); $folder = getgpc('folder'); $pmnum_private = $_ENV['pm']->getpmnum($uid, 0, 0); $unreadpmnum = $_ENV['pm']->getpmnum($uid, 0, 1); $touser = ''; if($pmid) { $tmp = $_ENV['pm']->getpmbypmid($uid, $pmid); $tmp = $tmp[0]; } else { $tmp = array(); } if(!empty($pmid)) { if($do == 'forward') { $user = $_ENV['user']->get_user_by_uid($tmp['msgtoid']); $tmp['message'] = $this->lang['pm_from'].': '.$tmp['author']."\n". $this->lang['pm_to'].': '.htmlspecialchars($user['username'])."\n". $this->lang['pm_date'].': '.$this->date($tmp['dateline'])."\n\n". '[quote]'.trim(preg_replace("/(\[quote])(.*)(\[\/quote])/siU", '', $tmp['message'])).'[/quote]'."\n"; } } else { !empty($_GET['msgto']) && $touser = htmlspecialchars($_GET['msgto']); !empty($_GET['subject']) && $tmp['subject'] = $_GET['subject']; !empty($_GET['message']) && $tmp['message'] = $_GET['message']; } if($this->settings['sendpmseccode']) { $authkey = md5(UC_KEY.$_SERVER['HTTP_USER_AGENT'].$this->onlineip); $rand = rand(100000, 999999); $seccodeinit = rawurlencode($this->authcode($rand, 'ENCODE', $authkey, 720)); $this->view->assign('seccodeinit', $seccodeinit); } $this->view->assign('sendpmseccode', $this->settings['sendpmseccode']); $this->view->assign('touser', $touser); $this->view->assign('user', $this->user); $this->view->assign('pmnum_private', $pmnum_private); $this->view->assign('pmnum_chatpm', $pmnum_chatpm); $this->view->assign('unreadpmnum', $unreadpmnum); $this->view->assign('friends', $friends); $this->view->assign('extra', $extra); $this->view->assign('pmid', $pmid); $this->view->assign('daterange', $daterange); $this->view->assign('touid', $touid); $this->view->assign('plid', $plid); $this->view->assign('a', $a); $this->view->assign('do', $do); $this->view->assign('folder', $folder); $tmp['message'] = htmlspecialchars($tmp['message']); $this->view->assign('message', $tmp['message']); $this->view->assign('type', $type); $this->view->display('pm_send'); } else { if($this->settings['sendpmseccode']) { $authkey = md5(UC_KEY.$_SERVER['HTTP_USER_AGENT'].$this->onlineip); $seccodehidden = urldecode(getgpc('seccodehidden', 'P')); $seccode = strtoupper(getgpc('seccode', 'P')); $seccodehidden = $this->authcode($seccodehidden, 'DECODE', $authkey); require UC_ROOT.'./lib/seccode.class.php'; seccode::seccodeconvert($seccodehidden); if(empty($seccodehidden) || $seccodehidden != $seccode) { $this->message('pm_send_seccode_error', 'BACK', 1); } } $user = $_ENV['user']->get_user_by_uid($this->user['uid']); $this->user['username'] = daddslashes($user['username'], 1); $touid = intval(getgpc('touid')); $daterange = intval(getgpc('daterange')); $type = intval(getgpc('type')); $replypmid = @is_numeric($_GET['replypmid']) ? $_GET['replypmid'] : 0; $msgto = array(); if($replypmid) { $plid = $_ENV['pm']->getplidbypmid($replypmid); $msgto = $_ENV['pm']->getuidbyplid($plid); unset($msgto[$uid]); } else { if(!empty($_POST['msgto'])) { $msgto = explode(',', $_POST['msgto']); $msgto = $_ENV['user']->name2id($msgto); } } if(isset($_POST['friend'])) { $frienduids = array(); foreach($friends as $friend) { $frienduids[] = $friend['friendid']; } foreach($_POST['friend'] as $friendid) { if(in_array($friendid, $frienduids)) { $msgto[] = $friendid; } } } if(!$msgto) { $this->message('receiver_no_exists', 'BACK', 1); } $msgto = array_unique($msgto); $countmsgto = count($msgto); if($this->settings['pmsendregdays']) { if($user['regdate'] > $this->time - $this->settings['pmsendregdays'] * 86400) { $this->message('pm_send_regdays_error', 'BACK', 1, array('$pmsendregdays' => $this->settings['pmsendregdays'])); } } if($this->settings['chatpmmemberlimit']) { if($type == 1 && ($countmsgto > ($this->settings['chatpmmemberlimit'] - 1))) { $this->message('pm_send_chatpmmemberlimit_error', 'BACK', 1, array('$chatpmmemberlimit' => $this->settings['chatpmmemberlimit'])); } } if($this->settings['pmfloodctrl']) { if(!$_ENV['pm']->ispminterval($this->user['uid'], $this->settings['pmfloodctrl'])) { $this->message('pm_send_pmfloodctrl_error', 'BACK', 1, array('$pmfloodctrl' => $this->settings['pmfloodctrl'])); } } if($this->settings['privatepmthreadlimit']) { if(!$_ENV['pm']->isprivatepmthreadlimit($this->user['uid'], $this->settings['privatepmthreadlimit'])) { $this->message('pm_send_privatepmthreadlimit_error', 'BACK', 1, array('$privatepmthreadlimit' => $this->settings['privatepmthreadlimit'])); } } if($this->settings['chatpmthreadlimit']) { if(!$_ENV['pm']->ischatpmthreadlimit($this->user['uid'], $this->settings['chatpmthreadlimit'])) { $this->message('pm_send_chatpmthreadlimit_error', 'BACK', 1, array('$chatpmthreadlimit' => $this->settings['chatpmthreadlimit'])); } } if($replypmid) { $lastpmid = $_ENV['pm']->replypm($plid, $this->user['uid'], $this->user['username'], $_POST['message']); } else { $lastpmid = $_ENV['pm']->sendpm($this->user['uid'], $this->user['username'], $msgto, $_POST['message'], $type); } if($lastpmid > 0) { if($replypmid) { if($touid) { $this->message('pm_send_succeed', "index.php?m=pm_client&a=view&touid=$touid&daterange=$daterange&filter=privatepm", 1); } else { $this->message('pm_send_succeed', "index.php?m=pm_client&a=view&plid=$plid&daterange=$daterange&filter=chatpm", 1); } } else { if(!$type) { $this->message('pm_send_succeed', 'index.php?m=pm_client&a=ls&filter=privatepm', 1); } else { $this->message('pm_send_succeed', 'index.php?m=pm_client&a=ls&filter=chatpm', 1); } } } else { $this->message('pm_send_ignore', 'BACK', 1); } } } function ondelete() { $this->_auth(); $uid = $this->user['uid']; $deletetouids = getgpc('deleteuid'); $deleteplids = getgpc('deleteplid'); $quitplids = getgpc('deletequitplid'); $filter = getgpc('filter'); if($deletetouids && $deleteplids && $quitplids) { $this->message('pm_delete_invalid', 'index.php?m=pm_client&a=ls&filter='.$filter.'&'.$_GET['extra'], 1); } $flag = true; if($deletetouids) { $return = $_ENV['pm']->deletepmbyplid($uid, $deletetouids, 1); if($return <= 0) { $flag = false; } } if($deleteplids) { $return = $_ENV['pm']->deletepmbyplid($uid, $deleteplids); if($return <= 0) { $flag = false; } } if($quitplids) { $return = $_ENV['pm']->quitchatpm($uid, $quitplids); if($return <= 0) { $flag = false; } } if($flag) { $this->message('pm_delete_succeed', 'index.php?m=pm_client&a=ls&filter='.$filter.'&'.$_GET['extra'], 1); } else { $this->message('pm_delete_invalid', 'index.php?m=pm_client&a=ls&filter='.$filter.'&'.$_GET['extra'], 1); } } function onview() { $touid = intval(getgpc('touid')); $plid = intval(getgpc('plid')); $scroll = getgpc('scroll'); $daterange = getgpc('daterange'); $filter = getgpc('filter'); $extra = 'extra='.rawurlencode(getgpc('extra')); $a = getgpc('a'); $this->_auth(); $uid = $this->user['uid']; $pmnum_private = $_ENV['pm']->getpmnum($uid, 0, 0); $unreadpmnum = $_ENV['pm']->getpmnum($uid, 0, 1); $daterange = empty($daterange) ? 1 : $daterange; $today = $this->time - ($this->time + $this->settings['timeoffset']) % 86400; if($daterange == 1) { $starttime = $today; } elseif($daterange == 2) { $starttime = $today - 86400; } elseif($daterange == 3) { $starttime = $today - 172800; } elseif($daterange == 4) { $starttime = $today - 604800; } elseif($daterange == 5) { $starttime = 0; } $endtime = $this->time; if($touid) { $touser = $_ENV['user']->get_user_by_uid($touid); $plid = $_ENV['pm']->getplidbytouid($uid, $touid); $pms = $_ENV['pm']->getpmbyplid($uid, $plid, $starttime, $endtime, 0, 0, 0); } elseif($plid) { $pms = $_ENV['pm']->getpmbyplid($uid, $plid, $starttime, $endtime, 0, 0, 1); } if($pms) { $founderuid = $pms[0]['founderuid']; $replypmid = $pms[0]['pmid']; $subject = $pms[0]['subject']; } require_once UC_ROOT.'lib/uccode.class.php'; $this->uccode = new uccode(); foreach($pms as $key => $pm) { $pms[$key]['message'] = $this->uccode->complie($pms[$key]['message']); $pms[$key]['dateline'] = $this->date($pms[$key]['dateline']); } if($this->settings['sendpmseccode']) { $authkey = md5(UC_KEY.$_SERVER['HTTP_USER_AGENT'].$this->onlineip); $rand = rand(100000, 999999); $seccodeinit = rawurlencode($this->authcode($rand, 'ENCODE', $authkey, 720)); $this->view->assign('seccodeinit', $seccodeinit); } $this->view->assign('sendpmseccode', $this->settings['sendpmseccode']); $this->view->assign('scroll', $scroll); $this->view->assign('user', $this->user); $this->view->assign('touser', $touser); $this->view->assign('subject', $subject); $this->view->assign('pmnum_private', $pmnum_private); $this->view->assign('pmnum_chatpm', $pmnum_chatpm); $this->view->assign('unreadpmnum', $unreadpmnum); $this->view->assign('daterange', $daterange); $this->view->assign('replypmid', $replypmid); $this->view->assign('touid', $touid); $this->view->assign('plid', $plid); $this->view->assign('extra', $extra); $this->view->assign('founderuid', $founderuid); $this->view->assign('filter', $filter); $this->view->assign('pms', $pms); $this->view->display('pm_view'); } function onmember() { $plid = intval(getgpc('plid')); $scroll = getgpc('scroll'); $daterange = getgpc('daterange'); $filter = getgpc('filter'); $extra = 'extra='.rawurlencode(getgpc('extra')); $a = getgpc('a'); $do = getgpc('do'); $this->_auth(); $uid = $this->user['uid']; $pmnum_private = $_ENV['pm']->getpmnum($uid, 0, 0); $unreadpmnum = $_ENV['pm']->getpmnum($uid, 0, 1); if($do == 'kickmember') { $memberuid = intval(getgpc('memberuid')); if($memberuid) { $_ENV['pm']->kickchatpm($plid, $uid, $memberuid); } $this->message('pm_kickmember_succeed', "index.php?m=pm_client&a=member&plid=$plid&filter=".$filter.'&'.$_GET['extra'], 1); } if($this->submitcheck() && $do == 'appendmember') { $appendmember = $_ENV['user']->get_user_by_username(getgpc('appendmember')); if($appendmember) { $return = $_ENV['pm']->appendchatpm($plid, $uid, $appendmember['uid']); if($return > 0) { $this->message('pm_appendmember_succeed', "index.php?m=pm_client&a=member&plid=$plid&filter=".$filter.'&'.$_GET['extra'], 1); } } $this->message('pm_appendmember_invalid', "index.php?m=pm_client&a=member&plid=$plid&filter=".$filter.'&'.$_GET['extra'], 1); } $members = $_ENV['pm']->chatpmmemberlist($uid, $plid); $authorid = $members['author']; $members = $members['member']; $members = $_ENV['user']->id2name($members); $this->view->assign('scroll', $scroll); $this->view->assign('user', $this->user); $this->view->assign('pmnum_private', $pmnum_private); $this->view->assign('pmnum_chatpm', $pmnum_chatpm); $this->view->assign('unreadpmnum', $unreadpmnum); $this->view->assign('replypmid', $replypmid); $this->view->assign('subject', $subject); $this->view->assign('daterange', $daterange); $this->view->assign('plid', $plid); $this->view->assign('extra', $extra); $this->view->assign('filter', $filter); $this->view->assign('authorid', $authorid); $this->view->assign('members', $members); $this->view->display('pm_member'); } } ?>