Esempio n. 1
0
 public function invite_create()
 {
     if ($this->get_method() != 'POST') {
         $this->send_response(405, NULL, '请求的方法不存在');
     }
     $data = $this->get_data();
     $invite_code = trim($data['invite_code']);
     if (strlen($invite_code) != 32 || !preg_match('/^[0-9A-Za-z]{32}$/', $invite_code)) {
         $this->send_response(400, NULL, '活动邀请链接无效');
     }
     $activityInviteModel = Activity_Invite_Model::instance();
     $invite_info = $activityInviteModel->getInvitationInfo($invite_code);
     if (!$invite_info) {
         $this->send_response(400, NULL, '活动邀请链接无效');
     }
     $aid = $invite_info['aid'];
     $activity = $this->model->getActivityInfo($aid);
     if (!$activity) {
         $this->send_response(400, NULL, '400502:活动不存在');
     }
     $now_time = time();
     if ($now_time > $activity['end_time']) {
         $this->send_response(400, NULL, '400502:活动已结束');
     }
     $applyResult = $this->model->getActivityApplyType($aid, $this->user_id);
     if ($applyResult > 0) {
         $this->send_response(400, NULL, '你已经报名了该活动');
     }
     $activityMember['aid'] = $aid;
     $activityMember['uid'] = $this->user_id;
     $activityMember['apply_type'] = Kohana::config('activity.apply_type.join');
     $activityMember['apply_time'] = $now_time;
     $activityMember['grade'] = Kohana::config('activity.grade.normal');
     $this->model->applyActivity($activityMember);
     $userModel = User_Model::instance();
     $userModel->insertTag($this->user_id, 15, $aid);
     $apply_type = Kohana::config('activity.apply_type.join');
     $this->_add_feed_comment($activity, 0, $apply_type, $this->user_id);
     $feedModel = Feed_Model::instance();
     $feedModel->addTab($aid, $activity['title'], 15, $this->user_id);
     $this->send_response(200);
 }
Esempio n. 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);
 }