Esempio n. 1
0
 /**
  * 获取活动列表
  */
 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);
     }
 }