public function render() { $course = new Course(); $course->include_related('period'); $course->get_by_id((int) @$this->config['course_id']); $this->parser->assign('course', $course); if ($course->exists()) { $solutions = new Solution(); $solutions->select_func('COUNT', '@id', 'count'); $solutions->where('revalidate', 1); $solutions->where_related('task_set', 'id', '${parent}.id'); $solutions->where_related('student/participant/course', 'id', $course->id); $solutions->where_related('student/participant', 'allowed', 1); $task_sets = new Task_set(); $task_sets->select('*'); $task_sets->select_subquery($solutions, 'solutions_count'); $task_sets->where_related($course); $task_sets->where_related('solution', 'revalidate', 1); $task_sets->where_related('solution/student/participant/course', 'id', $course->id); $task_sets->where_related('solution/student/participant', 'allowed', 1); $task_sets->group_by('id'); $task_sets->order_by_with_overlay('name', 'ASC'); $task_sets->get_iterated(); $this->parser->assign('task_sets', $task_sets); } $this->parser->parse('widgets/admin/unevaluated_solutions/main.tpl'); }
public function render() { if (isset($this->config['course_id'])) { $course = new Course(); $course->include_related('period'); $course->get_by_id((int) $this->config['course_id']); $this->parser->assign('course', $course); if ($course->exists()) { $task_sets = new Task_set(); $task_sets->where_related($course); $task_sets->where('published', 1); $task_sets->where('content_type', 'task_set'); $task_sets_count = $task_sets->count(); $this->parser->assign('task_sets_count', $task_sets_count); $task_sets->where_related($course); $task_sets->where('published', 1); $task_sets->where('content_type', 'project'); $projects_count = $task_sets->count(); $this->parser->assign('projects_count', $projects_count); $groups = new Group(); $groups->where_related($course); $groups_count = $groups->count(); $this->parser->assign('groups_count', $groups_count); $students = new Student(); $students->where_related('participant/course', 'id', $course->id); $students->where_related('participant', 'allowed', 1); $students_count = $students->count(); $this->parser->assign('students_count', $students_count); $task_set_permissions = new Task_set_permission(); $task_set_permissions->select_func('COUNT', '*', 'count'); $task_set_permissions->where('enabled', 1); $task_set_permissions->where_related('task_set', 'id', '${parent}.id'); $now = date('Y-m-d H:i:s'); $plus_two_weeks = date('Y-m-d H:i:s', strtotime($now . ' + 2 weeks')); $minus_one_week = date('Y-m-d H:i:s', strtotime($now . ' - 1 week')); $task_sets->select('id, name, upload_end_time AS min_upload_end_time, upload_end_time AS max_upload_end_time'); $task_sets->where_related($course); $task_sets->where('published', 1); $task_sets->where_subquery('0', $task_set_permissions); $task_sets->where('upload_end_time >=', $minus_one_week); $task_sets->where('upload_end_time <=', $plus_two_weeks); $task_sets_2 = new Task_set(); $task_sets_2->select('id, name'); $task_sets_2->where_related($course); $task_sets_2->where('published', 1); $task_sets_2->select_min('task_set_permissions.upload_end_time', 'min_upload_end_time'); $task_sets_2->select_max('task_set_permissions.upload_end_time', 'max_upload_end_time'); $task_sets_2->where_related('task_set_permission', 'enabled', 1); $task_sets_2->having('(MAX(`task_set_permissions`.`upload_end_time`) >= ' . $this->db->escape($minus_one_week) . ' AND MAX(`task_set_permissions`.`upload_end_time`) <= ' . $this->db->escape($plus_two_weeks) . ')'); $task_sets_2->or_having('(MIN(`task_set_permissions`.`upload_end_time`) >= ' . $this->db->escape($minus_one_week) . ' AND MIN(`task_set_permissions`.`upload_end_time`) <= ' . $this->db->escape($plus_two_weeks) . ')'); $task_sets_2->group_by('id'); $task_sets->union_iterated($task_sets_2, FALSE, 'min_upload_end_time DESC, max_upload_end_time DESC', isset($this->config['number_of_task_sets']) ? (int) $this->config['number_of_task_sets'] : 5); $this->parser->assign('task_sets', $task_sets); } } $this->parser->parse('widgets/admin/course_overview/main.tpl'); }
private function inject_unused_task_set_types($course_id) { $course = new Course(); $course->get_by_id(intval($course_id)); $course->task_set_type->get(); $course_task_set_types = $course->task_set_type->all_to_single_array('id'); $task_set_types = new Task_set_type(); $task_set_types->where_not_in('id', count($course_task_set_types) > 0 ? $course_task_set_types : array(0)); $query = $task_set_types->order_by('name', 'asc')->get_raw(); $data = array(NULL => ''); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { $data[(int) $row->id] = $row->name; } } $this->parser->assign('task_set_types', $data); $query->free_result(); }
public function add_participant() { $this->load->library('form_validation'); $this->form_validation->set_rules('participant[course]', 'lang:admin_participants_form_field_course', 'required'); $this->form_validation->set_rules('participant[students][]', 'lang:admin_participants_form_field_students', 'required'); if ($this->form_validation->run()) { $this->_transaction_isolation(); $this->db->trans_begin(); $process_ok = TRUE; $participant_data = $this->input->post('participant'); $course = new Course(); $course->get_by_id(intval($participant_data['course'])); $group = new Group(); $group->get_by_id(intval(@$participant_data['group'])); if (!$course->exists()) { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_participants_message_course_not_exists', Messages::MESSAGE_TYPE_ERROR); $process_ok = FALSE; } if ($process_ok && $course->exists()) { if ($group->exists() && !$group->is_related_to($course)) { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_participants_message_group_not_belongs_to_course', Messages::MESSAGE_TYPE_ERROR); $process_ok = FALSE; } } $disapproved = 0; $added = 0; if ($process_ok) { foreach ($participant_data['students'] as $student_id) { $student = new Student(); $student->where_related('participant/course', 'id', $course->id); $student->get_by_id($student_id); if ($student->exists()) { continue; } $student->get_by_id($student_id); $participant = new Participant(); $participant->allowed = intval(@$participant_data['allowed']); $participant->save(array($student, $course, $group)); $added++; if ($participant->allowed == 1) { $disallowe_participant = FALSE; if ($course->participant->where('allowed', 1)->count() > intval($course->capacity)) { $disallowe_participant = TRUE; } if ($group->exists()) { $group_for_test = new Group(); $rooms = $group_for_test->room; $rooms->select_min('capacity'); $rooms->where('group_id', '${parent}.id', FALSE); $group_for_test->select_subquery($rooms, 'group_capacity'); $group_for_test->include_related_count('participant'); $group_for_test->where_related_participant('allowed', 1); $group_for_test->get_by_id(intval($group->id)); if ($group_for_test->exists()) { if (intval($group_for_test->participant_count) > intval($group_for_test->group_capacity)) { $disallowe_participant = TRUE; } } } if ($disallowe_participant) { $participant->allowed = 0; $participant->save(); $disapproved++; } } } } if ($this->db->trans_status() && $process_ok) { $this->db->trans_commit(); $info_approved = intval(@$participant_data['allowed']) == 1 ? $added - $disapproved : 0; $info_disappoved = intval(@$participant_data['allowed']) == 1 ? $disapproved : $added; $message = sprintf($this->lang->line('admin_participants_message_addition_successfull'), $info_approved, $info_disappoved); $this->messages->add_message($message, Messages::MESSAGE_TYPE_SUCCESS); $this->_action_success(); } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_participants_messages_error_in_addition_transaction', Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('admin_participants/add_participant_form')); } else { $this->add_participant_form(); } }
} //$student_subjects = Grade::get_by_sql("SELECT * FROM " . T_STUDENT_GRADES . " WHERE ".C_GRADE_STUDENT_ID."=".$student->id); $future_subjects = Subject::get_by_sql("SELECT * FROM " . T_SUBJECTS . " WHERE " . C_SUBJECT_COURSE_ID . "=" . $student->course_id . " AND " . C_SUBJECT_SEMESTER . " = " . $future_sem . " ORDER BY {$sidx} {$sord} LIMIT {$start} , {$limit}"); // $student_current_subjects = array(); // foreach($student_subjects as $student_subject) // { // array_push($student_current_subjects, Subject::get_by_id($student_subject->subject_id)); // } header("Content-type: text/xml;charset=utf-8"); $s = "<?xml version='1.0' encoding='utf-8'?>"; $s .= "<rows>"; $s .= "<page>" . $page . "</page>"; $s .= "<total>" . $total_pages . "</total>"; $s .= "<records>" . $count . "</records>"; if (count($future_subjects) > 0) { foreach ($future_subjects as $final_subject) { $s .= "<row id='" . $final_subject->id . "'>"; $s .= "<cell>" . $final_subject->id . "</cell>"; $s .= "<cell>" . $final_subject->code . "</cell>"; $s .= "<cell>" . $final_subject->description . "</cell>"; $s .= "<cell>" . $final_subject->units . "</cell>"; $subject_code = $final_subject->prereq_subject_id == 0 ? "NONE" : Subject::get_by_id($final_subject->prereq_subject_id)->code; $s .= "<cell>" . $subject_code . "</cell>"; $s .= "<cell>" . Course::get_by_id($final_subject->course_id)->code . "</cell>"; $s .= "<cell>" . $final_subject->semester . "</cell>"; $s .= "<cell>" . $final_subject->year . "</cell>"; $s .= "</row>"; } } $s .= "</rows>"; echo $s;
function list_import_lamsfet_sets(&$sets, $set_types, $courses_terms, $excercise_groups) { echo 'Starting task_sets import (' . count($sets) . ') ['; if (count($sets)) { foreach ($sets as $id => $set) { $task_set_type_id = $set_types[$set->set_type_id]->_list_id; $task_set_type = new Task_set_type(); $task_set_type->get_by_id(intval($task_set_type_id)); $course_id = $courses_terms[$set->course_term_id]->_list_id; $course = new Course(); $course->get_by_id(intval($course_id)); $group_id = !is_null($set->excercise_group_id) ? $excercise_groups[$set->excercise_group_id]->_list_id : NULL; $group = new Group(); if (!is_null($group_id)) { $group->get_by_id(intval($group_id)); } $task_set = new Task_set(); $task_set->name = $set->name; if (!is_null($set->comment)) { $task_set->instructions = nl2br($set->comment); } if (!empty($set->date_from)) { $task_set->publish_start_time = $set->date_from; } if (!empty($set->submit_to)) { $task_set->upload_end_time = $set->submit_to; } $task_set->published = 1; $task_set->save(array($task_set_type, $group, $course)); $sets[$id]->_list_id = $task_set->id; echo '.'; } } echo '] ... done' . "\n"; }
/** * Returns the course object this object is associated with. * Lazy loaded from the value returned by get_c_id(). * @return \Model\Course */ public function get_course() { if ($this->course && $this->course->get_id() == $this->c_id) { return $this->course; } $this->course = Course::get_by_id($this->c_id); return $this->course; }
public function run_comparation() { $task_sets_setup_data = $this->input->post('task_sets_setup'); $solutions_data = $this->input->post('solutions'); $moss_setup_data = $this->input->post('moss_setup'); $moss_base_files_data = $this->input->post('moss_base_files'); $course = new Course(); $course->get_by_id((int) $task_sets_setup_data['course']); $task_set = new Task_set(); $task_set->where_related($course); $task_set->get_by_id(isset($task_sets_setup_data['task_set']) ? (int) $task_sets_setup_data['task_set'] : 0); $this->config->load('moss'); $languages = $this->config->item('moss_langs_for_list'); asort($languages); $this->parser->assign(array('course' => $course, 'task_set' => $task_set, 'languages' => $languages)); $this->parser->assign('moss_enabled', $this->is_moss_user_id_set()); if ($course->exists() && $task_set->exists()) { $this->load->library('form_validation'); $this->form_validation->set_rules('solutions', 'lang:admin_moss_list_solutions_form_field_solution_selection', 'callback__selected_solutions'); $this->form_validation->set_rules('moss_setup[l]', 'lang:admin_moss_list_solutions_form_field_language', 'required'); $this->form_validation->set_rules('moss_setup[m]', 'lang:admin_moss_list_solutions_form_field_sensitivity', 'required|integer|greater_than[1]'); $this->form_validation->set_rules('moss_setup[n]', 'lang:admin_moss_list_solutions_form_field_matching_files', 'required|integer|greater_than[1]'); $this->form_validation->set_message('_selected_solutions', $this->lang->line('admin_moss_list_solutions_validation_callback_selected_solutions')); if ($this->form_validation->run() && $this->is_moss_user_id_set()) { $solutions = new Solution(); $solutions->include_related('student'); $solutions->where_related($task_set); $solutions->order_by_related_as_fullname('student', 'fullname', 'asc'); $solutions->get_iterated(); $this->parser->assign('solutions', $solutions); $tasks = new Task(); $tasks->where_related($task_set); $tasks->get_iterated(); $base_files_list = array(); foreach ($tasks as $task) { $base_files_list[$task->id] = array('task_id' => $task->id, 'task_name' => $this->lang->get_overlay_with_default('tasks', $task->id, 'name', $task->name), 'files' => $this->construct_base_files_for_task($task->id)); } $this->parser->assign('base_files_list', $base_files_list); $path = $this->get_random_hash_folder($course->id, $task_set->id); $path_source = $path . '/source'; $path_base = $path . '/base'; @mkdir($path_source, DIR_WRITE_MODE, TRUE); @mkdir($path_base, DIR_WRITE_MODE, TRUE); $all_extracted = TRUE; $moss_langs_extensions = $this->config->item('moss_langs_file_extensions'); if (isset($moss_langs_extensions[$moss_setup_data['l']])) { $file_extensions = $moss_langs_extensions[$moss_setup_data['l']]; } else { $all_extracted = FALSE; } foreach ($solutions_data as $id => $config) { if (!$all_extracted) { break; } if (isset($config['selected']) && $config['selected'] == 1) { set_time_limit(120); $version = isset($config['version']) ? $config['version'] : 0; $student = isset($config['student']) ? $config['student'] : 0; $file = $task_set->get_student_files($student, $version); if (count($file) == 1) { $file = $file[$version]; $subdir = '/' . normalize($file['file_name']) . '_sid-' . $file['student_id'] . '_ver-' . $file['version']; $extract_path = $path_source . $subdir; @mkdir($extract_path, DIR_WRITE_MODE, TRUE); $status = $task_set->extract_student_zip_to_folder($file['file'], $extract_path, $file_extensions); $all_extracted = $all_extracted && $status; } } } if (is_array($moss_base_files_data) && count($moss_base_files_data)) { foreach ($moss_base_files_data as $task_id => $path_array) { if (!$all_extracted) { break; } if (is_array($path_array) && count($path_array)) { foreach ($path_array as $path_hash => $file_path) { if (!$all_extracted) { break; } if (preg_match('/\\.zip(?P<indexNumberBox>\\[(?P<zipIndexNumber>[0-9]+)\\])$/', $file_path, $matches)) { $zipfile = mb_substr($file_path, 0, mb_strlen($file_path) - mb_strlen($matches['indexNumberBox'])); $zipindex = (int) $matches['zipIndexNumber']; $zip = new ZipArchive(); if ($zip->open($zipfile)) { set_time_limit(120); @mkdir($path_base . '/' . $task_id . '/' . $path_hash, DIR_WRITE_MODE, TRUE); if (!$zip->extractTo($path_base . '/' . $task_id . '/' . $path_hash, $zip->getNameIndex($zipindex))) { $all_extracted = FALSE; } $zip->close(); } else { $all_extracted = FALSE; } } else { set_time_limit(120); @mkdir($path_base . '/' . $task_id . '/' . $path_hash, DIR_WRITE_MODE, TRUE); $path_info = pathinfo($file_path); if (!copy($file_path, $path_base . '/' . $task_id . '/' . $path_hash . '/' . $path_info['basename'])) { $all_extracted = FALSE; } } } } } } if (!$all_extracted) { unlink_recursive($path, TRUE); } $this->parser->assign('all_extracted', $all_extracted); $this->parser->assign('path', $path); $this->parser->assign('moss_config', $moss_setup_data); $this->parser->parse('backend/moss/run_comparation.tpl'); } else { $this->list_solutions(); } } }
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)); }
public function run_comparation() { $task_sets_setup_data = $this->input->post('task_sets_setup'); $solutions_data = $this->input->post('solutions'); $comparator_setup_data = $this->input->post('comparator_setup'); $course = new Course(); $course->get_by_id((int) $task_sets_setup_data['course']); $task_set = new Task_set(); $task_set->where_related($course); $task_set->get_by_id(isset($task_sets_setup_data['task_set']) ? (int) $task_sets_setup_data['task_set'] : 0); $this->parser->assign(array('course' => $course, 'task_set' => $task_set)); if ($course->exists() && $task_set->exists()) { $this->load->library('form_validation'); $this->form_validation->set_rules('solutions', 'lang:admin_comparator_list_solutions_form_field_solution_selection', 'callback__selected_solutions'); $this->form_validation->set_rules('comparator_setup[threshold]', 'lang:admin_comparator_list_solutions_form_field_threshold', 'required|numeric|greater_than_equal[0]|less_than_equal[1]'); $this->form_validation->set_rules('comparator_setup[min_tree_size]', 'lang:admin_comparator_list_solutions_form_field_min_tree_size', 'required|integer|greater_than_equal[1]'); $this->form_validation->set_rules('comparator_setup[max_cutted_tree_size]', 'lang:admin_comparator_list_solutions_form_field_max_cutted_tree_size', 'required|integer|greater_than_field_or_equal[comparator_setup[min_tree_size]]'); $this->form_validation->set_rules('comparator_setup[branching_factor]', 'lang:admin_comparator_list_solutions_form_field_branching_factor', 'required|integer|greater_than_equal[1]'); $this->form_validation->set_rules('comparator_setup[min_similarity]', 'lang:admin_comparator_list_solutions_form_field_minimum_similarity', 'required|numeric|greater_than_equal[0]|less_than_equal[1]'); $this->form_validation->set_rules('comparator_setup[timeout]', 'lang:admin_comparator_list_solutions_form_field_timeout', 'required|integer|greater_than_equal[1]'); $this->form_validation->set_message('_selected_solutions', $this->lang->line('admin_comparator_list_solutions_validation_callback_selected_solutions')); if ($this->form_validation->run()) { $solutions = new Solution(); $solutions->include_related('student'); $solutions->where_related($task_set); $solutions->order_by_related_as_fullname('student', 'fullname', 'asc'); $solutions->get_iterated(); $this->parser->assign('solutions', $solutions); $path = $this->get_random_hash_folder($course->id, $task_set->id); $path_source = $path . '/source'; $path_output = $path . '/output'; @mkdir($path_source, DIR_WRITE_MODE, TRUE); @mkdir($path_output, DIR_WRITE_MODE, TRUE); $all_extracted = TRUE; foreach ($solutions_data as $id => $config) { if (isset($config['selected']) && $config['selected'] == 1) { set_time_limit(120); $version = isset($config['version']) ? $config['version'] : 0; $student = isset($config['student']) ? $config['student'] : 0; $file = $task_set->get_student_files($student, $version); if (count($file) == 1) { $file = $file[$version]; $subdir = '/' . normalize($file['file_name']) . '_sid-' . $file['student_id'] . '_ver-' . $file['version']; $extract_path = $path_source . $subdir; @mkdir($extract_path, DIR_WRITE_MODE, TRUE); $status = $task_set->extract_student_zip_to_folder($file['file'], $extract_path, array('java')); $all_extracted = $all_extracted && $status; } } } if (!$all_extracted) { unlink_recursive($path, TRUE); } $this->parser->assign('all_extracted', $all_extracted); $this->parser->assign('path', $path); $this->parser->assign('comparator_config', array('t' => $comparator_setup_data['threshold'], 'm' => $comparator_setup_data['min_tree_size'], 'cut' => $comparator_setup_data['max_cutted_tree_size'], 'bf' => $comparator_setup_data['branching_factor'], 'mp' => $comparator_setup_data['min_similarity'], 'timeout' => $comparator_setup_data['timeout'] * 60000)); $this->parser->parse('backend/comparator/run_comparation.tpl'); } else { $this->list_solutions(); } } else { $this->list_solutions(); } }
} $students = Student::get_by_sql("SELECT * FROM " . T_STUDENTS . " ORDER BY {$sidx} {$sord} LIMIT {$start} , {$limit}"); if (isset($_GET['searchString']) && isset($_GET['searchField'])) { $searchString = $_GET['searchString']; $searchField = $_GET['searchField']; $students = Student::get_by_sql("SELECT * FROM " . T_STUDENTS . " WHERE " . $searchField . " LIKE '%" . $searchString . "%' ORDER BY {$sidx} {$sord} LIMIT {$start} , {$limit}"); } else { $students = Student::get_by_sql("SELECT * FROM " . T_STUDENTS . " ORDER BY {$sidx} {$sord} LIMIT {$start} , {$limit}"); } header("Content-type: text/xml;charset=utf-8"); $s = "<?xml version='1.0' encoding='utf-8'?>"; $s .= "<rows>"; $s .= "<page>" . $page . "</page>"; $s .= "<total>" . $total_pages . "</total>"; $s .= "<records>" . $count . "</records>"; foreach ($students as $student) { $s .= "<row id='" . $student->id . "'>"; $s .= "<cell></cell>"; $s .= "<cell>" . $student->id . "</cell>"; $s .= "<cell>" . $student->student_id . "</cell>"; $s .= "<cell>" . $student->password . "</cell>"; $s .= "<cell>" . $student->first_name . "</cell>"; $s .= "<cell>" . $student->middle_name . "</cell>"; $s .= "<cell>" . $student->last_name . "</cell>"; $s .= "<cell>" . Course::get_by_id($student->course_id)->code . "</cell>"; $s .= "<cell>" . $student->semester . "</cell>"; $s .= "<cell>" . $student->year . "</cell>"; $s .= "</row>"; } $s .= "</rows>"; echo $s;
public function get_task_set_group_rooms($course_id, $group_id, $selected_id = NULL, $task_set_id = NULL) { $course = new Course(); $course->get_by_id($course_id); $course->group->get_by_id($group_id); $query = $course->group->room->order_by('name', 'asc')->get_raw(); $rooms = array('' => ''); $days = get_days(); include APPPATH . 'third_party/Smarty/plugins/modifier.is_time.php'; if ($query->num_rows() > 0) { foreach ($query->result() as $row) { $rooms[$row->id] = $this->lang->text($row->name) . ' (' . $days[$row->time_day] . ': ' . smarty_modifier_is_time($row->time_begin) . ' - ' . smarty_modifier_is_time($row->time_end) . ')'; } } $query->free_result(); $task_set = new Task_set(); $task_set->where_related_course('id', $course_id)->get_by_id($task_set_id); $this->parser->parse('backend/task_sets/task_set_group_rooms_options.tpl', array('rooms' => $rooms, 'task_set' => $task_set, 'selected_id' => $selected_id)); }
public function switch_prefered_course($course_id, $current_url) { $this->usermanager->teacher_login_protected_redirect(); $this->_transaction_isolation(); $this->db->trans_begin(); $teacher = new Teacher(); $teacher->get_by_id($this->usermanager->get_teacher_id()); if ($teacher->exists()) { $course = new Course(); $course->get_by_id($course_id); if ($teacher->save(array('prefered_course' => $course))) { $this->db->trans_commit(); $this->usermanager->refresh_teacher_userdata(); $this->messages->add_message('lang:admin_teachers_prefered_course_quickchange_success', Messages::MESSAGE_TYPE_DEFAULT); $this->load->library('filter'); $this->filter->set_all_filters_course($teacher->prefered_course_id); } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_teachers_prefered_course_quickchange_failed', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_teachers_prefered_course_quickchange_failed', Messages::MESSAGE_TYPE_ERROR); } redirect(decode_from_url($current_url)); }
<?php require_once "../includes/initialize.php"; global $session; if (!$session->is_logged_in()) { redirect_to("index.php"); } if ($_POST['oper'] == 'add') { $course = new Course(); $course->code = $_POST['code']; $course->description = $_POST['description']; $course->curriculum_id = $_POST['curriculum_id']; $course->create(); } else { if ($_POST['oper'] == 'edit') { $course = Course::get_by_id($_POST['id']); $course->code = $_POST['code']; $course->description = $_POST['description']; $course->curriculum_id = $_POST['curriculum_id']; $course->update(); } else { if ($_POST['oper'] == 'del') { Course::get_by_id($_POST['id'])->delete(); } } }
private function get_valuation_table_data($course_id, $group_id = NULL, $condensed = FALSE) { $table_data = array('header' => array(), 'content' => array()); $course = new Course(); $course->get_by_id(intval($course_id)); $group = new Group(); $group->get_by_id((int) $group_id); if ($course->exists()) { $students = new Student(); $students->select('id, fullname, email'); $students->include_related('participant/group', array('id', 'name')); $students->where_related('participant/course', 'id', $course->id); $students->where_related('participant', 'allowed', 1); $students->order_by_as_fullname('fullname'); if ($group->exists()) { $students->where_related('participant/group', 'id', (int) $group_id); } $students->get_iterated(); $task_sets_out_of_group_ids = array(0); $task_sets_data = array(); $task_sets_ids = array(); $projects_ids = array(); if ($group->exists()) { $students_filter = new Student(); $students_filter->select('id'); $students_filter->where_related('participant/course', 'id', $course->id); $students_filter->where_related('participant', 'allowed', 1); $students_filter->where_related('participant/group', 'id', (int) $group->id); $solutions_filter = new Solution(); $solutions_filter->select('id'); $solutions_filter->where_in_subquery('student_id', $students_filter); $task_sets_out_of_group = new Task_set(); $task_sets_out_of_group->select('id'); $task_sets_out_of_group->where_in_subquery('id', $solutions_filter); $task_sets_out_of_group->where('published', 1); $task_sets_out_of_group->get(); $task_sets_out_of_group_ids = $task_sets_out_of_group->all_to_single_array('id'); $task_sets_out_of_group_ids[] = 0; } $content_type_task_set = new Task_set(); $content_type_task_set->select('id, name, content_type, group_id, task_set_type_id'); $content_type_task_set->include_related('task_set_type', 'name'); $content_type_task_set->include_related('group', 'name'); $content_type_task_set->where('content_type', 'task_set'); $content_type_task_set->where('published', 1); $content_type_task_set->where_related_course($course); $content_type_task_set->order_by_related_with_constant('task_set_type', 'name', 'asc'); $content_type_task_set->order_by('task_set_type_id', 'asc'); $content_type_task_set->order_by('publish_start_time', 'asc'); if ($group->exists()) { $content_type_task_set->group_start(); $content_type_task_set->group_start('', 'OR '); $content_type_task_set->group_start(); $content_type_task_set->or_where('group_id', NULL); $content_type_task_set->or_where('group_id', (int) $group_id); $content_type_task_set->group_end(); $content_type_task_set->where_subquery(0, '(SELECT COUNT(`tsp`.`id`) AS `count` FROM `task_set_permissions` tsp WHERE `tsp`.`task_set_id` = `task_sets`.`id` AND `tsp`.`enabled` = 1)'); $content_type_task_set->group_end(); $content_type_task_set->group_start('', 'OR '); $content_type_task_set->where_related('task_set_permission', 'group_id', (int) $group_id); $content_type_task_set->where_related('task_set_permission', 'enabled', 1); $content_type_task_set->group_end(); $content_type_task_set->or_where_in('id', $task_sets_out_of_group_ids); $content_type_task_set->group_end(); } $content_type_task_set->get(); $header_items = array(); if ($content_type_task_set->result_count() > 0) { $last_task_set_type_id = NULL; foreach ($content_type_task_set->all as $task_set) { $permissions = new Task_set_permission(); $permissions->select('id, group_id'); $permissions->include_related('group', 'name'); $permissions->where_related_task_set($task_set); $permissions->where('enabled', 1); $permissions->get_iterated(); if ($permissions->result_count() > 0) { $group_ids = array(); $group_names = array(); foreach ($permissions as $permission) { $group_ids[] = $permission->group_id; $group_names[] = $this->lang->text($permission->group_name); } $task_sets_data[$task_set->id] = array('group_id' => $group_ids, 'group_name' => $group_names); } else { $task_sets_data[$task_set->id] = array('group_id' => array($task_set->group_id), 'group_name' => $this->lang->text($task_set->group_name)); } if ($task_set->task_set_type_id !== $last_task_set_type_id) { $last_task_set_type_id = $task_set->task_set_type_id; $header_items[] = array('type' => 'task_set_type', 'id' => $task_set->task_set_type_id, 'name' => $this->lang->text($task_set->task_set_type_name), 'title' => ''); } if (!$condensed) { $header_items[] = array('type' => 'task_set', 'id' => $task_set->id, 'name' => $this->lang->get_overlay_with_default('task_sets', $task_set->id, 'name', $task_set->name), 'title' => is_array($task_sets_data[$task_set->id]['group_name']) ? implode(', ', $task_sets_data[$task_set->id]['group_name']) : $task_sets_data[$task_set->id]['group_name']); } $task_sets_ids[] = $task_set->id; } } $table_data['header']['content_type_task_set'] = array('content_type_name' => $this->lang->line('admin_solutions_valuation_tables_header_content_type_task_sets'), 'items' => $header_items); $content_type_project = new Task_set(); $content_type_project->where('content_type', 'project'); $content_type_project->where('published', 1); $content_type_project->where_related_course($course); $content_type_project->order_by_related_with_constant('task_set_type', 'name', 'asc'); $content_type_project->order_by('publish_start_time', 'asc'); $content_type_project->get(); $header_items = array(); if ($content_type_project->result_count() > 0) { foreach ($content_type_project->all as $project) { if (!$condensed) { $header_items[] = array('type' => 'task_set', 'id' => $project->id, 'name' => $this->lang->get_overlay_with_default('task_sets', $project->id, 'name', $project->name), 'title' => ''); } $projects_ids[] = $project->id; } } $table_data['header']['content_type_project'] = array('content_type_name' => $this->lang->line('admin_solutions_valuation_tables_header_content_type_project'), 'items' => $header_items); foreach ($students as $student) { $student_line = array('fullname' => $student->fullname, 'email' => $student->email, 'id' => $student->id, 'total_points' => 0, 'task_sets_points' => array(), 'task_sets_points_total' => 0, 'projects_points' => array(), 'projects_points_total' => 0); $solutions_data = array(); if ($content_type_task_set->result_count() > 0 || $content_type_project->result_count() > 0) { $solutions = new Solution(); $solutions->select('task_set_id, points, tests_points, not_considered, revalidate'); $solutions->where_related_student($student); $solutions->group_start(); if (count($task_sets_ids) > 0) { $solutions->or_where_in('task_set_id', $task_sets_ids); } if (count($projects_ids) > 0) { $solutions->or_where_in('task_set_id', $projects_ids); } $solutions->group_end(); $solutions->get_iterated(); foreach ($solutions as $solution) { $solutions_data[$solution->task_set_id] = array('points' => is_null($solution->points) && is_null($solution->tests_points) ? NULL : $solution->points + $solution->tests_points, 'not_considered' => $solution->not_considered, 'revalidate' => $solution->revalidate); } } $task_sets_points_array = array(); if ($content_type_task_set->result_count() > 0) { $task_sets_points = 0; $last_task_set_type_id = NULL; $last_task_set_type_key = NULL; foreach ($content_type_task_set->all as $task_set) { if ($last_task_set_type_id !== $task_set->task_set_type_id) { $last_task_set_type_id = $task_set->task_set_type_id; $task_sets_points_array[] = array('type' => 'task_set_type', 'points' => 0, 'flag' => 'ok'); $last_task_set_type_key = count($task_sets_points_array) - 1; } $points = 0; if (isset($solutions_data[$task_set->id])) { if ($solutions_data[$task_set->id]['not_considered']) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => '*', 'flag' => 'notConsidered'); } } else { if (is_null($solutions_data[$task_set->id]['points'])) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => '!', 'flag' => 'revalidate'); } } elseif ($solutions_data[$task_set->id]['revalidate']) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => $solutions_data[$task_set->id]['points'], 'flag' => 'revalidate'); } $points = floatval($solutions_data[$task_set->id]['points']); } else { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => $solutions_data[$task_set->id]['points'], 'flag' => 'ok'); } $points = floatval($solutions_data[$task_set->id]['points']); } } } else { if (!$condensed) { if (!is_null($task_sets_data[$task_set->id]['group_id'][0]) && !in_array($student->participant_group_id, $task_sets_data[$task_set->id]['group_id'])) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => '-', 'flag' => 'notInGroup'); } else { $task_sets_points_array[] = array('type' => 'task_set', 'points' => 'x', 'flag' => 'notSubmitted'); } } } $task_sets_points += $points; $task_sets_points_array[$last_task_set_type_key]['points'] += $points; $student_line['total_points'] += $points; $student_line['task_sets_points_total'] = $task_sets_points; } } $student_line['task_sets_points'] = $task_sets_points_array; $task_sets_points_array = array(); if ($content_type_project->result_count() > 0) { $task_sets_points = 0; foreach ($content_type_project as $task_set) { $points = 0; if (isset($solutions_data[$task_set->id])) { if ($solutions_data[$task_set->id]['not_considered']) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => '*', 'flag' => 'notConsidered'); } } else { if (is_null($solutions_data[$task_set->id]['points'])) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => '!', 'flag' => 'revalidate'); } } elseif ($solutions_data[$task_set->id]['revalidate']) { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => $solutions_data[$task_set->id]['points'], 'flag' => 'revalidate'); } $points = floatval($solutions_data[$task_set->id]['points']); } else { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => $solutions_data[$task_set->id]['points'], 'flag' => 'ok'); } $points = floatval($solutions_data[$task_set->id]['points']); } } } else { if (!$condensed) { $task_sets_points_array[] = array('type' => 'task_set', 'points' => 'x', 'flag' => 'notSubmitted'); } } $task_sets_points += $points; $student_line['total_points'] += $points; $student_line['projects_points_total'] = $task_sets_points; } } $student_line['projects_points'] = $task_sets_points_array; $table_data['content'][] = $student_line; } } return $table_data; }
<body> <div id="main_container"> <header id="main_header"> <h1>Subject Evaluation System</h1> <h2>Student ID <?php echo Student::get_by_id($student_id)->student_id; ?> </h2> <h2>Subjects and Grades of <?php echo Student::get_by_id($student_id)->get_full_name(); ?> </h2> <h2>Course <?php echo Course::get_by_id(Student::get_by_id($student_id)->course_id)->code; ?> </h2> <h2>Semester <?php echo Student::get_by_id($student_id)->semester; ?> </h2> <h2>Year <?php echo Student::get_by_id($student_id)->year; ?> </h2> </header> <section id="main_section"> <section id="main_content">
public function show_details($course_id, $lang = NULL) { $this->parser->add_css_file('frontend_courses.css'); if (!is_null($lang)) { $this->_init_specific_language($lang); } $cache_id = 'course_' . $course_id . '|lang_' . $this->lang->get_current_idiom(); if (!$this->_is_cache_enabled() || !$this->parser->isCached($this->parser->find_view('frontend/courses/course_details.tpl'), $cache_id)) { $course = new Course(); $course->include_related('period'); $course->get_by_id($course_id); smarty_inject_days(); $this->parser->assign(array('course' => $course)); } $this->parser->parse('frontend/courses/course_details.tpl', array(), FALSE, $this->_is_cache_enabled(), $cache_id); }
<link href="css/ui.jqgrid.css" rel="stylesheet" media="screen" /> </head> <body> <div id="main_container"> <header id="main_header"> <h1>Subject Evaluation System</h1> <h2>Subjects and Grades of <?php echo Student::get_by_id($_GET['student_id'])->get_full_name(); ?> </h2> <h2>Course <?php echo Course::get_by_id(Student::get_by_id($_GET['student_id'])->course_id)->code; ?> </h2> <h2>Semester <?php echo Student::get_by_id($_GET['student_id'])->semester; ?> </h2> <h2>Year Level <?php echo Student::get_by_id($_GET['student_id'])->year; ?> </h2> </header> <section id="main_section"> <section id="main_content">
require_once "../../includes/initialize.php"; $student_id = $_GET['student_id']; $date = $_GET['date']; $eval_subjects = EvaluatedSubject::get_by_sql("SELECT * FROM " . T_EVALUATED_SUBJECTS . " WHERE " . C_EVALUATED_STUDENT_ID . "=" . $student_id . " AND date = '" . $date . "'"); $s = "<table>"; $s .= "<tr>"; $s .= "<td>CODE</td>"; $s .= "<td>DESCRIPTION</td>"; $s .= "<td>UNITS</td>"; $s .= "<td>PREREQUISITE</td>"; $s .= "<td>COURSE</td>"; $s .= "<td>YEAR</td>"; $s .= "<td>SEMESTER</td>"; $s .= "<td>DATE EVALUATED</td>"; $s .= "</tr>"; foreach ($eval_subjects as $eval_subject) { $subject = Subject::get_by_id($eval_subject->subject_id); $s .= "<tr>"; $s .= "<td>" . $subject->code . "</td>"; $s .= "<td>" . $subject->description . "</td>"; $s .= "<td>" . $subject->units . "</td>"; $subject_code = $subject->prereq_subject_id == 0 ? "NONE" : Subject::get_by_id($subject->prereq_subject_id)->code; $s .= "<td>" . $subject_code . "</td>"; $s .= "<td>" . Course::get_by_id($subject->course_id)->code . "</td>"; $s .= "<td>" . $subject->year . "</td>"; $s .= "<td>" . $subject->semester . "</td>"; $s .= "<td>" . $eval_subject->date . "</td>"; $s .= "</tr>"; } $s .= "</table>"; echo $s;
td{ border-bottom: 1px solid black; } </style> <?php require_once "../../includes/initialize.php"; $students = Student::get_by_sql("SELECT * FROM " . T_STUDENTS); $s = "<table>"; $s .= "<tr>"; $s .= "<td>ID</td>"; $s .= "<td>FIRST NAME</td>"; $s .= "<td>MIDDLE NAME</td>"; $s .= "<td>LAST NAME</td>"; $s .= "<td>COURSE</td>"; $s .= "<td>SEMESTER</td>"; $s .= "<td>YEAR</td>"; $s .= "</tr>"; foreach ($students as $student) { $s .= "<tr>"; $s .= "<td>" . $student->student_id . "</td>"; $s .= "<td>" . $student->first_name . "</td>"; $s .= "<td>" . $student->middle_name . "</td>"; $s .= "<td>" . $student->last_name . "</td>"; $s .= "<td>" . Course::get_by_id($student->course_id)->code . "</td>"; $s .= "<td>" . $student->semester . "</td>"; $s .= "<td>" . $student->year . "</td>"; $s .= "</tr>"; } $s .= "</table>"; echo $s;
<tr> <td>CODE</td> <td>DESCRIPTION</td> <td>UNITS</td> <td>PREREQUISITE</td> <td>COURSE</td> <td>YEAR</td> <td>SEMESTER</td> <td>CURRICULUM</td> </tr> </thead> <?php $subjects = Subject::getByCurriculum($curriculumid); if (count($subjects) > 0) { foreach ($subjects as $subject) { $course = Course::get_by_id($subject->course_id); $curriculum = Curriculum::get_by_id($subject->curriculum_id); if ($subject->prereq_subject_id != "") { $prerequisitesubject = Subject::get_by_id($subject->prereq_subject_id); if (!$prerequisitesubject) { $prerequisitesubject = new Subject(); $prerequisitesubject->code = "NONE"; } } else { $prerequisitesubject = new Subject(); $prerequisitesubject->code = "NONE"; } if ($subject->semester == 1) { $subject->semester = "First"; } else { if ($subject->semester == 2) {