revokeCourseUser($course, $user); $this->handleCourseUser($course, $user); } protected function handleCourseUser(CourseModel $course, UserModel $user) { if ($course->model == CourseModel::MODEL_OFFLINE) { $expiryTime = strtotime($course->attrs['end_date']); } else { $expiryTime = strtotime("+{$course->study_expiry} months"); } $courseUser = new CourseUserModel(); $courseUser->user_id = $user->id; $courseUser->course_id = $course->id; $courseUser->expiry_time = $expiryTime; $courseUser->role_type = CourseUserModel::ROLE_STUDENT; $courseUser->source_type = CourseUserModel::SOURCE_CHARGE; $courseUser->create(); $course->user_count += 1; $course->update(); $user->course_count += 1; $user->update(); } protected function revokeCourseUser(CourseModel $course, UserModel $user) { $courseUserRepo = new CourseUserRepo(); $relations = $courseUserRepo->findByCourseAndUserId($course->id, $user->id); if ($relations->count() == 0) return; foreach ($relations as $relation) { if ($relation->deleted == 0) { $relation->deleted = 1; $relation->update(); } } } }