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); }
/** * 填充活动列表信息 * @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); }