/** * 获取活动列表 */ public function index() { if ($this->get_method() != 'GET') { $this->send_response(405, NULL, '请求的方法不存在'); } else { $data = $this->get_data(); $type = $this->input->get('filter', 'all'); $end = intval($this->input->get('end', 1)); if ($end != 1) { $end = 0; } $pos = (int) $this->input->get('pagesize', 0); $page = (int) $this->input->get('page', 1); $start = abs($pos * ($page - 1)); $typeArray = Kohana::config('activity.request_type'); if (!in_array($type, $typeArray)) { $this->send_response(400, NULL, '400504:请求的活动类型非法'); } $friendModel = new Friend_Model(); $fidList = $friendModel->getAllFriendIDs($this->user_id); $fids = implode(',', $fidList); $result = array('total' => 0, 'data' => array()); switch ($type) { case 'all': $count = $this->model->userAboutActivityNum($this->user_id, $end); $data = $this->model->userAboutActivityList($this->user_id, $start, $pos, $end); $activityList = $this->_arrange_activity_list($data, -2); break; case 'me_tab_show': $userModel = new User_Model(); $tablist = $userModel->getAllTabList($this->user_id, 15); $dataList = array(); $index = 0; foreach ($tablist as $value) { $activity = $this->model->getActivityInfo($value['id']); if (!$activity) { continue; //活动不存在 } else { if ($activity['end_time'] < time()) { continue; //活动已结束 } } $apply_type = $this->model->getActivityApplyType($value['id'], $this->user_id); if ($apply_type != Kohana::config('activity.apply_type.join') && $apply_type != Kohana::config('activity.apply_type.interest')) { continue; //你未参加或感兴趣此活动 } if ($pos == 0 || $index >= $start && $index < $start + $pos) { $activity['apply_type'] = $apply_type; $activity['is_hide'] = intval($value['is_show']) == 1 ? 0 : 1; $dataList[] = $activity; } $index++; } $activityList = $this->_arrange_activity_list($dataList, -1); $count = $index; break; case 'me_launch': //获取我发起的活动 $count = $this->model->getCreateActivityNum($this->user_id, $end); $dataList = $this->model->getCreateActivityList($this->user_id, $start, $pos, $end); $activityList = $this->_arrange_activity_list($dataList, Kohana::config('activity.apply_type.join')); break; case 'me_joined': $apply_type = Kohana::config('activity.apply_type.join'); $count = $this->model->getApplyActivityNum($this->user_id, $apply_type, $end); $dataList = $this->model->getActivityList($this->user_id, $apply_type, $start, $pos, $end); $activityList = $this->_arrange_activity_list($dataList, Kohana::config('activity.apply_type.join')); break; case 'me_interested': $apply_type = Kohana::config('activity.apply_type.interest'); $count = $this->model->getApplyActivityNum($this->user_id, $apply_type, $end); $dataList = $this->model->getActivityList($this->user_id, $apply_type, $start, $pos, $end); $activityList = $this->_arrange_activity_list($dataList, Kohana::config('activity.apply_type.interest')); break; case 'me_not_join': $apply_type = Kohana::config('activity.apply_type.not_join'); $count = $this->model->getApplyActivityNum($this->user_id, $apply_type, $end); $dataList = $this->model->getActivityList($this->user_id, $apply_type, $start, $pos, $end); $activityList = $this->_arrange_activity_list($dataList, Kohana::config('activity.apply_type.not_join')); break; case 'friend_launch': if (!$fidList) { $this->send_response(200, $result); } $aidList = $this->model->getFriendCreateAidList($fids, $end); $data = $this->_fill_activity_list($aidList, $start, $pos); $count = $data['count']; $activityList = $data['data']; break; case 'friend_joined': if (!$fidList) { $this->send_response(200, $result); } $apply_type = Kohana::config('activity.apply_type.join'); $aidList = $this->model->getFriendAidList($fids, $apply_type, $end); $data = $this->_fill_activity_list($aidList, $start, $pos); $count = $data['count']; $activityList = $data['data']; break; case 'friend_interested': if (!$fidList) { $this->send_response(200, $result); } $apply_type = Kohana::config('activity.apply_type.interest'); $aidList = $this->model->getFriendAidList($fids, $apply_type, $end); $data = $this->_fill_activity_list($aidList, $start, $pos); $count = $data['count']; $activityList = $data['data']; break; default: break; } $result['total'] = intval($count); $result['data'] = $activityList; $this->send_response(200, $result); } }