You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

373 lines
10 KiB
PHTML

2 years ago
<?php
/*
[UCenter] (C)2001-2099 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: pm.php 1067 2011-03-08 10:06:51Z svn_project_zhangjie $
*/
!defined('IN_UC') && exit('Access Denied');
define('PRIVATEPMTHREADLIMIT_ERROR', -1);
define('PMFLOODCTRL_ERROR', -2);
define('PMMSGTONOTFRIEND', -3);
define('PMSENDREGDAYS', -4);
define('CHATPMTHREADLIMIT_ERROR', -5);
define('CHATPMMEMBERLIMIT_ERROR', -7);
class pmcontrol extends base {
function __construct() {
$this->pmcontrol();
}
function pmcontrol() {
parent::__construct();
$this->load('user');
$this->load('pm');
}
function oncheck_newpm() {
$this->init_input();
$uid = intval($this->input('uid'));
$more = intval($this->input('more'));
if(!$_ENV['pm']->isnewpm($uid) && !$more) {
return 0;
}
$newprvpm = $_ENV['pm']->getpmnum($uid, 1, 1);
$newchatpm = $_ENV['pm']->getpmnum($uid, 2, 1);
$newpm = $newprvpm + $newchatpm;
if($more == 0) {
return $newpm;
} elseif($more == 1) {
return array('newpm' => $newpm, 'newprivatepm' => $newprvpm);
} elseif($more == 2 || $more == 3) {
if($more == 2) {
return array('newpm' => $newpm, 'newprivatepm' => $newprvpm, 'newchatpm' => $newchatpm);
} else {
$lastpm = $_ENV['pm']->lastpm($uid);
require_once UC_ROOT.'lib/uccode.class.php';
$this->uccode = new uccode();
$lastpm['lastsummary'] = $this->uccode->complie($lastpm['lastsummary']);
return array('newpm' => $newpm, 'newprivatepm' => $newprvpm, 'newchatpm' => $newchatpm, 'lastdate' => $lastpm['lastdateline'], 'lastmsgfromid' => $lastpm['lastauthorid'], 'lastmsgfrom' => $lastpm['lastauthorusername'], 'lastmsg' => $lastpm['lastsummary']);
}
} elseif($more == 4) {
return array('newpm' => $newpm, 'newprivatepm' => $newprvpm, 'newchatpm' => $newchatpm);
} else {
return 0;
}
}
function onsendpm() {
$this->init_input();
$fromuid = $this->input('fromuid');
$msgto = $this->input('msgto');
$subject = $this->input('subject');
$message = $this->input('message');
$replypmid = $this->input('replypmid');
$isusername = $this->input('isusername');
$type = $this->input('type');
if(!$fromuid) {
return 0;
}
$user = $_ENV['user']->get_user_by_uid($fromuid);
$user = daddslashes($user, 1);
if(!$user) {
return 0;
}
$this->user['uid'] = $user['uid'];
$this->user['username'] = $user['username'];
if($replypmid) {
$isusername = 0;
$plid = $_ENV['pm']->getplidbypmid($replypmid);
$msgto = $_ENV['pm']->getuidbyplid($plid);
unset($msgto[$this->user['uid']]);
} else {
if(!empty($msgto)) {
$msgto = array_unique(explode(',', $msgto));
}
}
if($isusername) {
$msgto = $_ENV['user']->name2id($msgto);
}
$countmsgto = count($msgto);
if($this->settings['pmsendregdays']) {
if($user['regdate'] > $this->time - $this->settings['pmsendregdays'] * 86400) {
return PMSENDREGDAYS;
}
}
if($this->settings['chatpmmemberlimit']) {
if($type == 1 && ($countmsgto > ($this->settings['chatpmmemberlimit'] - 1))) {
return CHATPMMEMBERLIMIT_ERROR;
}
}
if($this->settings['pmfloodctrl']) {
if(!$_ENV['pm']->ispminterval($this->user['uid'], $this->settings['pmfloodctrl'])) {
return PMFLOODCTRL_ERROR;
}
}
if($this->settings['privatepmthreadlimit']) {
if(!$_ENV['pm']->isprivatepmthreadlimit($this->user['uid'], $this->settings['privatepmthreadlimit'])) {
return PRIVATEPMTHREADLIMIT_ERROR;
}
}
if($this->settings['chatpmthreadlimit']) {
if(!$_ENV['pm']->ischatpmthreadlimit($this->user['uid'], $this->settings['chatpmthreadlimit'])) {
return CHATPMTHREADLIMIT_ERROR;
}
}
$lastpmid = 0;
if($replypmid) {
$lastpmid = $_ENV['pm']->replypm($plid, $this->user['uid'], $this->user['username'], $message);
} else {
$lastpmid = $_ENV['pm']->sendpm($this->user['uid'], $this->user['username'], $msgto, $subject, $message, $type);
}
return $lastpmid;
}
function ondelete() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$pmids = $this->input('pmids');
if(empty($pmids)) {
return 0;
}
if(is_array($pmids)) {
$this->apps = $this->cache('apps');
if($this->apps[$this->app['appid']]['type'] == 'UCHOME') {
$id = $_ENV['pm']->deletepmbyplids($this->user['uid'], $this->input('pmids'));
} else {
$id = $_ENV['pm']->deletepmbypmids($this->user['uid'], $this->input('pmids'));
}
} else {
$id = $_ENV['pm']->deletepmbypmid($this->user['uid'], $this->input('pmids'));
}
return $id;
}
function ondeletechat() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$plids = $this->input('plids');
$type = intval($this->input('type'));
if($type == 1) {
return $_ENV['pm']->deletepmbyplids($this->user['uid'], $plids);
} else {
return $_ENV['pm']->quitchatpm($this->user['uid'], $plids);
}
}
function ondeleteuser() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$id = $_ENV['pm']->deletepmbyplids($this->user['uid'], $this->input('touids'), 1);
return $id;
}
function onreadstatus() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$_ENV['pm']->setpmstatus($this->user['uid'], $this->input('uids'), $this->input('plids'), $this->input('status'));
}
function onignore() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
return $_ENV['pm']->set_ignore($this->user['uid']);
}
function onls() {
$this->init_input();
$pagesize = $this->input('pagesize');
$filter = $this->input('filter');
$page = $this->input('page');
$msglen = $this->input('msglen');
$this->user['uid'] = intval($this->input('uid'));
$filter = $filter ? (in_array($filter, array('newpm', 'privatepm')) ? $filter : '') : '';
if($filter == 'newpm') {
$type = 0;
$new = 1;
/*
} elseif($filter == 'privatepm') {
$type = 1;
$new = 0;
} elseif($filter == 'chatpm') {
$type = 2;
$new = 0;
*/
} elseif($filter == 'privatepm') {
$type = 0;
$new = 0;
} else {
return array();
}
$pmnum = $_ENV['pm']->getpmnum($this->user['uid'], $type, $new);
$start = $this->page_get_start($page, $pagesize, $pmnum);
if($pagesize > 0) {
$pms = $_ENV['pm']->getpmlist($this->user['uid'], $filter, $start, $pagesize);
if(is_array($pms) && !empty($pms)) {
foreach($pms as $key => $pm) {
if($msglen) {
$pms[$key]['lastsummary'] = $_ENV['pm']->removecode($pms[$key]['lastsummary'], $msglen);
} else {
unset($pms[$key]['lastsummary']);
}
}
}
$result['data'] = $pms;
}
$result['count'] = $pmnum;
return $result;
}
function onview() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$pmid = $this->input('pmid');
$touid = $this->input('touid');
$daterange = $this->input('daterange');
$page = $this->input('page');
$pagesize = $this->input('pagesize');
$isplid = $this->input('isplid');
$type = $this->input('type');
$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(!$isplid) {
$plid = $_ENV['pm']->getplidbytouid($this->user['uid'], $touid);
} else {
$plid = $touid;
}
if($page) {
$pmnum = $_ENV['pm']->getpmnumbyplid($this->user['uid'], $plid);
$start = $this->page_get_start($page, $pagesize, $pmnum);
$ppp = $pagesize;
} else {
$pmnum = 0;
$start = 0;
$ppp = 0;
}
if($pmid) {
$pms = $_ENV['pm']->getpmbypmid($this->user['uid'], $pmid);
} else {
$pms = $_ENV['pm']->getpmbyplid($this->user['uid'], $plid, $starttime, $endtime, $start, $ppp, $type);
}
require_once UC_ROOT.'lib/uccode.class.php';
$this->uccode = new uccode();
if($pms) {
foreach($pms as $key => $pm) {
$pms[$key]['message'] = $this->uccode->complie($pms[$key]['message']);
}
}
return $pms;
}
function onviewnum() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$touid = $this->input('touid');
$isplid = $this->input('isplid');
if(!$isplid) {
$plid = $_ENV['pm']->getplidbytouid($this->user['uid'], $touid);
} else {
$plid = $touid;
}
$pmnum = $_ENV['pm']->getpmnumbyplid($this->user['uid'], $plid);
return $pmnum;
}
function onviewnode() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$type = $this->input('type');
$pmid = $this->input('pmid');
$type = 0;
$pms = $_ENV['pm']->getpmbypmid($this->user['uid'], $pmid);
require_once UC_ROOT.'lib/uccode.class.php';
$this->uccode = new uccode();
if($pms) {
foreach($pms as $key => $pm) {
$pms[$key]['message'] = $this->uccode->complie($pms[$key]['message']);
}
}
$pms = $pms[0];
return $pms;
}
function onchatpmmemberlist() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$plid = intval($this->input('plid'));
return $_ENV['pm']->chatpmmemberlist($this->user['uid'], $plid);
}
function onkickchatpm() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$plid = intval($this->input('plid'));
$touid = intval($this->input('touid'));
return $_ENV['pm']->kickchatpm($plid, $this->user['uid'], $touid);
}
function onappendchatpm() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$plid = intval($this->input('plid'));
$touid = intval($this->input('touid'));
return $_ENV['pm']->appendchatpm($plid, $this->user['uid'], $touid);
}
function onblackls_get() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
return $_ENV['pm']->get_blackls($this->user['uid']);
}
function onblackls_set() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$blackls = $this->input('blackls');
return $_ENV['pm']->set_blackls($this->user['uid'], $blackls);
}
function onblackls_add() {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$username = $this->input('username');
return $_ENV['pm']->update_blackls($this->user['uid'], $username, 1);
}
function onblackls_delete($arr) {
$this->init_input();
$this->user['uid'] = intval($this->input('uid'));
$username = $this->input('username');
return $_ENV['pm']->update_blackls($this->user['uid'], $username, 2);
}
}
?>