public function update_valuation($task_set_id, $solution_id) { $this->load->library('form_validation'); $this->form_validation->set_rules('solution[points]', 'lang:admin_solutions_valuation_form_field_points', 'required|floatpoint'); $this->form_validation->set_rules('solution[tests_points]', 'lang:admin_solutions_valuation_form_field_tests_points', 'trim|callback__tests_points_value_check'); $this->form_validation->set_message('_tests_points_value_check', $this->lang->line('admin_solutions_valuation_form_field_tests_points_value_check_error')); if ($this->form_validation->run()) { $this->_transaction_isolation(); $this->db->trans_begin(); $solution = new Solution(); $solution->where('task_set_id', intval($task_set_id)); $solution->get_by_id($solution_id); if ($solution->exists()) { $solution_data = $this->input->post('solution'); if ($solution->comment != $solution_data['comment'] || $solution->points != floatval($solution_data['points']) || $solution->not_considered != intval($solution_data['not_considered'])) { $solution->teacher_id = $this->usermanager->get_teacher_id(); } $solution->from_array($solution_data, array('points', 'comment', 'not_considered', 'disable_evaluation_by_tests')); $solution->tests_points = isset($solution_data['tests_points']) && $solution_data['tests_points'] !== '' ? $solution_data['tests_points'] : NULL; $solution->revalidate = 0; if ($solution->save() && $this->db->trans_status()) { $this->db->trans_commit(); $this->messages->add_message('lang:admin_solutions_valuation_solution_saved', Messages::MESSAGE_TYPE_SUCCESS); $this->_action_success(); $this->output->set_internal_value('student_id', $solution->student_id); } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_solutions_valuation_solution_not_saved', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_solutions_valuation_solution_not_found', Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('admin_solutions/valuation/' . $task_set_id . '/' . $solution_id . '/' . $this->uri->assoc_to_uri($this->uri->ruri_to_assoc(5)))); } else { $this->valuation($task_set_id, $solution_id); } }