20544755 |
1 | <?php //$Id$ |
739196ba |
2 | |
920a0fb2 |
3 | require_once '../../config.php'; |
3af29899 |
4 | require_once $CFG->dirroot.'/grade/lib.php'; |
20544755 |
5 | require_once $CFG->libdir.'/gradelib.php'; |
6fb39a98 |
6 | require_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 | |
12 | if (!$course = get_record('course', 'id', $courseid)) { |
13 | print_error('nocourseid'); |
14 | } |
15 | |
16 | // capabilities check |
17 | require_login($course); |
18 | $context = get_context_instance(CONTEXT_COURSE, $course->id); |
19 | require_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 |
31 | if ($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 | |
51 | if ($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 | |
90 | if (!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 |
106 | if (!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 | |
117 | print_header_simple($strgrades . ': ' . $strgraderreport . ': ' . $heading, |
118 | ': ' . $heading , $navigation, '', '', true, '', navmenu($course)); |
119 | |
120 | print_heading($heading); |
121 | |
122 | print_simple_box_start("center"); |
123 | |
124 | // Student name and link |
125 | echo "<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 |
129 | if (!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 . "&courseid=$courseid\">$extra_info->itemname</a></p>"; |
132 | } |
133 | |
20544755 |
134 | // Form if in edit or add modes |
135 | $mform->display(); |
20544755 |
136 | |
137 | print_simple_box_end(); |
138 | |
139 | print_footer($course); |
140 | die; |