mod_room = Model('room'); $this->room_id = $room_id; $this->cur_user = intval($user); $this->relay_id = intval($relay_id); $room = $this->mod_room->getRoom($room_id); if(empty($room)) throw new Exception("房间不存在"); $this->room_info = new room_info($room); if(empty($this->room_info)) throw new Exception("聊天参数有误"); $this->participants = factory::participants($this->room_id); $this->is_room_member = isset($this->participants[$this->cur_user]); } public function show() { $this->show_cover(); echo "
"; $this->show_header(); if($this->is_room_member) { $this->show_activity(); } if($this->is_room_member) { $this->show_members(); } else { $this->show_inviter(); } if(!$this->is_room_member) { $this->show_apply_room(); } echo "
"; if($this->is_room_member) { $this->show_settings_room(); } if($this->is_room_member && session_helper::isapp()) { $this->show_settings_local(); } if($this->is_room_member) { $this->show_leave_room(); } $this->show_qrcode(); if($this->is_room_member && !session_helper::isapp()) { $this->show_download(); } } public function show_open() { $this->show_cover(); echo "
"; $this->show_header(); $this->show_inviter(); $this->enter_room(); $this->show_qrcode(); echo "
"; } public function show_allmembers() { echo "
"; $this->show_members(-1); echo "
"; echo "
"; if($this->is_room_member && !session_helper::isapp()) { $this->show_download(); } } public function show_cover() { $html = ""; $url = RESOURCE_SITE_URL. "/mobile/talk/images/cover.png"; $html.="
\"cover\"
"; echo $html; } private function show_header() { echo "
"; $this->show_group_header(); $this->show_qrcode_btn(); echo "
"; } public function get_room_info(){ return $this->room_info; } public function show_group_header() { if($this->room_info->has_name()){ $name = $this->room_info->name(); }else{ $name = "未命名"; } $avartar = $this->room_info->avatar(); $desc = $this->room_info->room_desc(); $html ="
\"group_avatar\"

{$name}"; if($this->room_info->level() > 0) { $html.= "

{$desc}

"; }else{ $html.= "

未认证

"; } echo $html; } public function show_qrcode_btn() { echo "
"; } public function show_group_notice() { $html = ""; $notice = $this->room_info->notice(); if(empty($notice)) { $html.= "

【公告】

"; } else { $html.= "

【公告】{$notice}

"; } echo $html; } public function show_activity() { $html = "
"; $isManager = $this->isManager($this->cur_user) ? 1 : 0; $notice = empty($this->room_info->notice()) ? 0 : 1; if(session_helper::isapp()) { $share_bonus_schema = schema_helper::openurl("共享基金",BASE_SITE_URL."/mobile/index.php?act=member_talk&op=share_bonus&room_id={$this->room_id}"); $group_notice_schema = schema_helper::openurl("群公告" ,BASE_SITE_URL."/mobile/index.php?act=member_talk&op=message_board&type=3&isManager={$isManager}&talk_id={$this->room_id}"); $group_goods_schema = schema_helper::openurl("群商品" ,BASE_SITE_URL."/mobile/index.php?act=member_talk&op=room_goods&talk_id={$this->room_id}"); $group_sport_schema = schema_helper::openurl("群运动" ,BASE_SITE_URL."/mobile/index.php?act=member_talk&op=steps_home&talk_id={$this->room_id}"); } else { $share_bonus_schema = BASE_SITE_URL."/mobile/index.php?act=member_talk&op=share_bonus&room_id={$this->room_id}"; $group_notice_schema = BASE_SITE_URL."/mobile/index.php?act=member_talk&op=message_board&type=3&isManager={$isManager}&talk_id={$this->room_id}"; $group_goods_schema = BASE_SITE_URL."/mobile/index.php?act=member_talk&op=room_goods&talk_id={$this->room_id}"; $group_sport_schema = BASE_SITE_URL."/mobile/index.php?act=member_talk&op=steps_home&talk_id={$this->room_id}"; } $html .= "
\"\"
\"\"
\"\"
\"\"
"; $html .= "
"; echo $html; } private function isManager($user) { return intval($user) === $this->room_info->owner(); } private function isFromQr(){ return ($this->relay_id > 0 && isset($this->participants[$this->relay_id])); } public function show_members($limit = 25) { $html = ''; $uids = []; $owner = $this->room_info->owner(); $uids[] = $owner; $room_users = count($this->participants); if($limit < 0) { $limit = $room_users; } else { if(session_helper::isapp()) { if($this->cur_user == $owner) { $limit = $limit - 2; } else { $limit = $limit - 1; } } } $show_cnt = 1; foreach ($this->participants as $key => $val) { if($key == $owner) continue; $uids[] = $key; if(++$show_cnt >= $limit) break; } $i = 1; foreach ($uids as $uid) { $member = $this->participants[$uid]; if(session_helper::isapp()) { $member_schema = schema_helper::openurl("来自聊天",BASE_SITE_URL."/mobile/index.php?act=user_index&op=detail&member_id={$member['userid']}&room_id={$this->room_id}"); } else { $member_schema = BASE_SITE_URL."/mobile/index.php?act=user_index&op=detail&member_id={$member['userid']}&room_id={$this->room_id}"; } if ($i <= $limit) { $div_head = "
"; } else { $div_head = "
"; } $i++; if($this->isManager($uid)) { $head = "\"\"

{$member['nickname']}

管理员
"; $html = $div_head . $head . $html; } else { $html .= $div_head; $html .= " \"\"

{$member['nickname']}

"; } } if ($this->is_room_member) { $html .= "
\"\"
"; } if ($this->isManager($this->cur_user)) { $html .= "
\"\"
"; } $html = "
".$html."
"; if($room_users > $show_cnt) { if(session_helper::isapp()) { $all_members_schema = schema_helper::openurl("群成员" ,BASE_SITE_URL.'/mobile/index.php?act=member_talk&op=room_members&room_id='.$this->room_id); } else { $all_members_schema = BASE_SITE_URL.'/mobile/index.php?act=member_talk&op=room_members&room_id='.$this->room_id; } $html .= "
查看全部群成员
"; } echo $html; } public function show_settings_room() { $html = ""; $avartar = $this->room_info->avatar(); $name = $this->room_info->has_name() ? $this->room_info->name() : "未命名"; $click = false; $level = "已认证"; if($this->room_info->level() == 0) { $certs = $this->mod_room->findCert(["room_id"=>$this->room_id]); if(!empty($certs)) { if($certs['cstatus'] == 0) { $level = "待审核"; }elseif($certs['cstatus'] == 2 || $certs['cstatus'] == 3){ $click = true; $level = "待修改"; } }else{ $click = true; $level = "未认证"; } } $html.= "
"; $html.= $this->room_name_btn($click,$name); $html.= $this->room_avatar_btn($avartar); $html.= $this->room_nickname_btn(); $html.= "
"; if ($this->isManager($this->cur_user)) { $html .= "
"; $html.= $this->room_cert_btn($click,$level); $html.="
"; } echo $html; } private function room_name_btn($click,$name) { if($click){ $html = "

群名称

{$name}
"; } else { $html = "

群名称

{$name}
"; } return $html; } private function room_avatar_btn($avartar){ if($this->room_info->level() > 0 && !$this->isManager($this->cur_user)) { $html = "

群头像

"; }else{ $html = "

群头像

"; } return $html; } private function room_cert_btn($click,$level) { if($click){ $html = "

群认证

{$level}
"; }else{ $html = "

群认证

{$level}
"; } return $html; } private function room_notice_btn($notice){ $html = "

群公告

{$notice}
"; return $html; } private function room_desc_btn($desc){ $html = "

群介绍

{$desc}
"; return $html; } private function room_apply_btn($apply,$cnt) { if ($cnt > 0) { $html ="

入群申请

{$apply}
"; } else { $html ="

入群申请

{$apply}
"; } return $html; } private function room_nickname_btn() { $html = "

我在本群的昵称

{$this->participants[$this->cur_user]['nickname']}
"; return $html; } public function change_manager_btn() { $html = ""; if ($this->isManager($this->cur_user)) { $html .= "

转让管理员

"; } echo $html; } public function show_settings_local() { $html ="
"; if(session_helper::isapp()) { $html.= $this->room_share_btn(); } if ($this->isManager($this->cur_user)) { $pwd = $this->room_info->passwd(); if($pwd) { $html .= "

群密码

"; } else { $html .= "

群密码

"; } } $html .="

置顶聊天

消息免打扰

"; $html.="

清空聊天记录

"; echo $html; } private function room_share_btn(){ $html = "

邀请入群(微信、QQ)

"; return $html; } public function show_leave_room() { $html = ""; if($this->isManager($this->cur_user)) { //todo 解散群按钮 } else { $html .= "
删除并退出
"; } echo $html; } public function show_apply_room() { $html = "
"; $pwd = $this->room_info->passwd(); $from_qr = $this->isFromQr(); if($pwd && !$from_qr) { $html .= "
密码入群
申请加群
"; } else { $html .= "
立即入群
"; } echo $html; } private function enter_room() { $html = "
"; if (!$this->is_room_member) { $pwd = $this->room_info->passwd(); $from_qr = $this->isFromQr(); if($pwd && !$from_qr){ $html .= "
密码入群
申请加群
"; } else { $html .= "
立即入群
"; } } else { $html .= "
进入聊天
"; } echo $html; } public function show_qrcode() { $name = $this->room_info->name(); if(strlen($name) > 18) $name =mb_substr($name,0,6,'utf8')."..."; $avatar = $this->room_info->avatar(); $desc = $this->room_info->room_desc(); $url = author_url::room_detail_url('room',$this->room_id,$this->cur_user); $html = "
\"\"

$name

$desc

扫一扫上面的二维码图案。加入群聊

"; echo $html; } public function show_download() { echo "

熊猫美妆

下载APP即可参与群聊

打开APP
"; } private function show_inviter() { $html = ''; $inviter = $this->participants[$this->relay_id]; if (!empty($inviter)) { $member = $inviter; if ($this->relay_id == $this->cur_user) { $html .= "
\"\"

{$member['nickname']}

邀请者
"; } else { $relateion = new mem_relation($this->cur_user); $isfriend = $relateion->is_friends($this->relay_id); if ($isfriend) { $html .= "
\"\"

{$member['nickname']}

邀请者
发消息
"; } else { $html .= "
\"\"

{$member['nickname']}

邀请者
+好友
"; } } } else { $owner_id = $this->room_info->owner(); $member = $this->participants[$owner_id]; if ($this->cur_user == $member['userid']) { $html .= "
\"\"

{$member['nickname']}

管理员
"; } else { $relateion = new mem_relation($this->cur_user); $isfriend = $relateion->is_friends($member['userid']); if ($isfriend) { $html .= "
\"\"

{$member['nickname']}

管理员
发消息
"; } else { $html .= "
\"\"

{$member['nickname']}

管理员
+好友
"; } } } echo $html; } }