国内流行的内容管理系统(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.

183 lines
7.6KB

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