aggregation improvements; fixed aggregation of course category when changing type...
[moodle.git] / grade / edit / grade.php
CommitLineData
20544755 1<?php //$Id$
739196ba 2
920a0fb2 3require_once '../../config.php';
3af29899 4require_once $CFG->dirroot.'/grade/lib.php';
20544755 5require_once $CFG->libdir.'/gradelib.php';
6fb39a98 6require_once 'grade_form.php';
20544755 7
8$courseid = required_param('courseid', PARAM_INT);
3ee5c201 9$id = optional_param('id', 0, PARAM_INT); // grade_grade id
20544755 10$action = optional_param('action', 'view', PARAM_ALPHA);
11
12if (!$course = get_record('course', 'id', $courseid)) {
13 print_error('nocourseid');
14}
15
16// capabilities check
17require_login($course);
18$context = get_context_instance(CONTEXT_COURSE, $course->id);
19require_capability('gradereport/grader:manage', $context);
20
21// default return url
3af29899 22$gpr = new grade_plugin_return();
23$returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report.php?id='.$course->id);
20544755 24
79eabc2a 25// TODO: add proper check that grade is editable
26
3ee5c201 27$grade_grade = get_record('grade_grades', 'id', $id);
28$gradeitem = get_record('grade_items', 'id', $grade_grade->itemid);
9c25957a 29
3af29899 30$mform = new edit_grade_form(null, array('gradeitem'=>$gradeitem, 'gpr'=>$gpr));
3ee5c201 31if ($grade_grade = get_record('grade_grades', 'id', $id)) {
20544755 32 if ($grade_text = get_record('grade_grades_text', 'gradeid', $id)) {
79eabc2a 33 if (can_use_html_editor()) {
34 $options = new object();
35 $options->smiley = false;
36 $options->filter = false;
37 $grade_text->feedback = format_text($grade_text->feedback, $grade_text->feedbackformat, $options);
38 $grade_text->feedbackformat = FORMAT_HTML;
39 }
920a0fb2 40 $mform->set_data($grade_text);
41 }
42
3ee5c201 43 $grade_grade->locked = $grade_grade->locked > 0 ? 1:0;
44 $grade_grade->courseid = $courseid;
45 $mform->set_data($grade_grade);
9c25957a 46
20544755 47} else {
48 $mform->set_data(array('courseid'=>$course->id, 'id' => $id));
49}
50
51if ($mform->is_cancelled()) {
52 redirect($returnurl);
53// form processing
54} else if ($data = $mform->get_data()) {
3ee5c201 55 $grade_grade = new grade_grade(array('id'=>$id));
56 $grade_item = new grade_item(array('id'=>$grade_grade->itemid));
57 $grade_item->update_final_grade($grade_grade->userid, $data->finalgrade, NULL, NULL, $data->feedback, $data->feedbackformat);
920a0fb2 58
8c4d80f1 59 // Assign finalgrade value
3ee5c201 60 $grade_grade->finalgrade = $data->finalgrade;
8c4d80f1 61
7e3c9767 62 // set locked
3ee5c201 63 $grade_grade->set_locked($data->locked);
8c4d80f1 64
7e3c9767 65 // set hidden
3ee5c201 66 $grade_grade->set_hidden($data->hidden);
920a0fb2 67
7e3c9767 68 // set locktime
3ee5c201 69 $grade_grade->set_locktime($data->locktime);
20544755 70
3af29899 71 redirect($returnurl);
20544755 72}
73
74// Get extra data related to this feedback
75$query = "SELECT a.id AS userid, a.firstname, a.lastname,
76 b.id AS itemid, b.itemname, b.grademin, b.grademax, b.iteminstance, b.itemmodule, b.scaleid,
77 c.finalgrade
78 FROM {$CFG->prefix}user a,
79 {$CFG->prefix}grade_items b,
80 {$CFG->prefix}grade_grades c
81 WHERE c.id = $id
82 AND b.id = c.itemid
83 AND a.id = c.userid";
84
85$extra_info = get_record_sql($query) ;
86$extra_info->grademin = round($extra_info->grademin);
87$extra_info->grademax = round($extra_info->grademax);
88$extra_info->finalgrade = round($extra_info->finalgrade);
89
90if (!empty($extra_info->itemmodule) && !empty($extra_info->iteminstance)) {
91 $extra_info->course_module = get_coursemodule_from_instance($extra_info->itemmodule, $extra_info->iteminstance, $courseid);
92}
93
94$stronascaleof = get_string('onascaleof', 'grades', $extra_info);
95$strgrades = get_string('grades');
96$strgrade = get_string('grade');
97$strgraderreport = get_string('graderreport', 'grades');
774d92eb 98$strgrade = get_string('grade', 'grades');
99$strgradeedit = get_string('gradeedit', 'grades');
100$strgradeview = get_string('gradeview', 'grades');
20544755 101$strstudent = get_string('student', 'grades');
102$strgradeitem = get_string('gradeitem', 'grades');
103
104$feedback = null;
774d92eb 105$heading = ${"strgrade$action"};
20544755 106if (!empty($action) && $action == 'view' && !empty($grade_text->feedback)) {
774d92eb 107 $feedback = "<p><strong>$strgrade</strong>:</p><p>$grade_text->feedback</p>";
20544755 108}
109
110$nav = array(array('name'=>$strgrades,'link'=>$CFG->wwwroot.'/grade/index.php?id='.$courseid, 'type'=>'misc'),
20544755 111 array('name'=>$heading, 'link'=>'', 'type'=>'misc'));
112
113$navigation = build_navigation($nav);
114
115/*********** BEGIN OUTPUT *************/
116
117print_header_simple($strgrades . ': ' . $strgraderreport . ': ' . $heading,
118 ': ' . $heading , $navigation, '', '', true, '', navmenu($course));
119
120print_heading($heading);
121
122print_simple_box_start("center");
123
124// Student name and link
125echo "<p><strong>$strstudent:</strong> <a href=\"" . $CFG->wwwroot . '/user/view.php?id='
126 . $extra_info->userid . '">' . fullname($extra_info) . "</a></p>";
127
128// Grade item name and link
129if (!empty($extra_info->course_module) && !empty($extra_info->itemmodule)) {
130 echo "<p><strong>$strgradeitem:</strong> <a href=\"" . $CFG->wwwroot . '/mod/' . $extra_info->itemmodule
131 . '/view.php?id=' . $extra_info->course_module->id . "&amp;courseid=$courseid\">$extra_info->itemname</a></p>";
132}
133
20544755 134// Form if in edit or add modes
135$mform->display();
20544755 136
137print_simple_box_end();
138
139print_footer($course);
140die;