|
@@ -62,56 +62,31 @@ class member_talkControl extends mbMemberControl
|
|
|
|
|
|
static private function shake_creator($room_id)
|
|
|
{
|
|
|
- static $stCreator = 0;
|
|
|
-
|
|
|
- if($stCreator == 0) {
|
|
|
- $mod_room = Model('room');
|
|
|
- $params = $mod_room->getRoom($room_id);
|
|
|
+ $mod_room = Model('room');
|
|
|
+ $params = $mod_room->getRoom($room_id);
|
|
|
+ if (!empty($params)) {
|
|
|
$rinfo = new room\room_info($params);
|
|
|
- $stCreator = $rinfo->creator();
|
|
|
- }
|
|
|
-
|
|
|
- return $stCreator;
|
|
|
- }
|
|
|
-
|
|
|
- private function relations($user)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- $relation = new relation\mem_relation($user);
|
|
|
- $follows = $relation->follower();//我关注的
|
|
|
- $fans = $relation->subscriber();//关注我的
|
|
|
-
|
|
|
- return array_merge($follows,$fans);
|
|
|
+ return $rinfo->creator();
|
|
|
}
|
|
|
- catch (Exception $ex) {
|
|
|
- return [];
|
|
|
+ else {
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private function invitees($user)
|
|
|
+ public function talksOp()
|
|
|
{
|
|
|
- $mod_member = Model('member');
|
|
|
- $items = $mod_member->getMemberList(['inviter_id' => $user],'member_id', 0, '');
|
|
|
+ $talks_helper = new room\talks_helper();
|
|
|
+ $input = base64_decode($_POST['cmp_table']);
|
|
|
+ $result = $talks_helper->talks(session_helper::memberid(),$input);
|
|
|
|
|
|
- $users = [];
|
|
|
- foreach ($items as $item) {
|
|
|
- $users[] = intval($item['member_id']);
|
|
|
- }
|
|
|
- return $users;
|
|
|
+ return self::outsuccess($result);
|
|
|
}
|
|
|
|
|
|
public function friendsOp()
|
|
|
{
|
|
|
- $user = session_helper::memberid();
|
|
|
-
|
|
|
- $relations = $this->relations($user);
|
|
|
- $invitees = $this->invitees($user);
|
|
|
- $friends = array_merge($relations,$invitees);
|
|
|
- $friends[] = $user;
|
|
|
- $friends = array_unique($friends);
|
|
|
-
|
|
|
- $members = room\members::get_members($friends);
|
|
|
+ $talks_helper = new room\talks_helper();
|
|
|
+ $friends = $talks_helper->friends(session_helper::memberid());
|
|
|
+ $members = member_info::get_members($friends);
|
|
|
usort($members,['member_info','alpha_compare']);
|
|
|
|
|
|
$uids = [];
|
|
@@ -143,10 +118,8 @@ class member_talkControl extends mbMemberControl
|
|
|
if($room <= 0) {
|
|
|
return self::outerr(errcode::ErrParamter);
|
|
|
}
|
|
|
-
|
|
|
$result = $this->roomsg($msgid,$room);
|
|
|
$msgs = $this->format_message($result['uids'],$result['msgs'],$type,0);
|
|
|
-
|
|
|
}
|
|
|
elseif($type == 'chatwo')
|
|
|
{
|
|
@@ -156,18 +129,17 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
$result = $this->chatwomsg($msgid,$user);
|
|
|
$msgs = $this->format_message($result['uids'],$result['msgs'],$type,$user);
|
|
|
-
|
|
|
}
|
|
|
else {
|
|
|
-
|
|
|
+ $msgs = [];
|
|
|
+ Log::record(__METHOD__ . " : invalid type={$type}.",Log::ERR);
|
|
|
}
|
|
|
- return self::outsuccess(["msgs"=>$msgs]);
|
|
|
+ return self::outsuccess(["msgs" => $msgs]);
|
|
|
}
|
|
|
|
|
|
private function format_message($uids,$msgs,$type,$other)
|
|
|
{
|
|
|
$members = [];
|
|
|
-
|
|
|
if(!empty($uids))
|
|
|
{
|
|
|
$items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
|
|
@@ -190,7 +162,6 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
$result = [];
|
|
|
if(!empty($msgs))
|
|
|
{
|
|
@@ -213,7 +184,6 @@ class member_talkControl extends mbMemberControl
|
|
|
elseif($type == 'chatwo')
|
|
|
{
|
|
|
$val['from'] = $from;
|
|
|
-
|
|
|
if($from == session_helper::memberid()) {
|
|
|
$val['to'] = $other;
|
|
|
}
|
|
@@ -239,16 +209,13 @@ class member_talkControl extends mbMemberControl
|
|
|
$mod_room = Model('room');
|
|
|
$msgs = $mod_room->getRoomsgList(['room_id' => $room,'msg_id' => ['lt',$msgid],'msg_type' => 0], $this->page_size);
|
|
|
|
|
|
-
|
|
|
$uids = [];
|
|
|
if($msgs)
|
|
|
{
|
|
|
usort($msgs,['room\sorter','msgid_asc']);
|
|
|
-
|
|
|
foreach ($msgs as $msg) {
|
|
|
$uids[] = intval($msg['member_id']);
|
|
|
}
|
|
|
-
|
|
|
$uids = array_unique($uids);
|
|
|
}
|
|
|
|
|
@@ -262,11 +229,10 @@ class member_talkControl extends mbMemberControl
|
|
|
$right = $user;
|
|
|
|
|
|
$chat_id = $mod_room->findChatid($left,$right);
|
|
|
-
|
|
|
- if($chat_id == false) return ['uids' => [$left,$right],'msgs' => []];
|
|
|
-
|
|
|
+ if($chat_id == false) {
|
|
|
+ return ['uids' => [$left,$right],'msgs' => []];
|
|
|
+ }
|
|
|
$msgs = $mod_room->getRoomsgList(['room_id' => $chat_id,'msg_id' => ['lt',$msgid],'msg_type' => 1], $this->page_size);
|
|
|
-
|
|
|
if($msgs){
|
|
|
usort($msgs,['room\sorter','msgid_asc']);
|
|
|
}
|
|
@@ -278,7 +244,9 @@ class member_talkControl extends mbMemberControl
|
|
|
{
|
|
|
$creator = session_helper::memberid();
|
|
|
$result = room\factory_client::instance()->create_chat($creator);
|
|
|
- if($result == false) return self::outerr(errcode::ErrRoom,"建群失败");
|
|
|
+ if($result == false) {
|
|
|
+ return self::outerr(errcode::ErrRoom,"建群失败");
|
|
|
+ }
|
|
|
|
|
|
$room = $result['room'];
|
|
|
if(!empty($_GET['invitees']))
|
|
@@ -289,11 +257,12 @@ class member_talkControl extends mbMemberControl
|
|
|
$ret = room\factory_client::instance()->invite($room,$creator,$invitees);
|
|
|
if($ret == false) return self::outerr(errcode::ErrRoom,"邀请失败");
|
|
|
|
|
|
- return self::outsuccess(["room_id"=>$room,"room_name"=>"群聊(".(count($invitees)+1).")"]);
|
|
|
+ return self::outsuccess(["room_id"=>$room,"room_name" => "群聊(".(count($invitees)+1).")"]);
|
|
|
}else {
|
|
|
return self::outerr(errcode::ErrRoom,"建群失败");
|
|
|
}
|
|
|
- }else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
return self::outsuccess(["room_id"=>$room,"room_name"=>"群聊"]);
|
|
|
}
|
|
|
}
|
|
@@ -312,7 +281,7 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $members = room\members::get_members($result['newusers']);
|
|
|
+ $members = member_info::get_members($result['newusers']);
|
|
|
$result['invitees'] = $members;
|
|
|
return self::outsuccess($result);
|
|
|
}
|
|
@@ -335,15 +304,36 @@ class member_talkControl extends mbMemberControl
|
|
|
return self::outsuccess($result);
|
|
|
}
|
|
|
}
|
|
|
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
- public function talksOp()
|
|
|
+
|
|
|
+ public function kickoutOp()
|
|
|
{
|
|
|
- $talks_helper = new room\talks_helper();
|
|
|
- $input = base64_decode($_POST['cmp_table']);
|
|
|
- $result = $talks_helper->talks(session_helper::memberid(),$input);
|
|
|
+ $room = intval($_GET['room_id']);
|
|
|
+ $kicks = explode(',', trim($_GET['users']));
|
|
|
|
|
|
- return self::outsuccess($result);
|
|
|
+ if($room <= 0 || count($kicks) <= 0 ) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
+
|
|
|
+ $item = Model('room')->getRoom($room);
|
|
|
+ if(empty($item)) {
|
|
|
+ return self::outerr(errcode::ErrParamter,"此群不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ $info = new room\room_info($item);
|
|
|
+ if($info->owner() != session_helper::memberid()) {
|
|
|
+ return self::outerr(errcode::ErrTalk,"只有群主可以踢人");
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = room\factory_client::instance()->kickout($room,session_helper::memberid(),$kicks);
|
|
|
+ if($result === false) {
|
|
|
+ return self::outerr(errcode::ErrRoom);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return self::outsuccess($result);
|
|
|
+ }
|
|
|
}
|
|
|
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
public function room_detailOp()
|
|
@@ -399,14 +389,19 @@ class member_talkControl extends mbMemberControl
|
|
|
return self::outerr(errcode::ErrParamter);
|
|
|
}
|
|
|
|
|
|
- $cond = ['room_id'=>$room_id];
|
|
|
- $update = $this->room_edit_data();
|
|
|
- if(empty($update)) {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
+ $updata = [];
|
|
|
+ if(!empty($_GET['room_name'])){
|
|
|
+ $updata["room_name"] = $_GET['room_name'];
|
|
|
+ }
|
|
|
+ if(!empty($_GET['room_desc'])){
|
|
|
+ $updata["room_desc"] = $_GET['room_desc'];
|
|
|
}
|
|
|
|
|
|
- $ret = Model('room')->editRoom($cond,$update);
|
|
|
+ if(empty($updata)) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
|
|
|
+ $ret = Model('room')->editRoom(['room_id'=>$room_id],$updata);
|
|
|
if($ret) {
|
|
|
return self::outsuccess(null);
|
|
|
} else {
|
|
@@ -414,24 +409,25 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private function room_edit_data()
|
|
|
+ public function room_usersOp()
|
|
|
{
|
|
|
- $update = [];
|
|
|
-
|
|
|
- $name = trim($_GET['room_name']);
|
|
|
- if(!empty($name)){
|
|
|
- $update["room_name"] = $name;
|
|
|
+ $room_id = intval($_GET['room_id']);
|
|
|
+ if($room_id <= 0) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
}
|
|
|
|
|
|
- $desc = trim($_GET['room_desc']);
|
|
|
- if(!empty($desc)){
|
|
|
- $update["room_desc"] = $desc;
|
|
|
- }
|
|
|
+ $parts = new room\room_parts($room_id);
|
|
|
+ $uids = $parts->allparts();
|
|
|
+ $members = member_info::get_members($uids);
|
|
|
|
|
|
- return $update;
|
|
|
+ return self::outsuccess([
|
|
|
+ 'friends' => $uids,
|
|
|
+ 'count' => count($uids),
|
|
|
+ "mem_desc" => $members,
|
|
|
+ 'mobile_page' => mobile_page(1)]);
|
|
|
}
|
|
|
|
|
|
- public function member_nickOp()
|
|
|
+ public function change_membernickOp()
|
|
|
{
|
|
|
//自己修改
|
|
|
$roomid = intval($_GET['room_id']);
|
|
@@ -474,31 +470,12 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function room_usersOp()
|
|
|
- {
|
|
|
- $room_id = intval($_GET['room_id']);
|
|
|
- if($room_id<=0) return self::outerr(errcode::ErrParamter);
|
|
|
-
|
|
|
- $self = session_helper::memberid();
|
|
|
- $items = room\room_helper::room_uids($room_id);
|
|
|
- if(empty($items)) return self::outerr(errcode::ErrTalk);
|
|
|
-
|
|
|
- $uids = room\members::uids_filter($items,$self);
|
|
|
- $members = room\members::get_members($uids);
|
|
|
-
|
|
|
- return self::outsuccess([
|
|
|
- 'friends' => $uids,
|
|
|
- 'count' => count($uids),
|
|
|
- "mem_desc" => $members,
|
|
|
- 'mobile_page' => mobile_page(1)]);
|
|
|
- }
|
|
|
-
|
|
|
- public function room_avatarOp()
|
|
|
+ public function change_room_avatarOp()
|
|
|
{
|
|
|
$roomid = intval($_POST['room_id']);
|
|
|
$upload_dir = ATTACH_AVATAR.DS. "room_{$roomid}" . DS;
|
|
|
|
|
|
- $uploader = new \room\uploader();
|
|
|
+ $uploader = new room\uploader();
|
|
|
$res = $uploader->upfile($upload_dir,$info);
|
|
|
if($res == false) {
|
|
|
return self::outerr(errcode::ErrUploadFileFailed);
|
|
@@ -515,38 +492,7 @@ class member_talkControl extends mbMemberControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function kickoutOp()
|
|
|
- {
|
|
|
- $room = intval($_GET['room_id']);
|
|
|
- $leavers = explode(',', trim($_GET['troublemaker']));
|
|
|
- $leavers = $leavers[0];
|
|
|
-
|
|
|
- if($room <= 0 || count($leavers) <= 0 ) {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
- }
|
|
|
-
|
|
|
- $item = Model('room')->getRoom($room);
|
|
|
- if(empty($item)) {
|
|
|
- return self::outerr(errcode::ErrParamter);
|
|
|
- }
|
|
|
-
|
|
|
- $room_owner = intval(session_helper::memberid());
|
|
|
- $info = new room\room_info($item);
|
|
|
- if($info->owner() != $room_owner) {
|
|
|
- return self::outerr(errcode::ErrTalk,"只有群主可以踢人");
|
|
|
- }
|
|
|
-
|
|
|
- $result = room\factory_client::instance()->leave($room,$leavers);
|
|
|
- if($result === false) {
|
|
|
- return self::outerr(errcode::ErrRoom);
|
|
|
- }
|
|
|
- else {
|
|
|
- return self::outsuccess($result);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public function change_ownerOp()
|
|
|
+ public function change_room_ownerOp()
|
|
|
{
|
|
|
$room_id = intval($_GET['room_id']);
|
|
|
$to_user = explode(',', trim($_GET['room_owner']));
|
|
@@ -569,7 +515,6 @@ class member_talkControl extends mbMemberControl
|
|
|
$info = $member->filter();
|
|
|
$name = $info['nickname'];
|
|
|
|
|
|
- ////
|
|
|
$trans = new trans_wapper(null,__METHOD__);
|
|
|
|
|
|
$exchange = $this->exchage_room_owner($room_id,$from_user,$to_user);
|
|
@@ -585,7 +530,6 @@ class member_talkControl extends mbMemberControl
|
|
|
///
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private function exchage_room_owner($room_id,$from_user,$to_user)
|
|
|
{
|
|
|
$mod_room = Model("room");
|
|
@@ -596,7 +540,39 @@ class member_talkControl extends mbMemberControl
|
|
|
return $update1 && $update2;
|
|
|
}
|
|
|
|
|
|
- //////////////////////////////////////////////////////////////////////////////////////
|
|
|
+ public function change_room_noticeOp()
|
|
|
+ {
|
|
|
+ $roomid = intval($_GET['room_id']);
|
|
|
+ if($roomid <= 0) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
+
|
|
|
+ $room_notice = trim($_GET['room_notice']);
|
|
|
+ $len = strlen($room_notice);
|
|
|
+ if( $len <= 0 || $len > 450 ) {
|
|
|
+ return self::outerr(errcode::ErrParamter,"公告过长或为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ $mod_room = Model('room');
|
|
|
+ $item = $mod_room->getRoom($roomid);
|
|
|
+ if(empty($item)) {
|
|
|
+ return self::outerr(errcode::ErrParamter,"错误的群信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ $user = session_helper::memberid();
|
|
|
+ $info = new room\room_info($item);
|
|
|
+ if($info->owner() != $user) {
|
|
|
+ return self::outerr(errcode::ErrTalk,"只有管理员可以修改群公告");
|
|
|
+ }
|
|
|
+
|
|
|
+ $ret = Model("room")->editRoom(['room_id' => $roomid],['notice' => $room_notice]);
|
|
|
+ if($ret) {
|
|
|
+ return self::outsuccess(null);
|
|
|
+ } else {
|
|
|
+ return self::outerr(errcode::ErrDB);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
public function friend_detailOp()
|
|
|
{
|
|
|
$userid = intval($_GET['userid']);
|