/plugins/gradebook/options/settings/letter/index.php
https://github.com/jarednipper/HSU-common-code · PHP · 144 lines · 102 code · 23 blank · 19 comment · 17 complexity · f13d726d6fd25c32d0cc09910b46f9c5 MD5 · raw file
- <?php
- // This file is part of Moodle - http://moodle.org/
- //
- // Moodle is free software: you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // Moodle is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
- require_once dirname(__FILE__) . '../../../../../../config.php';
- require_once dirname(__FILE__) . '/../../lib.php';
- require_once $CFG->libdir.'/gradelib.php';
- require_once 'edit_form.php';
- $courseid = optional_param('id', SITEID, PARAM_INT);
- $action = optional_param('action', '', PARAM_ALPHA);
- $edit = optional_param('edit', null, PARAM_INT);
- $strgrades = get_string('grades');
- $pagename = get_string('letters', 'grades');
- $returnurl = $CFG->wwwroot . '/plugins/gradebook/options/settings/letter/index.php?id='.$courseid.'&view=settings_letter';
- $admin = false;
- // Make sure user has permission in this context
- if (!$course = get_record('course', 'id', $courseid)) {
- print_error('nocourseid');
- }
- require_login($course);
- $context = get_context_instance(CONTEXT_COURSE, $course->id);
- if (!has_capability('moodle/grade:manage', $context) and !has_capability('moodle/grade:manageletters', $context)) {
- error('Missing permission to view letter grades');
- }
- // Create form
- $letters = grade_get_letters($context);
- $num = count($letters) + 3;
- $mform = new edit_letter_form(null, array('num'=>$num, 'admin'=>$admin));
-
- // Process form data
- if ($mform->is_cancelled()) {
- redirect($returnurl);
- } else if ($data = $mform->get_data()) {
- if (!$admin and empty($data->override)) {
- delete_records('grade_letters', 'contextid', $context->id);
- redirect($returnurl);
- }
- $letters = array();
- for($i=1; $i<$num+1; $i++) {
- $gradelettername = 'gradeletter'.$i;
- $gradeboundaryname = 'gradeboundary'.$i;
- if (array_key_exists($gradeboundaryname, $data) and $data->$gradeboundaryname != -1) {
- $letter = trim($data->$gradelettername);
- if ($letter == '') {
- continue;
- }
- $letters[$data->$gradeboundaryname] = $letter;
- }
- }
- krsort($letters, SORT_NUMERIC);
- $old_ids = array();
- if ($records = get_records('grade_letters', 'contextid', $context->id, 'lowerboundary ASC', 'id')) {
- $old_ids = array_keys($records);
- }
- foreach($letters as $boundary=>$letter) {
- $record = new object();
- $record->letter = $letter;
- $record->lowerboundary = $boundary;
- $record->contextid = $context->id;
- if ($old_id = array_pop($old_ids)) {
- $record->id = $old_id;
- update_record('grade_letters', $record);
- } else {
- insert_record('grade_letters', $record);
- }
- }
- foreach($old_ids as $old_id) {
- delete_records('grade_letters', 'id', $old_id);
- }
- redirect($returnurl);
- }
- // Print out page
- print_grade_page_head($courseid, 'letter', 'view', get_string('gradeletters', 'grades'));
- if (has_capability('moodle/grade:edit', $context) && $edit==1){
- // Generate data for form
- $data = new object();
- $data->id = $courseid;
- $i = 1;
- foreach ($letters as $boundary=>$letter) {
- $gradelettername = 'gradeletter'.$i;
- $gradeboundaryname = 'gradeboundary'.$i;
- $data->$gradelettername = $letter;
- $data->$gradeboundaryname = $boundary;
- $i++;
- }
- $data->override = record_exists('grade_letters', 'contextid', $context->id);
- $mform->set_data($data);
- $mform->display();
- }
- else {
- $letters = grade_get_letters($context);
- $data = array();
- $max = 100;
- foreach($letters as $boundary=>$letter) {
- $line = array();
- $line[] = format_float($max,2).' %';
- $line[] = format_float($boundary,2).' %';
- $line[] = format_string($letter);
- $data[] = $line;
- $max = $boundary - 0.01;
- }
- $table = new object();
- $table->head = array(get_string('max', 'grades'), get_string('min', 'grades'), get_string('letter', 'grades'));
- $table->size = array('30%', '30%', '40%');
- $table->align = array('left', 'left', 'left');
- $table->width = '30%';
- $table->data = $data;
- print_table($table);
- }
- print_footer($course);
- ?>