pusher.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2018/9/7
  6. * Time: 上午10:06
  7. */
  8. namespace room;
  9. use Exception;
  10. use Log;
  11. use member_info;
  12. class pusher
  13. {
  14. private static $stInstance;
  15. private function __construct()
  16. {
  17. }
  18. public static function instance()
  19. {
  20. if(self::$stInstance == null) {
  21. self::$stInstance = new pusher();
  22. }
  23. return self::$stInstance;
  24. }
  25. public function new_friend($receiver,$user)
  26. {
  27. try
  28. {
  29. $minfo = new member_info($user);
  30. $from = ['nickname' => $minfo->nickname(),'avatar' => $minfo->avatar(),'userid' => intval($user)];
  31. $content = ['type' => 'new_friend','from' => $from];
  32. factory_client::instance()->notice_users([$receiver],proto_type::push_command,$content,'');
  33. }
  34. catch (Exception $ex) {
  35. Log::record($ex->getMessage(),Log::ERR);
  36. }
  37. }
  38. //state = pending,accept,refuse
  39. public function apply_friend($applicant,$friend,$note)
  40. {
  41. try
  42. {
  43. $minfo = new member_info($applicant);
  44. $from = ['nickname' => $minfo->nickname(),'avatar' => $minfo->avatar(),'userid' => intval($applicant)];
  45. $content = ['type' => 'apply_friend','from' => $from,'note' => $note,'state' => 'pending'];
  46. $msg = "{$minfo->nickname()} 请求加您为好友.";
  47. factory_client::instance()->notice_users([$friend],proto_type::push_apply,$content,$msg);
  48. }
  49. catch (Exception $ex) {
  50. Log::record($ex->getMessage(),Log::ERR);
  51. }
  52. }
  53. //state = pending,accept,refuse
  54. public function apply_room($applicant,$roomid,$note)
  55. {
  56. try
  57. {
  58. $minfo = new member_info($applicant);
  59. $from = ['nickname' => $minfo->nickname(),'avatar' => $minfo->avatar(),'userid' => intval($applicant)];
  60. $content = ['type' => 'apply_room','from' => $from,'note' => $note,'room_id' => $roomid,'state' => 'pending'];
  61. $room = $this->get_room($roomid);
  62. if($room == false) return;
  63. $msg = "{$minfo->nickname()} 申请加入 {$room->name()}";
  64. factory_client::instance()->notice_users([$room->creator()],proto_type::push_apply,$content,$msg);
  65. }
  66. catch (Exception $ex) {
  67. Log::record($ex->getMessage(),Log::ERR);
  68. }
  69. }
  70. /**
  71. * 群公告设置推送
  72. */
  73. public function send_room_notice($user,$roomid,$note){
  74. try
  75. {
  76. $minfo = new member_info($user);
  77. $from = ['nickname' => $minfo->nickname(),'avatar' => $minfo->avatar(),'userid' => intval($user)];
  78. $content = ['type' => 'notice_room','from' => $from,'note' => $note,'room_id' => $roomid];
  79. $room = $this->get_room($roomid);
  80. if($room == false) return;
  81. $msg = "群公告@all $note";
  82. factory_client::instance()->notice_room($roomid,proto_type::msg_type_text,$content,$msg);
  83. }
  84. catch (Exception $ex) {
  85. Log::record($ex->getMessage(),Log::ERR);
  86. }
  87. }
  88. /**
  89. * 群认证通过/拒绝推送
  90. * @param $roomid
  91. * @param $type
  92. */
  93. public function certification_notice($roomid,$type)
  94. {
  95. try
  96. {
  97. $room = $this->get_room($roomid);
  98. if($room == false) return;
  99. if($type){
  100. $msg = "群: {$room->name()} 申请的认证被通过";
  101. }else{
  102. $msg = "群: {$room->name()} 申请的认证被拒绝";
  103. }
  104. $room_owner = $room->owner();
  105. $minfo = new member_info($room_owner);
  106. $to = ['nickname' => $minfo->nickname(),'avatar' => $minfo->avatar(),'userid' => $room_owner];
  107. $content = ['type' => 'certification_notice','to' => $to,'note' => $msg,'room_id' => $roomid];
  108. factory_client::instance()->notice_users([$room->creator()],proto_type::msg_type_nofity,$content,$msg);
  109. }
  110. catch (Exception $ex) {
  111. Log::record($ex->getMessage(),Log::ERR);
  112. }
  113. }
  114. private function get_room($roomid)
  115. {
  116. $roomid = intval($roomid);
  117. if($roomid <= 0) return false;
  118. $mod_room = Model('room');
  119. $item = $mod_room->getRoom($roomid);
  120. if(empty($item)) return false;
  121. return new room_info($item);
  122. }
  123. }