<?php

/*

* $Author ：PHPYUN开发团队

*

* 官网: http://www.phpyun.com

*

* 版权所有 2009-2019 宿迁鑫潮信息技术有限公司，并保留所有权利。

*

* 软件声明：未经授权前提下，不得用于商业运营、二次开发以及任何形式的再次发布。

 */

/*

	[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);

 	}

}



?>