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.="";
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 ="
{$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.= "";
}
echo $html;
}
public function show_activity()
{
$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 = "";
} else {
$html = "";
}
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 = "";
}else{
$html = "";
}
return $html;
}
private function room_notice_btn($notice){
$html = "";
return $html;
}
private function room_desc_btn($desc){
$html = "";
return $html;
}
private function room_apply_btn($apply,$cnt)
{
if ($cnt > 0)
{
$html ="
";
}
else
{
$html ="
";
}
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 = "";
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 = "
";
echo $html;
}
public function show_download()
{
echo "";
}
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;
}
}