/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

  1. <?php
  2. // This file is part of Moodle - http://moodle.org/
  3. //
  4. // Moodle is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // Moodle is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License
  15. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
  16. require_once dirname(__FILE__) . '../../../../../../config.php';
  17. require_once dirname(__FILE__) . '/../../lib.php';
  18. require_once $CFG->libdir.'/gradelib.php';
  19. require_once 'edit_form.php';
  20. $courseid = optional_param('id', SITEID, PARAM_INT);
  21. $action = optional_param('action', '', PARAM_ALPHA);
  22. $edit = optional_param('edit', null, PARAM_INT);
  23. $strgrades = get_string('grades');
  24. $pagename = get_string('letters', 'grades');
  25. $returnurl = $CFG->wwwroot . '/plugins/gradebook/options/settings/letter/index.php?id='.$courseid.'&view=settings_letter';
  26. $admin = false;
  27. // Make sure user has permission in this context
  28. if (!$course = get_record('course', 'id', $courseid)) {
  29. print_error('nocourseid');
  30. }
  31. require_login($course);
  32. $context = get_context_instance(CONTEXT_COURSE, $course->id);
  33. if (!has_capability('moodle/grade:manage', $context) and !has_capability('moodle/grade:manageletters', $context)) {
  34. error('Missing permission to view letter grades');
  35. }
  36. // Create form
  37. $letters = grade_get_letters($context);
  38. $num = count($letters) + 3;
  39. $mform = new edit_letter_form(null, array('num'=>$num, 'admin'=>$admin));
  40. // Process form data
  41. if ($mform->is_cancelled()) {
  42. redirect($returnurl);
  43. } else if ($data = $mform->get_data()) {
  44. if (!$admin and empty($data->override)) {
  45. delete_records('grade_letters', 'contextid', $context->id);
  46. redirect($returnurl);
  47. }
  48. $letters = array();
  49. for($i=1; $i<$num+1; $i++) {
  50. $gradelettername = 'gradeletter'.$i;
  51. $gradeboundaryname = 'gradeboundary'.$i;
  52. if (array_key_exists($gradeboundaryname, $data) and $data->$gradeboundaryname != -1) {
  53. $letter = trim($data->$gradelettername);
  54. if ($letter == '') {
  55. continue;
  56. }
  57. $letters[$data->$gradeboundaryname] = $letter;
  58. }
  59. }
  60. krsort($letters, SORT_NUMERIC);
  61. $old_ids = array();
  62. if ($records = get_records('grade_letters', 'contextid', $context->id, 'lowerboundary ASC', 'id')) {
  63. $old_ids = array_keys($records);
  64. }
  65. foreach($letters as $boundary=>$letter) {
  66. $record = new object();
  67. $record->letter = $letter;
  68. $record->lowerboundary = $boundary;
  69. $record->contextid = $context->id;
  70. if ($old_id = array_pop($old_ids)) {
  71. $record->id = $old_id;
  72. update_record('grade_letters', $record);
  73. } else {
  74. insert_record('grade_letters', $record);
  75. }
  76. }
  77. foreach($old_ids as $old_id) {
  78. delete_records('grade_letters', 'id', $old_id);
  79. }
  80. redirect($returnurl);
  81. }
  82. // Print out page
  83. print_grade_page_head($courseid, 'letter', 'view', get_string('gradeletters', 'grades'));
  84. if (has_capability('moodle/grade:edit', $context) && $edit==1){
  85. // Generate data for form
  86. $data = new object();
  87. $data->id = $courseid;
  88. $i = 1;
  89. foreach ($letters as $boundary=>$letter) {
  90. $gradelettername = 'gradeletter'.$i;
  91. $gradeboundaryname = 'gradeboundary'.$i;
  92. $data->$gradelettername = $letter;
  93. $data->$gradeboundaryname = $boundary;
  94. $i++;
  95. }
  96. $data->override = record_exists('grade_letters', 'contextid', $context->id);
  97. $mform->set_data($data);
  98. $mform->display();
  99. }
  100. else {
  101. $letters = grade_get_letters($context);
  102. $data = array();
  103. $max = 100;
  104. foreach($letters as $boundary=>$letter) {
  105. $line = array();
  106. $line[] = format_float($max,2).' %';
  107. $line[] = format_float($boundary,2).' %';
  108. $line[] = format_string($letter);
  109. $data[] = $line;
  110. $max = $boundary - 0.01;
  111. }
  112. $table = new object();
  113. $table->head = array(get_string('max', 'grades'), get_string('min', 'grades'), get_string('letter', 'grades'));
  114. $table->size = array('30%', '30%', '40%');
  115. $table->align = array('left', 'left', 'left');
  116. $table->width = '30%';
  117. $table->data = $data;
  118. print_table($table);
  119. }
  120. print_footer($course);
  121. ?>