message_sender.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace memsg;
  3. require_once(BASE_ROOT_PATH . '/helper/push_sender.php');
  4. require_once(BASE_ROOT_PATH . '/helper/push_helper.php');
  5. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  6. use Log;
  7. use push_helper;
  8. use push_sender;
  9. class message_sender
  10. {
  11. private $code = '';
  12. private $member_id = 0;
  13. private $member_info = array();
  14. private $mobile = '';
  15. private $sms_param = '';
  16. public function set($key,$value){
  17. $this->$key = $value;
  18. }
  19. public function send($param = array())
  20. {
  21. $msg_tpl = rkcache('member_msg_tpl', true);
  22. if (!isset($msg_tpl[$this->code]) || $this->member_id <= 0) {
  23. return false;
  24. }
  25. $tpl_info = $msg_tpl[$this->code];
  26. $setting_info = Model('member_msg_setting')->getMemberMsgSettingInfo(array('mmt_code' => $this->code,
  27. 'member_id' => $this->member_id),
  28. 'is_receive');
  29. if (empty($setting_info) || $setting_info['is_receive'])
  30. {
  31. // 发送站内信
  32. if ($tpl_info['mmt_message_switch']) {
  33. $message = ncReplaceText($tpl_info['mmt_message_content'],$param);
  34. $this->sendMessage($message);
  35. }
  36. $push_success = false;
  37. if ($tpl_info['mmt_push_switch']) {
  38. $message = ncReplaceText($tpl_info['mmt_push_content'],$param);
  39. $info = push_helper::format_msg($this->member_id,$message);
  40. $sender = new push_sender();
  41. $push_success = $sender->send($info);
  42. }
  43. // 发送短消息
  44. if ($push_success == false && $tpl_info['mmt_short_switch'])
  45. {
  46. $sms_code = $tpl_info['mmt_short_code'];
  47. $this->getMemberInfo();
  48. if (!empty($this->mobile)) {
  49. $this->member_info['member_mobile'] = $this->mobile;
  50. }
  51. $this->sendShort($this->member_info['member_mobile'], $sms_code, empty($this->sms_param) ? null : $this->sms_param);
  52. }
  53. }
  54. }
  55. private function getMemberInfo() {
  56. if (empty($this->member_info)) {
  57. $this->member_info = Model('member')->getMemberInfoByID($this->member_id);
  58. }
  59. }
  60. private function sendMessage($message)
  61. {
  62. $model_message = Model('message');
  63. $insert_arr = array();
  64. $insert_arr['from_member_id'] = 0;
  65. $insert_arr['member_id'] = $this->member_id;
  66. $insert_arr['msg_content'] = $message;
  67. $insert_arr['message_type'] = 1;
  68. $model_message->saveMessage($insert_arr);
  69. }
  70. private function sendShort($number,$smscode,$param) {
  71. $sms = new Sms();
  72. $ret = $sms->send_oper($number,$smscode,$param);
  73. $ret = json_encode($ret);
  74. Log::record("sendShort {$ret}",Log::DEBUG);
  75. }
  76. }