Example #1
0
 public function task($task_set_id_url = NULL)
 {
     $this->_add_mathjax();
     $task_set_id = url_get_id($task_set_id_url);
     $this->usermanager->student_login_protected_redirect();
     $this->_initialize_student_menu();
     $this->_select_student_menu_pagetag('tasks');
     $this->parser->add_css_file('frontend_tasks.css');
     $this->parser->add_js_file('tasks/task.js');
     $this->_add_prettify();
     $this->_add_scrollTo();
     $this->_add_jquery_countdown();
     $this->parser->assign('max_filesize', compute_size_with_unit(intval($this->config->item('maximum_solition_filesize') * 1024)));
     $cache_id = $this->usermanager->get_student_cache_id('task_set_' . $task_set_id);
     if (!$this->_is_cache_enabled() || !$this->parser->isCached($this->parser->find_view('frontend/tasks/task.tpl'), $cache_id)) {
         $task_set = $this->get_task_set_by_id($course, $group, $student, $task_set_id);
         if ($course->exists()) {
             $task_sets = $this->filter_valid_task_sets($task_set);
             $this->lang->init_overlays('task_sets', $task_sets, array('name'));
             $filtered_task_set = count($task_sets) == 1 ? $task_sets[0] : new Task_set();
             if ($filtered_task_set->exists()) {
                 $this->load->helper('tests');
                 $test_types_subtypes = get_all_supported_test_types_and_subtypes();
                 $this->lang->init_overlays('task_sets', $filtered_task_set, array('name', 'instructions'));
                 $solution_versions = new Solution_version();
                 $solution_versions->where_related('solution/task_set', 'id', $task_set_id);
                 $solution_versions->where_related('solution', 'student_id', $this->usermanager->get_student_id());
                 $query = $solution_versions->get_raw();
                 $versions_metadata = array();
                 if ($query->num_rows()) {
                     foreach ($query->result() as $row) {
                         $versions_metadata[$row->version] = clone $row;
                     }
                 }
                 $query->free_result();
                 $this->parser->assign('task_set', $filtered_task_set);
                 $this->parser->assign('task_set_can_upload', $this->can_upload_file($filtered_task_set, $course));
                 $this->parser->assign('solution_files', $filtered_task_set->get_student_files($student->id));
                 $this->parser->assign('test_types', $test_types_subtypes['types']);
                 $this->parser->assign('test_subtypes', $test_types_subtypes['subtypes']);
                 $this->parser->assign('versions_metadata', $versions_metadata);
             } else {
                 $this->messages->add_message('lang:tasks_task_task_set_not_found', Messages::MESSAGE_TYPE_ERROR);
                 redirect(create_internal_url('tasks/index'));
             }
         }
         $this->parser->assign(array('course' => $course));
     }
     $this->parser->parse('frontend/tasks/task.tpl', array(), FALSE, $this->_is_cache_enabled(), $cache_id);
 }
Example #2
0
 public function valuation($task_set_id, $solution_id)
 {
     $this->_add_mathjax();
     $solution = new Solution();
     $solution->select('`solutions`.*');
     $solution->select_subquery('(SELECT SUM(`points_total`) AS `points` FROM `task_task_set_rel` WHERE `task_set_id` = `task_sets`.`id` AND `task_task_set_rel`.`bonus_task` = 0)', 'task_set_total_points');
     $solution->include_related('task_set', '*', TRUE, TRUE);
     $solution->include_related('task_set/course', 'name');
     $solution->include_related('task_set/course/period', 'name');
     $solution->include_related('task_set/group', 'name');
     $solution->include_related('student', array('fullname', 'email'));
     $solution->include_related('teacher', array('fullname', 'email'));
     $solution->where('student_id IS NOT NULL');
     $solution->where('task_set_id', $task_set_id);
     $solution->get_by_id($solution_id);
     $group = new Group();
     $group->where_related('participant', 'student_id', $solution->student_id);
     $group->where_related('participant/course/task_set', 'id', $task_set_id);
     $group->get();
     $project_selection = new Project_selection();
     $project_selection->select('`project_selections`.*, `task_task_task_set_rel`.`internal_comment` AS `task_join_internal_comment`');
     $project_selection->include_related('task', '*', TRUE, TRUE);
     $project_selection->include_related('task/task_set', array('id', 'name'));
     $project_selection->where('task_set_id', $solution->task_set_id);
     $project_selection->where('student_id', $solution->student_id);
     $project_selection->where('task_task_sets.id', $solution->task_set_id);
     $project_selection->get();
     $this->load->helper('tests');
     $test_types_subtypes = get_all_supported_test_types_and_subtypes();
     $this->parser->add_js_file('jquery.activeform.js');
     $this->parser->add_js_file('admin_solutions/valuation.js');
     $this->parser->add_css_file('admin_solutions.css', array('media' => ''));
     $this->_add_prettify();
     $this->parser->parse('backend/solutions/valuation.tpl', array('solution' => $solution, 'group' => $group, 'test_types' => $test_types_subtypes['types'], 'test_subtypes' => $test_types_subtypes['subtypes'], 'project_selection' => $project_selection, 'add_url' => $this->uri->assoc_to_uri($this->uri->ruri_to_assoc(5))));
 }
Example #3
0
 public function all_tests($task_id)
 {
     $this->load->helper('tests');
     $tests_data = get_all_supported_test_types_and_subtypes();
     $task = new Task();
     $task->get_by_id($task_id);
     $tests = new Test();
     if ($task->exists()) {
         $tests->where_related($task);
         $tests->order_by('type', 'asc');
         $tests->order_by('subtype', 'asc');
         $tests->get_iterated();
     }
     $this->parser->parse('backend/tests/all_tests.tpl', array('test_types' => $tests_data['types'], 'test_subtypes' => $tests_data['subtypes'], 'task' => $task, 'tests' => $tests));
 }