예제 #1
0
 public function get_student_test_queue_all($task_set_id, $student_id)
 {
     $task_set = new Task_set();
     $task_set->get_by_id((int) $task_set_id);
     $student = new Student();
     $student->get_by_id((int) $student_id);
     $test_queue = new Test_queue();
     if ($task_set->exists() && $student->exists()) {
         $test = new Test();
         $test->select_func('COUNT', array('@id'), 'tests_count');
         $test->where_related('test_queue', 'id', '${parent}.id');
         $test_queue->select('*');
         //$test_queue->select_func('COUNT', array('@test/id'), 'tests_count');
         $test_queue->select_subquery($test, 'tests_count');
         $test_queue->where_related($task_set);
         $test_queue->where_related($student);
         $test_queue->order_by('status', 'desc');
         $test_queue->order_by('finish', 'desc');
         $test_queue->order_by('start', 'asc');
         $test_queue->get_iterated();
     }
     //$test_queue->check_last_query();
     $this->load->helper('tests');
     $test_types = get_all_supported_test_types();
     $this->parser->parse('backend/tests/get_student_test_queue_all.tpl', array('test_queue' => $test_queue, 'task_set' => $task_set, 'student' => $student, 'test_types' => $test_types));
 }
예제 #2
0
 public function reset_all()
 {
     echo 'Reseting old tests that may be freezed.' . PHP_EOL;
     $this->db->query('SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
     $this->db->trans_start();
     $test_queue = new Test_queue();
     $test_queue->where('status', 1);
     $test_queue->get_iterated();
     if ($test_queue->result_count() > 0) {
         echo 'Found ' . $test_queue->result_count() . ' old tests.' . PHP_EOL;
         foreach ($test_queue as $single_test) {
             $tests = $single_test->test->get_iterated();
             foreach ($tests as $test) {
                 $set = array('result' => 0, 'result_text' => NULL, 'percent_points' => 0, 'percent_bonus' => 0, 'points' => 0, 'bonus' => 0, 'evaluation_table' => NULL);
                 $this->db->set($set);
                 $this->db->where('test_id', $test->id);
                 $this->db->where('test_queue_id', $single_test->id);
                 $this->db->update('test_test_queue_rel');
             }
             $single_test->status = 0;
             $single_test->worker = NULL;
             $single_test->save();
         }
         echo 'All old tests were reset.' . PHP_EOL;
     } else {
         echo 'Nothing found.' . PHP_EOL;
     }
     $this->db->trans_complete();
 }