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');
 }
Example #2
0
 public function preConfigureForm()
 {
     $courses = new Course();
     $courses->include_related('period');
     $courses->order_by_related('period', 'sorting', 'asc');
     $courses->order_by_with_constant('name');
     $courses->get_iterated();
     $courses_list = array('' => '');
     foreach ($courses as $course) {
         $courses_list[$this->lang->text($course->period_name)][$course->id] = $this->lang->text($course->name);
     }
     $this->parser->assign('courses', $courses_list);
 }
Example #3
0
 /**
  * Loads and injects page navigation for student's frontend.
  * Also loads all courses, in which current student is participating.
  * Smarty template variable $list_pagemenu will be created.
  */
 protected function _initialize_student_menu()
 {
     $this->config->load('pagemenu');
     $this->parser->assign('list_pagemenu', $this->config->item('pagemenu'));
     $this->_load_student_langfile('pagemenu');
     if ($this->usermanager->is_student_session_valid()) {
         $courses = new Course();
         $courses->where_related('participant', 'student_id', $this->usermanager->get_student_id());
         $courses->where_related('participant', 'allowed', 1);
         $courses->include_related('period', 'name');
         $courses->order_by_related_with_constant('period', 'sorting', 'asc');
         $courses->order_by_with_constant('name', 'asc');
         $courses->get_iterated();
         $this->parser->assign('list_student_courses', $courses);
     }
 }
Example #4
0
 private function inject_courses()
 {
     $courses = new Course();
     $courses->include_related('period', 'name');
     $courses->order_by_related('period', 'sorting', 'ASC');
     $courses->order_by_with_constant('name', 'ASC');
     $courses->get_iterated();
     $this->parser->assign('courses', $courses);
 }
Example #5
0
 public function mail_to_course($course_id)
 {
     $course = new Course();
     $course->include_related('period', 'name');
     $course->get_by_id((int) $course_id);
     if ($course->exists()) {
         $groups = new Group();
         $groups->where_related_course('id', $course->id);
         $groups->order_by_with_constant('name', 'asc');
         $groups->get_iterated();
         $groups_students = array();
         foreach ($groups as $group) {
             $groups_students[$group->id] = array('name' => $group->name, 'students' => array());
         }
         $groups_students[0] = array('name' => 'lang:admin_courses_mail_to_course_group_name_unassigned_students', 'students' => array());
         $participants = new Participant();
         $participants->where('allowed', 1);
         $participants->include_related('student');
         $participants->where_related_course('id', $course->id);
         $participants->order_by_related_as_fullname('student', 'fullname', 'asc');
         $participants->get_iterated();
         foreach ($participants as $participant) {
             $groups_students[(int) $participant->group_id]['students'][(int) $participant->student_id] = array('fullname' => $participant->student_fullname, 'email' => $participant->student_email);
         }
         $this->parser->assign('groups_students', $groups_students);
     }
     $this->_add_tinymce4();
     $this->parser->add_js_file('admin_courses/mail_form.js');
     $this->parser->add_css_file('admin_courses.css');
     $this->parser->parse('backend/courses/mail_to_course.tpl', array('course' => $course));
 }
Example #6
0
 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);
 }
Example #7
0
 public function get_valuation_table()
 {
     $filter = $this->input->post('filter');
     $this->store_valuation_tables_filter($filter);
     $this->inject_stored_valuation_tables_filter();
     $this->parser->assign('table_data', $this->get_valuation_table_data(intval(@$filter['course']), @$filter['group'], (bool) @$filter['simple']));
     $course = new Course();
     $course->include_related('period');
     $course->get_by_id(intval(@$filter['course']));
     $group = new Group();
     $group->get_by_id(@$filter['group']);
     $this->parser->parse('backend/solutions/valuation_table_content.tpl', array('course' => $course, 'group' => $group));
 }
Example #8
0
 private function inject_courses()
 {
     $courses = new Course();
     $courses->include_related('period', 'name');
     $courses->order_by_related_with_constant('period', 'sorting', 'asc');
     $courses->order_by_with_constant('name');
     $courses->get_iterated();
     $data = array();
     foreach ($courses as $course) {
         $data[$this->lang->text($course->period_name)][$course->id] = $this->lang->text($course->name);
     }
     $this->parser->assign('courses', $data);
 }
Example #9
0
 private function get_task_set_by_id(&$course, &$group, &$student, $task_set_id)
 {
     $student = new Student();
     $student->get_by_id($this->usermanager->get_student_id());
     $course = new Course();
     $course->where_related('active_for_student', 'id', $student->id);
     $course->where_related('participant', 'student_id', $student->id);
     $course->where_related('participant', 'allowed', 1);
     $course->include_related('period', 'name');
     $course->get();
     $task_set = new Task_set();
     $task_set2 = new Task_set();
     $group = new Group();
     if ($course->exists()) {
         $group->where_related_participant('student_id', $student->id);
         $group->where_related_participant('course_id', $course->id);
         $group->get();
         $task_set->select('`task_sets`.*, `rooms`.`time_day` AS `pb_time_day`, `rooms`.`time_begin` AS `pb_time_begin`, `rooms`.`id` AS `pb_room_id`, `task_sets`.`publish_start_time` AS `pb_publish_start_time`, `task_sets`.`upload_end_time` AS `pb_upload_end_time`');
         $task_set->where('published', 1);
         $task_set->where_related_course($course);
         $task_set->include_related('solution');
         $task_set->add_join_condition('`solutions`.`student_id` = ?', array($student->id));
         $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)');
         $task_set->group_start();
         $task_set->or_where('group_id', NULL);
         $task_set->or_where('group_id', $group->id);
         $task_set->group_end();
         $task_set->include_related('room', '*', TRUE, TRUE);
         $task_set->include_related_count('task', 'total_tasks');
         $task_set->include_related('task_set_type');
         $task_set->select_subquery('(SELECT SUM(`points_total`) AS `points` FROM `task_task_set_rel` WHERE `task_set_id` = `${parent}`.`id` AND `task_task_set_rel`.`bonus_task` = 0)', 'total_points');
         $task_set->where('id', $task_set_id);
         $task_set->include_related('course', 'test_scoring_deadline');
         $task_set->where('content_type', 'task_set');
         $task_set2->select('`task_sets`.*, `task_set_permission_rooms`.`time_day` AS `pb_time_day`, `task_set_permission_rooms`.`time_begin` AS `pb_time_begin`, `task_set_permission_rooms`.`id` AS `pb_room_id`, `task_set_permissions`.`publish_start_time` AS `pb_publish_start_time`, `task_set_permissions`.`upload_end_time` AS `pb_upload_end_time`');
         $task_set2->where('published', 1);
         $task_set2->where_related_course($course);
         $task_set2->where_related('task_set_permission', 'group_id', $group->id);
         $task_set2->where_related('task_set_permission', 'enabled', 1);
         $task_set2->include_related('solution');
         $task_set2->add_join_condition('`solutions`.`student_id` = ?', array($student->id));
         $task_set2->include_related('task_set_permission/room', '*', 'room', TRUE);
         $task_set2->include_related_count('task', 'total_tasks');
         $task_set2->include_related('task_set_type');
         $task_set2->select_subquery('(SELECT SUM(`points_total`) AS `points` FROM `task_task_set_rel` WHERE `task_set_id` = `${parent}`.`id` AND `task_task_set_rel`.`bonus_task` = 0)', 'total_points');
         $task_set2->where('id', $task_set_id);
         $task_set2->include_related('course', 'test_scoring_deadline');
         $task_set2->where('content_type', 'task_set');
         $task_set3 = new Task_set();
         $task_set3->select('`task_sets`.*, NULL AS `pb_time_day`, NULL AS `pb_time_begin`, NULL AS `pb_room_id`, NULL AS `pb_publish_start_time`, "0000-00-00 00:00:00" AS `pb_upload_end_time`', FALSE);
         $task_set3->where('published', 1);
         $task_set3->where_related_course($course);
         $task_set3->include_related('solution');
         $task_set3->add_join_condition('`solutions`.`student_id` = ?', array($student->id));
         $task_set3->where_related('solution', 'student_id', $student->id);
         $task_set3->include_related('room', '*', TRUE, TRUE);
         $task_set3->include_related_count('task', 'total_tasks');
         $task_set3->include_related('task_set_type');
         $task_set3->select_subquery('(SELECT SUM(`points_total`) AS `points` FROM `task_task_set_rel` WHERE `task_set_id` = `${parent}`.`id` AND `task_task_set_rel`.`bonus_task` = 0)', 'total_points');
         $task_set3->where('id', $task_set_id);
         $task_set3->include_related('course', 'test_scoring_deadline');
         $task_set3->where('content_type', 'task_set');
         $task_set2->union(array($task_set, $task_set3), FALSE, '', 1, 0, 'id');
     }
     return $task_set2;
 }
Example #10
0
 private function get_task_set_overview($task_set_id, &$course)
 {
     $task_set = new Task_set();
     $task_set->where('published', 1);
     $task_set->include_related_count('task', 'total_tasks');
     $task_set->where('content_type', 'project');
     $task_set->order_by('publish_start_time', 'asc');
     $task_set->order_by('upload_end_time', 'asc');
     $task_set->order_by_with_overlay('name', 'asc');
     $task_set->get_by_id((int) $task_set_id);
     $course = new Course();
     $course->where_related('task_set', 'id', (int) $task_set->id);
     $course->include_related('period');
     $course->get();
     return $task_set;
 }