国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

217 lines
7.7KB

  1. <?php
  2. /**
  3. * 会员短消息
  4. *
  5. * @version $Id: pm.php 1 8:38 2010年7月9日Z tianya $
  6. * @package DedeCMS.Member
  7. * @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license http://help.dedecms.com/usersguide/license.html
  10. * @link http://www.dedecms.com
  11. */
  12. require_once(dirname(__FILE__)."/config.php");
  13. CheckRank(0,0);
  14. $menutype = 'mydede';
  15. $menutype_son = 'pm';
  16. $id = isset($id)? intval($id) : 0;
  17. if($cfg_mb_lit=='Y')
  18. {
  19. ShowMsg('由于系统开启了精简版会员空间,你不能向其它会员发短信息,不过你可以向他留言!','-1');
  20. exit();
  21. }
  22. if(!isset($dopost))
  23. {
  24. $dopost = '';
  25. }
  26. //检查用户是否被禁言
  27. CheckNotAllow();
  28. $state=(empty($state))? 0 : intval($state);
  29. if($dopost=='read')
  30. {
  31. $sql = "SELECT * FROM `#@__member_friends` WHERE mid='{$cfg_ml->M_ID}' AND ftype!='-1' ORDER BY addtime DESC LIMIT 20";
  32. $friends = array();
  33. $dsql->SetQuery($sql);
  34. $dsql->Execute();
  35. while ($row = $dsql->GetArray()) {
  36. $friends[] = $row;
  37. }
  38. $id = intval($id);
  39. $row = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");
  40. if(!is_array($row))
  41. {
  42. $result = array(
  43. "code" => -1,
  44. "data" => null,
  45. "msg" => "对不起,你指定的消息不存在或你没权限查看",
  46. );
  47. echo json_encode($result);
  48. exit();
  49. }
  50. $dsql->ExecuteNoneQuery("UPDATE `#@__member_pms` SET hasview=1 WHERE id='$id' AND folder='inbox' AND toid='{$cfg_ml->M_ID}'");
  51. $dsql->ExecuteNoneQuery("UPDATE `#@__member_pms` SET hasview=1 WHERE folder='outbox' AND toid='{$cfg_ml->M_ID}'");
  52. $result = array(
  53. "code" => 200,
  54. "data" => array(
  55. "subject" => $row['subject'],
  56. "message" => $row['message'],
  57. "sendtime" => MyDate("Y-m-d H:i", $row['sendtime']),
  58. ),
  59. "msg" => "",
  60. );
  61. echo json_encode($result);
  62. exit();
  63. }
  64. /*-----------------------
  65. function __savesend(){ }
  66. ----------------------*/
  67. else if($dopost=='savesend')
  68. {
  69. $svali = GetCkVdValue();
  70. if(preg_match("/5/",$safe_gdopen)){
  71. if(strtolower($vdcode)!=$svali || $svali=='')
  72. {
  73. ResetVdValue();
  74. ShowMsg('验证码错误!', '-1');
  75. exit();
  76. }
  77. }
  78. $faqkey = isset($faqkey) && is_numeric($faqkey) ? $faqkey : 0;
  79. if($safe_faq_msg == 1)
  80. {
  81. if($safefaqs[$faqkey]['answer'] != $safeanswer || $safeanswer=='')
  82. {
  83. ShowMsg('验证问题答案错误', '-1');
  84. exit();
  85. }
  86. }
  87. if($subject=='')
  88. {
  89. ShowMsg("请填写信息标题!","-1");
  90. exit();
  91. }
  92. $msg = CheckUserID($msgtoid,"用户名",false);
  93. if($msg!='ok')
  94. {
  95. ShowMsg($msg,"-1");
  96. exit();
  97. }
  98. $row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE userid LIKE '$msgtoid' ");
  99. if(!is_array($row))
  100. {
  101. ShowMsg("你指定的用户不存在,不能发送信息!","-1");
  102. exit();
  103. }
  104. $subject = cn_substrR(HtmlReplace($subject,1),60);
  105. $message = cn_substrR(HtmlReplace($message,0),1024);
  106. $sendtime = $writetime = time();
  107. //发给收件人(收件人可管理)
  108. $inquery1 = "INSERT INTO `#@__member_pms` (`floginid`,`fromid`,`toid`,`tologinid`,`folder`,`subject`,`sendtime`,`writetime`,`hasview`,`isadmin`,`message`)
  109. VALUES ('{$cfg_ml->M_LoginID}','{$cfg_ml->M_ID}','{$row['mid']}','{$row['userid']}','inbox','$subject','$sendtime','$writetime','0','0','$message'); ";
  110. //保留到自己的发件箱(自己可管理)
  111. $inquery2 = "INSERT INTO `#@__member_pms` (`floginid`,`fromid`,`toid`,`tologinid`,`folder`,`subject`,`sendtime`,`writetime`,`hasview`,`isadmin`,`message`)
  112. VALUES ('{$cfg_ml->M_LoginID}','{$cfg_ml->M_ID}','{$row['mid']}','{$row['userid']}','outbox','$subject','$sendtime','$writetime','0','0','$message'); ";
  113. $dsql->ExecuteNoneQuery($inquery1);
  114. $dsql->ExecuteNoneQuery($inquery2);
  115. ShowMsg("成功发送一条信息!","pm.php?dopost=outbox");
  116. exit();
  117. }
  118. /*-----------------------
  119. function __del(){ }
  120. ----------------------*/
  121. else if($dopost=='del')
  122. {
  123. $ids = preg_replace("#[^0-9,]#", "", $ids);
  124. if($folder=='inbox')
  125. {
  126. $boxsql="SELECT * FROM `#@__member_pms` WHERE id IN($ids) AND folder LIKE 'inbox' AND toid='{$cfg_ml->M_ID}'";
  127. $dsql->SetQuery($boxsql);
  128. $dsql->Execute();
  129. $query='';
  130. while($row = $dsql->GetArray())
  131. {
  132. if($row && $row['isadmin']==1)
  133. {
  134. $query = "Update `#@__member_pms` set writetime='0' WHERE id='{$row['id']}' AND folder='inbox' AND toid='{$cfg_ml->M_ID}' AND isadmin='1';";
  135. $dsql->ExecuteNoneQuery($query);
  136. }
  137. else
  138. {
  139. $query = "DELETE FROM `#@__member_pms` WHERE id in($ids) AND toid='{$cfg_ml->M_ID}' AND folder LIKE 'inbox'";
  140. }
  141. }
  142. }
  143. else if($folder=='outbox')
  144. {
  145. $query = "Delete From `#@__member_pms` WHERE id in($ids) AND fromid='{$cfg_ml->M_ID}' AND folder LIKE 'outbox' ";
  146. }
  147. else
  148. {
  149. $query = "Delete From `#@__member_pms` WHERE id in($ids) AND fromid='{$cfg_ml->M_ID}' Or toid='{$cfg_ml->M_ID}' AND folder LIKE 'outbox' Or (folder LIKE 'inbox' AND hasview='0')";
  150. }
  151. $dsql->ExecuteNoneQuery($query);
  152. ShowMsg("成功删除指定的消息!","pm.php?folder=".$folder);
  153. exit();
  154. }
  155. /*-----------------------
  156. function __man(){ }
  157. ----------------------*/
  158. else
  159. {
  160. if(!isset($folder))
  161. {
  162. $folder = 'inbox';
  163. }
  164. require_once(DEDEINC."/datalistcp.class.php");
  165. $wsql = '';
  166. if($folder=='outbox')
  167. {
  168. $wsql = " `fromid`='{$cfg_ml->M_ID}' AND folder LIKE 'outbox' ";
  169. $tname = "发件箱";
  170. }
  171. elseif($folder=='inbox')
  172. {
  173. $query = "SELECT * FROM `#@__member_pms` WHERE folder LIKE 'outbox' AND isadmin='1'";
  174. $dsql->SetQuery($query);
  175. $dsql->Execute();
  176. while($row = $dsql->GetArray())
  177. {
  178. $row2 = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE fromid = '$row[id]' AND toid='{$cfg_ml->M_ID}'");
  179. if(!is_array($row2))
  180. {
  181. $row3= "INSERT INTO
  182. `#@__member_pms` (`floginid`,`fromid`,`toid`,`tologinid`,`folder`,`subject`,`sendtime`,`writetime`,`hasview`,`isadmin`,`message`)
  183. VALUES ('admin','{$row['id']}','{$cfg_ml->M_ID}','{$cfg_ml->M_LoginID}','inbox','{$row['subject']}','{$row['sendtime']}','{$row['writetime']}','{$row['hasview']}','{$row['isadmin']}','{$row['message']}')";
  184. $dsql->ExecuteNoneQuery($row3);
  185. }
  186. }
  187. if($state===1){
  188. $wsql= " toid='{$cfg_ml->M_ID}' AND folder='inbox' AND writetime!='' and hasview=1";
  189. $tname = "收件箱";
  190. } else if ($state===-1)
  191. {
  192. $wsql = "toid='{$cfg_ml->M_ID}' AND folder='inbox' AND writetime!='' and hasview=0";
  193. $tname = "收件箱";
  194. } else {
  195. $wsql = " toid='{$cfg_ml->M_ID}' AND folder='inbox' AND writetime!=''";
  196. $tname = "收件箱";
  197. }
  198. }
  199. else
  200. {
  201. $wsql = " `fromid` ='{$cfg_ml->M_ID}' AND folder LIKE 'outbox'";
  202. $tname = "已发信息";
  203. }
  204. $query = "SELECT * FROM `#@__member_pms` WHERE $wsql ORDER BY sendtime DESC";
  205. $dlist = new DataListCP();
  206. $dlist->pageSize = 20;
  207. $dlist->SetParameter("dopost",$dopost);
  208. $dlist->SetTemplate(DEDEMEMBER.'/templets/pm-main.htm');
  209. $dlist->SetSource($query);
  210. $dlist->Display();
  211. }