getRoom($room); if(empty($item)) return false; $parts = new room\room_parts($room); $partinfos = $parts->top_users(20); $users = $parts->users(); $uids = []; foreach ($partinfos as $part) { $uids[] = $part->member_id(); } $updata = []; $room_info = new room\room_info($item); if(!$room_info->has_avatar()) { $avatar_maker = new room\room_avatar($room); $avatars = self::avatarts($uids); if(!empty($avatars)) { $tmp_avatar = $avatar_maker->make($avatars); if($tmp_avatar != false) { $now = time(); $url = "{$tmp_avatar}?tm={$now}"; $updata['tmp_avatar'] = $url; } } } if(!$room_info->has_name()) { $names = self::nickname($uids); if(!empty($names)) { $tmp_name = implode('、', $names); $updata['tmp_name'] = $tmp_name; } } $updata['users'] = $users; if(!empty($updata)) { $mod_room->editRoom(['room_id' => $room],$updata); room\factory_client::instance()->change($room); } } public static function room($roomid) { if($roomid <= 0) return false; $mod_room = Model('room'); $items = $mod_room->getRooms(['room_id' => $roomid]); foreach ($items as $item) { return new room\room_info($item); } return false; } public static function message($msgid) { if($msgid <= 0) return false; $mod_room = Model('room'); $items = $mod_room->getMssage(['msg_id' => $msgid]); foreach ($items as $item) { return $item; } return false; } public static function avatarts($uids) { if(empty($uids)) return false; $result = []; $uids = array_unique($uids); $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]); foreach ($items as $item) { try { $info = new member_info($item); if($info->hasAvatar()) { $avatar = $info->avatar(); Log::record("avatar_url:{$avatar}",Log::DEBUG); $result[] = $avatar; } } catch (Exception $ex) { Log::record($ex->getMessage(),Log::ERR); } } return $result; } public static function nickname($uids) { $result = []; if(empty($uids)) return $result; $uids = array_unique($uids); $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]); $i = 0; foreach ($items as $item) { try { $info = new member_info($item); if($info->hasNickname()) { $result[] = $info->nickname(); $i++; if($i > self::room_name_usercount) break; } } catch (Exception $ex) { Log::record($ex->getMessage(),Log::ERR); } } return $result; } public static function user_rooms($user,$order='room_id asc',$count = 0) { $mod_room = Model('room'); $items = $mod_room->getRoomParts(['member_id' => $user,'state' => 0],'room_id'); $roomids = []; foreach ($items as $item) { $roomids[] = intval($item['room_id']); } $result = []; if(empty($roomids)) return $result; $items = $mod_room->getRooms(['type'=>\room\proto_type::room_chat,'room_id' => ['in',$roomids]],'*',$order,$count); foreach ($items as $item) { $room = new room\room_info($item); $result[] = $room->format(); } return $result; } public static function common_rooms($left,$right) { $mod_room = Model('room'); $items1 = $mod_room->getRoomParts(['member_id' => $left,'state' => 0],'room_id'); $items2 = $mod_room->getRoomParts(['member_id' => $right,'state' => 0],'room_id'); $roomids = []; foreach ($items1 as $item) { $roomids[] = intval($item['room_id']); } foreach ($items2 as $item) { $roomids[] = intval($item['room_id']); } if(empty($roomids)){ return []; }else{ return array_unique($roomids); } } public static function page_rooms($cond, $order = 'room_id desc', $limit = 5 , $page = false, &$mobile_page = []) { $result = []; $mod_room = Model('room'); $items = $mod_room->getRooms($cond,'*',$order,$limit,$page); foreach ($items as $idx => $item) { $room = new room\room_info($item); $info = $room->format(); $page = intval($_GET['curpage']) > 0 ? intval($_GET['curpage']) : 1; $pos = ($page - 1) * $limit + $idx + 1; $info['rank'] = $pos; $result[] = $info; } if($page){ $mobile_page = mobile_page($mod_room->gettotalpage());; }else{ $mobile_page = []; } return $result; } public static function onSpendBonus($roomid,$amount,$userid) { if($roomid > 0 && intval($amount * 100 + 0.5) > 0 && $userid > 0) { $mod_room = Model('room'); $mod_room->editRoom(['room_id' => $roomid],['shared_bonus' => ['exp',"shared_bonus - {$amount}"]]); $content = ['user' => session_helper::memberid(),'amount' => $amount]; room\factory_client::instance()->notice_room($roomid,0,room\proto_type::msg_stype_spend,$content); } } }