示例#1
0
文件: group.php 项目: momoim/momo-api
 /**
  * 获取群列表
  */
 public function index()
 {
     if ($this->get_method() != 'GET') {
         $this->send_response(405, NULL, '请求的方法不存在');
     } else {
         $data = $this->get_data();
         $type = (int) $this->input->get('type', 0);
         $result = $this->model->getUserAllGroup($this->user_id, $type);
         $showTabList = Tab_Model::instance()->getList($this->user_id, 1);
         $gidList = array();
         foreach ($showTabList as $key => $value) {
             if ($value['id'] != Kohana::config('uap.xiaomo_qun')) {
                 $gidList[$value['id']] = $key;
             }
         }
         $groupList = array();
         $privateType = Kohana::config('group.type.private');
         foreach ($result as $value) {
             $sort = (int) $gidList[$value['gid']];
             $groupInfo = array();
             $groupInfo['is_hide'] = 0;
             if (array_key_exists($value['gid'], $gidList)) {
                 $groupInfo['is_hide'] = 0;
             }
             $groupInfo['id'] = floatval($value['gid']);
             $groupInfo['name'] = $value['gname'];
             $groupInfo['notice'] = $value['notice'];
             $groupInfo['introduction'] = $value['introduction'];
             $groupInfo['privacy'] = intval($value['privacy']);
             $groupInfo['created_at'] = api::get_date($value['create_time']);
             $groupInfo['modified_at'] = api::get_date($value['modify_time']);
             $creator = array();
             $creator['id'] = floatval($value['creator_id']);
             $creator['name'] = sns::getrealname($value['creator_id']);
             $creator['avatar'] = sns::getavatar($value['creator_id']);
             $groupInfo['creator'] = $creator;
             $groupInfo['master'] = $creator;
             $managerIdList = $this->model->getManagerId($groupInfo['id']);
             $managerList = array();
             foreach ($managerIdList as $val) {
                 $manager = array();
                 $manager['id'] = floatval($val['uid']);
                 $manager['name'] = sns::getrealname($manager['id']);
                 $manager['avatar'] = sns::getavatar($manager['id']);
                 $managerList[] = $manager;
                 unset($manager);
             }
             $groupInfo['manager'] = $managerList;
             $groupInfo['member_count'] = (int) $this->model->getGroupMemberNum($value['gid']);
             $groupList[$sort] = $groupInfo;
             unset($groupInfo);
             unset($creator);
         }
         ksort($groupList);
         foreach ($groupList as $group) {
             $return_list[] = $group;
         }
         $this->send_response(200, $return_list);
     }
 }
示例#2
0
 /**
  * 填充活动列表信息
  * @param array $aidList 活动ID列表
  * @param int $start 开始位置
  * @param int $pos 获取数量
  * return array
  */
 private function _fill_activity_list($aidList, $start, $pos)
 {
     $activityList = array();
     $activityType = array_flip(Kohana::config('activity.type'));
     $activityTypeName = Kohana::config('activity.typeName');
     $nowTime = time();
     $friendModel = new Friend_Model();
     $groupModel = new Group_Model();
     $index = 0;
     foreach ($aidList as $value) {
         $aid = $value['aid'];
         $gidArray = $this->model->getActivityGroupId($aid);
         $activityInfo = $this->model->getActivityInfo($aid);
         if ($activityInfo['creator_id'] != $this->user_id && !$activityInfo['is_allow_invite']) {
             $permit = false;
             foreach ($gidArray as $val) {
                 if ($val['gid'] == -1) {
                     $isFriend = $friendModel->check_isfriend($this->user_id, $activityInfo['creator_id']);
                     if ($isFriend) {
                         $permit = true;
                         break;
                     }
                     continue;
                 }
                 $grade = $groupModel->getMemberGrade($val['gid'], $this->user_id);
                 if ($grade > 0) {
                     $permit = true;
                     break;
                 }
             }
             if (!$permit) {
                 continue;
             }
         }
         if ($pos == 0 || $index >= $start && $index < $start + $pos) {
             $activity = array();
             $activity['id'] = floatval($activityInfo['aid']);
             $user = array();
             $user['id'] = floatval($activityInfo['creator_id']);
             $user['name'] = sns::getrealname($activityInfo['creator_id']);
             $user['avatar'] = sns::getavatar($activityInfo['creator_id']);
             $activity['user'] = $user;
             $activity['title'] = $activityInfo['title'];
             $activity['start_at'] = api::get_date($activityInfo['start_time']);
             $activity['end_at'] = api::get_date($activityInfo['end_time']);
             $activity['spot'] = $activityInfo['spot'];
             //$activity['content'] = $activityInfo['content'];
             $type = $activityType[$activityInfo['type']];
             $activity['type'] = $activityTypeName[$type];
             if ($activityInfo['end_time'] < $nowTime) {
                 $status = Kohana::config('activity.status.end.id');
             } else {
                 if ($activityInfo['start_time'] > $nowTime) {
                     $status = Kohana::config('activity.status.enroll.id');
                 } else {
                     $status = Kohana::config('activity.status.working.id');
                 }
             }
             $activity['status'] = $status;
             $activity['apply_type'] = $this->model->getActivityApplyType($activity['id'], $this->user_id);
             $activity['is_hide'] = -1;
             $result = $this->model->getActivityOrganizer($activity['id']);
             $organizer = array();
             unset($user);
             foreach ($result as $val) {
                 $user = array();
                 $user['id'] = floatval($val['uid']);
                 $userInfo = sns::getuser($val['uid']);
                 $user['name'] = $userInfo['realname'];
                 $user['avatar'] = sns::getavatar($val['uid']);
                 $user['mobile'] = $userInfo['mobile'];
                 $organizer[] = $user;
                 unset($userInfo);
                 unset($user);
             }
             $activity['organizer'] = $organizer;
             $activityList[] = $activity;
             unset($activityInfo);
             unset($activity);
             unset($user);
         }
         $index++;
     }
     return array('data' => $activityList, 'count' => $index);
 }
示例#3
0
 /**
  * 获取系统消息列表,提供给j2me使用
  */
 public function lists()
 {
     if ($this->get_method() != 'GET') {
         $this->send_response(405, NULL, '请求的方法不存在');
     }
     $pagesize = $this->input->get('pagesize', 5);
     $start = $this->input->get('start', 0);
     $new = $this->input->get('new', 0);
     $res = $this->model->getNewNoticeNum($this->user_id);
     if ($res) {
         $noticeNum = (int) $res;
     } else {
         $noticeNum = 0;
     }
     $i = 0;
     $str = $autoUpId = array();
     $body = '';
     $preurl = url::base();
     //@todo msgid 属性等整合完毕拿掉
     $result = $this->model->getNewNoticeList($this->user_id, $start, $pagesize, null, $new);
     if ($result) {
         $config = Kohana::config_load('noticetpl');
         //加载模板配置文件
         foreach ($result as $val) {
             //查找模板
             foreach ($config as $tval) {
                 $tplid = !empty($val['status']) ? $val['tplid'] . '0' . $val['status'] : $val['tplid'];
                 if ($tval['id'] == $tplid) {
                     $tpl = $tval;
                     break;
                 }
             }
             if ($tplid == 10) {
                 continue;
             }
             $title = $this->model->parsedata($val['title'], $tpl['title'], $preurl);
             $body = '';
             if ($val['body']) {
                 $body = json_decode($val['body'], true);
             }
             $group_obj = json_decode($val['title']);
             $gid = isset($group_obj->group[0]->id) ? $group_obj->group[0]->id : '';
             $gname = isset($group_obj->group[0]->name) ? $group_obj->group[0]->name : '';
             $item['id'] = $val['id'];
             $item['created_at'] = api::get_date($val['addtime']);
             $item['sender']['id'] = $val['authorid'];
             $item['sender']['name'] = $val['author'];
             $item['sender']['avatar'] = sns::getavatar($val['authorid']);
             $item['need_handle'] = in_array($tplid, Kohana::config('uap.message_handle')) ? 1 : 0;
             $item['type']['id'] = $tplid;
             $item['type']['name'] = '';
             $item['is_handle'] = in_array($tplid, array(1, 5, 7, 9, 12, 16)) ? 1 : 0;
             $item['text'] = str_replace('[action_info]', '[action_invite]', $title);
             if ($val['tplid'] == 6 || preg_match('/^5/is', $val['tplid'])) {
                 $apply = $this->groupModel->getUserApplyGroup($gid, $val['authorid']);
                 $item['explain'] = $apply['reason'] ? $apply['reason'] : '';
             } else {
                 $item['explain'] = isset($body['explain']) ? str::unhtmlspecialchars($body['explain']) : '';
             }
             $item['is_new'] = $val['isnew'];
             if ($this->has_message_type($val['tplid'])) {
                 if ($this->message_type != null) {
                     $opt[$this->message_type] = $this->message_opt($val['title'], $val['id'], $body, true);
                 }
             } else {
                 $opt = new stdClass();
             }
             $item['opt'] = $opt;
             $str[] = $item;
             unset($opt);
         }
     }
     unset($config, $result);
     //更新己读
     if (!empty($autoUpId)) {
         $this->model->putSetNoticeOld($this->user_id, $autoUpId);
     }
     $remainNum = $this->model->getNewNoticeNum($this->user_id);
     //获取新通知条数
     if ($remainNum) {
         $remainNum = (int) $remainNum;
     } else {
         $remainNum = 0;
     }
     if (!empty($str)) {
         $data['count'] = $noticeNum;
         $data['new_count'] = $remainNum;
         $data['unhandle_count'] = $remainNum;
         $data['message'] = $str;
     } else {
         $data['count'] = 0;
         $data['new_count'] = 0;
         $data['unhandle_count'] = 0;
         $data['message'] = array();
     }
     $this->send_response(200, $data);
 }