public function select_group() { $group_id = $this->input->post('group_id'); $this->_transaction_isolation(); $this->db->trans_begin(); $group = new Group(); $group->get_by_id($group_id); if ($group->exists()) { $course = $group->course->get(); if (is_null($course->groups_change_deadline) || date('U', strtotime($course->groups_change_deadline)) >= time()) { $student = new Student(); $student->get_by_id($this->usermanager->get_student_id()); if ($student->is_related_to('active_course', $course->id)) { $participant = new Participant(); $participant->where_related($student); $participant->where_related($course); $participant->where('allowed', 1); $participant->get(); if ($participant->exists()) { if (!$participant->is_related_to($group)) { $participant->save($group); $participant->where_related($course); $participant->where_related($group); $participant->where('allowed', 1); $participants_count = $participant->count(); $room = new Room(); $room->where_related($group)->order_by('capacity', 'asc')->limit(1)->get(); if ($participants_count > intval($room->capacity)) { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_group_is_full', Messages::MESSAGE_TYPE_ERROR); } else { $this->db->trans_commit(); $this->messages->add_message(sprintf($this->lang->line('groups_message_group_changed'), $this->lang->text($group->name)), Messages::MESSAGE_TYPE_SUCCESS); $this->_action_success(); $this->output->set_internal_value('course_id', $participant->course_id); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_you_are_in_group', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_cant_found_participant_record', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_cant_change_group_of_inactive_course', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_groups_switching_disabled', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:groups_message_group_not_found', Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('groups')); }
/** * @before _secure, changeLayout, _admin */ public function participants() { $this->seo(array("title" => "Game Participants", "view" => $this->getLayoutView())); $view = $this->getActionView(); $limit = RequestMethods::get("limit", 10); $page = RequestMethods::get("page", 1); $participants = Participant::all(array(), array("*"), "created", "desc", $limit, $page); $count = Participant::count(); $view->set("participants", $participants); $view->set("count", $count); $view->set("limit", $limit); $view->set("page", $page); }
public function signup_to_course($course_id) { $this->output->set_content_type('application/json'); $output = new stdClass(); $output->status = FALSE; $output->message = ''; $output->content = ''; $this->_transaction_isolation(); $this->db->trans_begin(); $student = new Student(); $student->get_by_id($this->usermanager->get_student_id()); $course = new Course(); $course->where('hide_in_lists', 0); $course->get_by_id($course_id); if ($course->exists()) { if ($course->is_subscription_allowed()) { if ($student->participant->where_related($course)->count() == 0) { if ($course->auto_accept_students == 1) { $participants = new Participant(); $participants->where_related_course($course); $participants->where('allowed', 1); $participants_count = $participants->count(); if ($participants_count >= (int) $course->capacity) { $output->message = $this->lang->line('courses_message_course_is_full'); $output->status = FALSE; $this->db->trans_rollback(); } else { $participant = new Participant(); $participant->allowed = 1; $participant->save(array($student, $course)); $this->db->trans_commit(); $output->message = sprintf($this->lang->line('courses_message_signed_up_for_course_approved'), $this->lang->text($course->name)); $this->parser->assign('course', $course); $output->content = $this->parser->parse('frontend/courses/single_course.tpl', array(), TRUE); $output->status = TRUE; $this->_action_success(); } } else { $participant = new Participant(); $participant->allowed = 0; $participant->save(array($student, $course)); $this->db->trans_commit(); $output->message = sprintf($this->lang->line('courses_message_signed_up_for_course'), $this->lang->text($course->name)); $this->parser->assign('course', $course); $output->content = $this->parser->parse('frontend/courses/single_course.tpl', array(), TRUE); $output->status = TRUE; $this->_action_success(); } } else { $output->message = $this->lang->line('courses_message_already_in_course_or_waiting_for_approwal'); $this->db->trans_rollback(); } } else { $output->message = $this->lang->line('courses_message_subscription_disallowed'); $this->db->trans_rollback(); } } else { $output->message = $this->lang->line('courses_message_course_not_found'); $this->db->trans_rollback(); } $this->output->set_output(json_encode($output)); }
public function import_single_line() { $this->output->set_content_type('application/json'); $firstname = $this->input->post('firstname'); $lastname = $this->input->post('lastname'); $fullname = $this->input->post('fullname'); $email = $this->input->post('email'); $options = $this->input->post('options'); $this->parser->assign('firstname', $firstname); $this->parser->assign('lastname', $lastname); $this->parser->assign('fullname', $fullname); $this->parser->assign('email', $email); if ((trim($firstname) != '' && trim($lastname) != '' || trim($fullname) != '') && trim($email) != '') { $student_fullname = trim($fullname) != '' ? trim($fullname) : trim($firstname) . ' ' . trim($lastname); $this->_transaction_isolation(); $this->db->trans_begin(); $student = new Student(); $student->where('email', trim($email)); $student->get(); if ($student->exists()) { if ($student->fullname != $student_fullname) { $student->fullname = $student_fullname; $student->save(); $this->db->trans_commit(); } else { $this->db->trans_rollback(); } $this->parser->assign('error_message', 'lang:admin_students_csv_import_error_message_student_exists'); } else { $this->load->library('form_validation'); if ($this->form_validation->valid_email(trim($email))) { $student->email = trim($email); $student->fullname = $student_fullname; $password = ''; if ($options['password_type'] == 'default') { $password = $this->config->item('student_import_default_password'); } elseif ($options['password_type'] == 'random') { $password = md5(base64_encode(rand(0, 99999999999) . time() . $student->fullname . $student->email) . $this->config->item('encryption_key')); $password = substr($password, 0, rand(6, 20)); } $student->password = $password != '' ? sha1($password) : ''; $student->language = $this->config->item('language'); if ($student->save()) { $this->parser->assign('password', $password); $this->db->trans_commit(); $this->parser->assign('success_message', 'lang:admin_students_csv_import_successfully_imported'); if ((bool) $options['send_mail']) { if ($password == '') { $this->_transaction_isolation(); $this->db->trans_begin(); $student->generate_random_password_token(); $this->db->trans_commit(); } $this->_init_language_for_student($student); $this->load->library('email'); $this->email->from_system(); $this->email->to($student->email); $this->email->subject($this->lang->line('admin_students_csv_import_email_subject')); $this->email->build_message_body('file:emails/backend/students/csv_import_email.tpl', array('student' => $student, 'password' => $password)); $sent = $this->email->send(); $this->_init_language_for_teacher(); if ($sent) { $this->parser->assign('email_success_message', 'lang:admin_students_csv_import_email_sent_successfully'); } else { $this->parser->assign('email_error_message', 'lang:admin_students_csv_import_email_sent_failed'); } } } else { $this->db->trans_rollback(); $this->parser->assign('error_message', 'lang:admin_students_csv_import_error_message_student_save_error'); } } else { $this->db->trans_rollback(); $this->parser->assign('error_message', 'lang:admin_students_csv_import_error_message_student_email_invalid'); } } if ($student->exists()) { $this->parser->assign('student_id', $student->id); if (intval($options['assign_to_course']) > 0) { $this->_transaction_isolation(); $this->db->trans_begin(); $course = new Course(); $course->get_by_id(intval($options['assign_to_course'])); if ($course->exists()) { $participant = new Participant(); $participant->where_related('student', 'id', $student->id); $participant->where_related('course', 'id', $course->id); $participant->get(); if (!$participant->exists()) { $participant->allowed = 0; if ($participant->save(array('student' => $student, 'course' => $course))) { $this->db->trans_commit(); $this->parser->assign('course_assignment_success_message', 'lang:admin_students_csv_import_successfully_added_course_participation'); $this->db->trans_begin(); $course = new Course(); $course->get_by_id(intval($options['assign_to_course'])); $participant->allowed = 1; $participant->save(); $participants = new Participant(); $participants->where_related($course); $participants->where('allowed', 1); $participants_count = $participants->count(); if ($participants_count <= $course->capacity) { $this->db->trans_commit(); $this->parser->assign('course_assignment_approwal_success_message', 'lang:admin_students_csv_import_successfully_added_course_participation_approwal'); } else { $this->db->trans_rollback(); $this->parser->assign('course_assignment_approwal_error_message', 'lang:admin_students_csv_import_error_message_added_course_participation_approwal'); } } else { $this->db->trans_rollback(); $this->parser->assign('course_assignment_error_message', 'lang:admin_students_csv_import_error_message_participation_save_failed'); } } else { $this->db->trans_rollback(); $this->parser->assign('course_assignment_error_message', 'lang:admin_students_csv_import_error_message_already_in_course'); } } else { $this->db->trans_rollback(); $this->parser->assign('course_assignment_error_message', 'lang:admin_students_csv_import_error_message_course_not_found'); } } } } else { $this->parser->assign('error_message', 'lang:admin_students_csv_import_error_message_nothing_to_import'); } $html = $this->parser->parse('backend/students/import_single_line.tpl', array(), TRUE); $this->output->set_output(json_encode($html)); }