MDL-11433 Implemented grade_items.decimals instead of user preference in grader report.
[moodle-pu.git] / grade / edit / tree / item.php
bloba44b87e63f00db24e93aa238d0ce4a80692a83e3
1 <?php //$Id$
3 require_once '../../../config.php';
4 require_once $CFG->dirroot.'/grade/lib.php';
5 require_once $CFG->dirroot.'/grade/report/lib.php';
6 require_once 'item_form.php';
8 $courseid = required_param('courseid', PARAM_INT);
9 $id = optional_param('id', 0, PARAM_INT);
11 if (!$course = get_record('course', 'id', $courseid)) {
12 print_error('nocourseid');
15 require_login($course);
16 $context = get_context_instance(CONTEXT_COURSE, $course->id);
17 require_capability('moodle/grade:manage', $context);
19 // default return url
20 $gpr = new grade_plugin_return();
21 $returnurl = $gpr->get_return_url('index.php?id='.$course->id);
23 $mform = new edit_item_form(null, array('gpr'=>$gpr));
25 if ($mform->is_cancelled()) {
26 redirect($returnurl);
29 if ($item = grade_item::fetch(array('id'=>$id, 'courseid'=>$courseid))) {
30 // redirect if outcomeid present
31 if (!empty($item->outcomeid) && !empty($CFG->enableoutcomes)) {
32 $url = $CFG->wwwroot.'/grade/edit/tree/outcomeitem.php?id='.$id.'&amp;courseid='.$courseid;
33 redirect($gpr->add_url_params($url));
35 $item->calculation = grade_item::denormalize_formula($item->calculation, $courseid);
36 } else {
37 $item = new grade_item(array('courseid'=>$courseid, 'itemtype'=>'manual'), false);
39 $decimalpoints = $item->get_decimals();
41 if ($item->hidden > 1) {
42 $item->hiddenuntil = $item->hidden;
43 $item->hidden = 0;
44 } else {
45 $item->hiddenuntil = 0;
48 $item->locked = !empty($item->locked);
50 $item->grademax = format_float($item->grademax, $decimalpoints);
51 $item->grademin = format_float($item->grademin, $decimalpoints);
52 $item->gradepass = format_float($item->gradepass, $decimalpoints);
53 $item->multfactor = format_float($item->multfactor, 4);
54 $item->plusfactor = format_float($item->plusfactor, 4);
55 $item->aggregationcoef = format_float($item->aggregationcoef, 4);
57 $mform->set_data($item);
59 if ($data = $mform->get_data(false)) {
60 if (array_key_exists('calculation', $data)) {
61 $data->calculation = grade_item::normalize_formula($data->calculation, $course->id);
64 $hidden = empty($data->hidden) ? 0: $data->hidden;
65 $hiddenuntil = empty($data->hiddenuntil) ? 0: $data->hiddenuntil;
66 unset($data->hidden);
67 unset($data->hiddenuntil);
69 $locked = empty($data->locked) ? 0: $data->locked;
70 $locktime = empty($data->locktime) ? 0: $data->locktime;
71 unset($data->locked);
72 unset($data->locktime);
74 $convert = array('grademax', 'grademin', 'gradepass', 'multfactor', 'plusfactor', 'aggregationcoef');
75 foreach ($convert as $param) {
76 if (array_key_exists($param, $data)) {
77 $data->$param = unformat_float($data->$param);
81 $grade_item = new grade_item(array('id'=>$id, 'courseid'=>$courseid));
82 grade_item::set_properties($grade_item, $data);
83 $grade_item->outcomeid = null;
85 // Handle null decimals value
86 if (strlen($data->decimals) < 1) {
87 $grade_item->decimals = null;
90 if (empty($grade_item->id)) {
91 $grade_item->itemtype = 'manual'; // all new items to be manual only
92 $grade_item->insert();
94 } else {
95 $grade_item->update();
98 // update hiding flag
99 if ($hiddenuntil) {
100 $grade_item->set_hidden($hiddenuntil, false);
101 } else {
102 $grade_item->set_hidden($hidden, false);
105 $grade_item->set_locktime($locktime); // locktime first - it might be removed when unlocking
106 $grade_item->set_locked($locked, false, true);
108 redirect($returnurl);
111 $strgrades = get_string('grades');
112 $strgraderreport = get_string('graderreport', 'grades');
113 $stritemsedit = get_string('itemsedit', 'grades');
114 $stritem = get_string('item', 'grades');
116 $navigation = grade_build_nav(__FILE__, $stritem, array('courseid' => $courseid));
119 print_header_simple($strgrades . ': ' . $strgraderreport, ': ' . $stritemsedit, $navigation, '', '', true, '', navmenu($course));
121 $mform->display();
123 print_footer($course);