Fixes MDL-11496, SQL error when deleting a unit via the (ou) Publisher - delete group...
[moodle-pu.git] / grade / edit / gradedisplay / index.php
bloba06cc8c23d99dd4e0b76f05e037e1c2f54d57de4
1 <?php // $Id$
2 // Allows a creator to edit custom scales, and also display help about scales
4 require_once '../../../config.php';
5 require_once $CFG->dirroot.'/grade/lib.php';
6 require_once $CFG->libdir.'/gradelib.php';
7 require_once $CFG->dirroot.'/grade/report/lib.php';
8 require_once 'gradedisplay_form.php';
10 $courseid = optional_param('id', 0, PARAM_INT);
11 $addgradeletter = optional_param('addgradeletter', null, PARAM_ALPHANUM);
13 /// Make sure they can even access this course
14 if ($courseid) {
15 if (!$course = get_record('course', 'id', $courseid)) {
16 print_error('nocourseid');
18 require_login($course);
19 $context = get_context_instance(CONTEXT_COURSE, $course->id);
20 require_capability('moodle/course:managescales', $context);
21 } else {
22 require_once $CFG->libdir.'/adminlib.php';
23 admin_externalpage_setup('scales');
26 if (!empty($addgradeletter)) {
27 // Insert a record in the grade_letters table, with 0 as lower boundary and ' - ' as letter
28 $record = new stdClass();
29 $record->contextid = $context->id;
30 $record->letter = 'A';
31 $record->lowerboundary = 0;
32 insert_record('grade_letters', $record);
35 $course_has_letters = get_field('grade_letters', 'contextid', 'contextid', $context->id);
37 /// return tracking object
38 $gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'gradedisplay', 'courseid'=>$courseid));
39 $returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/edit/gradedisplay/index.php?id='.$course->id);
41 $mform = new edit_grade_display_form(null, array('gpr'=>$gpr, 'course_has_letters' => $course_has_letters));
43 if ($mform->is_cancelled()) {
44 redirect($returnurl);
46 // form processing
47 } else if ($data = $mform->get_data(false)) {
48 // Delete existing grade_letters for this contextid, whether we add, update or set the grade letters to defaults
49 if ($course_has_letters) {
50 delete_records('grade_letters', 'contextid', $context->id);
53 // Update course item's gradedisplay type
54 if (isset($data->display)) {
55 set_field('grade_items', 'display', $data->display, 'courseid', $courseid, 'itemtype', 'course');
58 // Update course item's decimals type
59 if (isset($data->decimals)) {
60 if ($data->decimals < 0) {
61 $data->decimals = null;
63 set_field('grade_items', 'decimals', $data->decimals, 'courseid', $courseid, 'itemtype', 'course');
66 // If override is present, add/update entries in grade_letters table
67 if (!empty($data->override)) {
68 $records = array();
70 // Loop through grade letters and boundaries
71 foreach ($data as $key => $variable) {
72 preg_match('/[gradeletter|gradeboundary]([0-9]{1,2})/', $key, $matches);
73 $index = null;
74 if (isset($matches[1])) {
75 $index = $matches[1];
78 if (strstr($key, 'gradeletter')) {
79 $records[$index] = new stdClass();
80 $records[$index]->letter = $variable;
81 } elseif (strstr($key, 'gradeboundary')) {
82 if (!empty($records[$index])) {
83 $records[$index]->lowerboundary = $variable;
88 foreach ($records as $key => $record) {
89 // Do not insert if either value is empty or set to "unused"
90 $values_set = isset($record->letter) && isset($record->lowerboundary);
92 if ($values_set && strlen($record->letter) > 0 && strlen($record->lowerboundary) > 0) {
93 $record->contextid = $context->id;
94 if ($id = insert_record('grade_letters', $record)) {
95 $record = new stdClass();
96 } else {
97 debugging('Error inserting grade_letters record!');
98 die();
103 if (!isset($data->addgradeletter)) {
104 redirect($returnurl, get_string('coursegradedisplayupdated', 'grades'));
108 $strgrades = get_string('grades');
109 $pagename = get_string('gradedisplay', 'grades');
111 $navigation = grade_build_nav(__FILE__, $pagename, array('courseid' => $courseid));
113 $strname = get_string('name');
114 $strdelete = get_string('delete');
115 $stredit = get_string('edit');
116 $strused = get_string('used');
117 $stredit = get_string('edit');
119 if ($courseid) {
120 /// Print header
121 print_header_simple($strgrades.': '.$pagename, ': '.$strgrades, $navigation, '', '', true, '', navmenu($course));
122 /// Print the plugin selector at the top
123 print_grade_plugin_selector($courseid, 'edit', 'scale');
125 } else {
126 admin_externalpage_print_header();
129 print_simple_box_start("center");
130 $mform->display();
131 print_simple_box_end();
133 if ($courseid) {
134 print_footer($course);
135 } else {
136 admin_externalpage_print_footer();