index.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('foreground','member');//加载foreground 应用类. 自动判断是否登陆.
  4. pc_base::load_sys_class('format', '', 0);
  5. pc_base::load_sys_class('form', '', 0);
  6. class index extends foreground {
  7. function __construct() {
  8. parent::__construct();
  9. $this->message_db = pc_base::load_model('message_model');
  10. $this->message_group_db = pc_base::load_model('message_group_model');
  11. $this->message_data_db = pc_base::load_model('message_data_model');
  12. $this->_username = param::get_cookie('_username');
  13. $this->_userid = param::get_cookie('_userid');
  14. $this->_groupid = get_memberinfo($this->_userid,'groupid');
  15. pc_base::load_app_func('global');
  16. //定义站点ID常量,选择模版使用
  17. $siteid = isset($_GET['siteid']) ? intval($_GET['siteid']) : get_siteid();
  18. define("SITEID",$siteid);
  19. }
  20. public function init() {
  21. $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
  22. $where = array('send_to_id'=>$this->_username,'replyid'=>'0');
  23. $infos = $this->message_db->listinfo($where,$order = 'messageid DESC',$page, 10);
  24. $infos = new_html_special_chars($infos);
  25. $pages = $this->message_db->pages;
  26. include template('message', 'inbox');
  27. }
  28. /**
  29. * 发送消息
  30. */
  31. public function send() {
  32. //判断当前会员,是否可发,短消息.
  33. $this->message_db->messagecheck($this->_userid);
  34. if(isset($_POST['dosubmit'])) {
  35. $username = $this->_username;
  36. $tousername = safe_replace($_POST['info']['send_to_id']);
  37. $r = $this->db->get_one(array('username'=>$tousername));
  38. if(!$r) showmessage(L('user_not_exist','','member'));
  39. if($tousername==$username){
  40. showmessage(L('not_myself','','message'));
  41. }
  42. $subject = new_html_special_chars($_POST['info']['subject']);
  43. $content = new_html_special_chars($_POST['info']['content']);
  44. $this->message_db->add_message($tousername,$username,$subject,$content,true);
  45. showmessage(L('operation_success'),HTTP_REFERER);
  46. } else {
  47. $show_validator = $show_scroll = $show_header = true;
  48. include template('message', 'send');
  49. }
  50. }
  51. /*
  52. *判断收件人是否存在
  53. */
  54. public function public_name() {
  55. $username = isset($_GET['username']) && trim($_GET['username']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['username'])) : trim($_GET['username'])) : exit('0');
  56. $member_interface = pc_base::load_app_class('member_interface', 'member');
  57. if ($username) {
  58. $username = safe_replace($username);
  59. //判断收件人不能为自己
  60. if($username == $this->_username){
  61. exit('0');
  62. }
  63. $data = $member_interface->get_member_info($username, 2);
  64. if ($data!='-1') {
  65. exit('1');
  66. } else {
  67. exit('0');
  68. }
  69. } else {
  70. exit('0');
  71. }
  72. }
  73. /**
  74. * 发件箱
  75. */
  76. public function outbox() {
  77. $where = array('send_from_id'=>$this->_username,'del_type'=>'0');
  78. $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
  79. $infos = $this->message_db->listinfo($where,$order = 'messageid DESC',$page, $pages = '8');
  80. $infos = new_html_special_chars($infos);
  81. $pages = $this->message_db->pages;
  82. include template('message', 'outbox');
  83. }
  84. /**
  85. * 收件箱
  86. */
  87. public function inbox() {
  88. $where = array('send_to_id'=>$this->_username,'folder'=>'inbox');
  89. $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
  90. $infos = $this->message_db->listinfo($where,$order = 'messageid DESC',$page, $pages = '8');
  91. $infos = new_html_special_chars($infos);
  92. if (is_array($infos) && !empty($infos)) {
  93. foreach ($infos as $infoid=>$info){
  94. $reply_num = $this->message_db->count(array("replyid"=>$info['messageid']));
  95. $infos[$infoid]['reply_num'] = $reply_num;
  96. }
  97. }
  98. $pages = $this->message_db->pages;
  99. include template('message', 'inbox');
  100. }
  101. /**
  102. * 群发邮件
  103. */
  104. public function group() {
  105. //查询自己有权限看的消息
  106. $where = array('typeid'=>1,'groupid'=>$this->_groupid,'status'=>1);
  107. $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
  108. $infos = $this->message_group_db->listinfo($where,$order = 'id DESC',$page, $pages = '8');
  109. $infos = new_html_special_chars($infos);
  110. $status = array();
  111. if (is_array($infos) && !empty($infos)) {
  112. foreach ($infos as $info){
  113. $d = $this->message_data_db->select(array('userid'=>$this->_userid,'group_message_id'=>$info['id']));
  114. if(!$d){
  115. $status[$info['id']] = 0;//未读 红色
  116. }else {
  117. $status[$info['id']] = 1;
  118. }
  119. }
  120. }
  121. $pages = $this->message_group_db->pages;
  122. include template('message', 'group');
  123. }
  124. /**
  125. * 删除收件箱-短消息
  126. * @param intval $sid 短消息ID,递归删除(修改状态为outbox)
  127. */
  128. public function delete() {
  129. if((!isset($_GET['messageid']) || empty($_GET['messageid'])) && (!isset($_POST['messageid']) || empty($_POST['messageid']))) {
  130. showmessage(L('illegal_parameters'), HTTP_REFERER);
  131. } else {
  132. if(is_array($_POST['messageid'])){
  133. foreach($_POST['messageid'] as $messageid_arr) {
  134. $messageid_arr = intval($messageid_arr);
  135. $this->message_db->update(array('folder'=>'outbox'),array('messageid'=>$messageid_arr,'send_to_id'=>$this->_username));
  136. }
  137. showmessage(L('operation_success'), HTTP_REFERER);
  138. }
  139. }
  140. }
  141. /**
  142. * 删除发件箱 - 短消息
  143. * @param intval $sid 短消息ID,递归删除( 修改状态为del_type =1 )
  144. */
  145. public function del_type() {
  146. if((!isset($_POST['messageid']) || empty($_POST['messageid']))) {
  147. showmessage(L('illegal_parameters'), HTTP_REFERER);
  148. } else {
  149. if(is_array($_POST['messageid'])){
  150. foreach($_POST['messageid'] as $messageid_arr) {
  151. $messageid_arr = intval($messageid_arr);
  152. $this->message_db->update(array('del_type'=>'1'),array('messageid'=>$messageid_arr,'send_from_id'=>$this->_username));
  153. }
  154. showmessage(L('operation_success'), HTTP_REFERER);
  155. }
  156. }
  157. }
  158. /**
  159. * 查看短消息 - 对当前用户是否有权限查看
  160. */
  161. public function check_user($messageid,$where){
  162. $username = $this->_username;
  163. $messageid = intval($messageid);
  164. if($where=="to"){
  165. $result = $this->message_db->get_one(array("send_to_id"=>$username,"messageid"=>$messageid));
  166. }else{
  167. $result = $this->message_db->get_one(array("send_from_id"=>$username,"messageid"=>$messageid));
  168. }
  169. if(!$result){//不是当前用户的消息,不能查看
  170. showmessage('请勿非法访问!', HTTP_REFERER);echo '0';
  171. }
  172. }
  173. /**
  174. * 查看短消息
  175. */
  176. public function read() {
  177. if((!isset($_GET['messageid']) || empty($_GET['messageid'])) && (!isset($_POST['messageid']) || empty($_POST['messageid']))) return false;
  178. $messageid = $_GET['messageid'] ? $_GET['messageid'] : $_POST['messageid'];
  179. $messageid = intval($messageid);
  180. //判断是否属于当前用户
  181. $check_user = $this->check_user($messageid,'to');
  182. //查看过修改状态 为 0
  183. $this->message_db->update(array('status'=>'0'),array('messageid'=>$messageid));
  184. //查询消息详情
  185. $infos = $this->message_db->get_one(array('messageid'=>$messageid));
  186. if($infos['send_from_id']!='SYSTEM') $infos = new_html_special_chars($infos);
  187. //过滤一下
  188. $info['send_from_id'] = safe_replace($infos['send_from_id']);
  189. $info['send_to_id'] = safe_replace($infos['send_to_id']);
  190. //查询回复消息
  191. $where = array('replyid'=>$infos['messageid']);
  192. $reply_infos = $this->message_db->listinfo($where,$order = 'messageid ASC',$page, $pages = '10');
  193. $show_validator = $show_scroll = $show_header = true;
  194. include template('message', 'read');
  195. }
  196. /**
  197. * 查看自己发的短消息
  198. */
  199. public function read_only() {
  200. $messageid = $_GET['messageid'] ? $_GET['messageid'] : $_POST['messageid'];
  201. $messageid = intval($messageid);
  202. if(!$messageid || empty($messageid)){
  203. showmessage('请勿非法访问!', HTTP_REFERER);
  204. }
  205. //判断是否属于当前用户
  206. $check_user = $this->check_user($messageid,'from');
  207. //查询消息详情
  208. $infos = $this->message_db->get_one(array('messageid'=>$messageid));
  209. $infos = new_html_special_chars($infos);
  210. //查询回复消息
  211. $where = array('replyid'=>$infos['messageid']);
  212. $reply_infos = $this->message_db->listinfo($where,$order = 'messageid ASC',$page, $pages = '10');
  213. $show_validator = $show_scroll = $show_header = true;
  214. include template('message', 'read_only');
  215. }
  216. /**
  217. * 查看系统短消息
  218. */
  219. public function read_group(){
  220. if((!isset($_GET['group_id']) || empty($_GET['group_id'])) && (!isset($_POST['group_id']) || empty($_POST['group_id']))) return false;
  221. //查询消息详情
  222. $infos = $this->message_group_db->get_one(array('id'=>$_GET['group_id']));
  223. $infos = new_html_special_chars($infos);
  224. if(!is_array($infos))showmessage(L('message_not_exist'),'blank');
  225. //检查查看表是否有记录,无则向message_data 插入浏览记录
  226. $check = $this->message_data_db->select(array('userid'=>$this->_userid,'group_message_id'=>$_GET['group_id']));
  227. if(!$check){
  228. $this->message_data_db->insert(array('userid'=>$this->_userid,'group_message_id'=>$_GET['group_id']));
  229. }
  230. include template('message', 'read_group');
  231. }
  232. /**
  233. * 回复短消息
  234. */
  235. public function reply() {
  236. if(isset($_POST['dosubmit'])) {
  237. $messageid = intval($_POST['info']['replyid']);
  238. //判断当前会员,是否可发,短消息.
  239. $this->message_db->messagecheck($this->_userid);
  240. //检查此消息是否有权限回复
  241. $this->check_user($messageid,'to');
  242. $info = array();
  243. $info['send_from_id'] = $this->_username;
  244. $info['message_time'] = SYS_TIME;
  245. $info['status'] = '1';
  246. $info['folder'] = 'inbox';
  247. $info['content'] = safe_replace($_POST['info']['content']);
  248. $info['subject'] = safe_replace($_POST['info']['subject']);
  249. $info['replyid'] = intval($_POST['info']['replyid']);
  250. //回复人ID进行安全处理
  251. $send_to_id = safe_replace($_POST['info']['send_to_id']);
  252. if(empty($send_to_id)) {
  253. showmessage(L('user_noempty'),HTTP_REFERER);
  254. } else {
  255. $info['send_to_id'] = $send_to_id;
  256. }
  257. $messageid = $this->message_db->insert($info,true);
  258. if(!$messageid) return FALSE;
  259. showmessage(L('operation_success'),HTTP_REFERER);
  260. } else {
  261. $show_validator = $show_scroll = $show_header = true;
  262. include template('message', 'send');
  263. }
  264. }
  265. }
  266. ?>