Differences Between: [Versions 311 and 400] [Versions 311 and 401] [Versions 311 and 402] [Versions 311 and 403]
1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * Edit course completion settings 20 * 21 * @package core_completion 22 * @category completion 23 * @copyright 2009 Catalyst IT Ltd 24 * @author Aaron Barnes <aaronb@catalyst.net.nz> 25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 26 */ 27 28 require_once(__DIR__.'/../config.php'); 29 require_once($CFG->dirroot.'/course/lib.php'); 30 require_once($CFG->libdir.'/completionlib.php'); 31 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_self.php'); 32 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_date.php'); 33 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_unenrol.php'); 34 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_activity.php'); 35 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_duration.php'); 36 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_grade.php'); 37 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_role.php'); 38 require_once($CFG->dirroot.'/completion/criteria/completion_criteria_course.php'); 39 require_once $CFG->libdir.'/gradelib.php'; 40 require_once($CFG->dirroot.'/course/completion_form.php'); 41 42 $id = required_param('id', PARAM_INT); // course id 43 44 // Perform some basic access control checks. 45 if ($id) { 46 47 if($id == SITEID){ 48 // Don't allow editing of 'site course' using this form. 49 print_error('cannoteditsiteform'); 50 } 51 52 if (!$course = $DB->get_record('course', array('id'=>$id))) { 53 print_error('invalidcourseid'); 54 } 55 require_login($course); 56 $context = context_course::instance($course->id); 57 if (!has_capability('moodle/course:update', $context)) { 58 // User is not allowed to modify course completion. 59 // Check if they can see default completion or edit bulk completion and redirect there. 60 if ($tabs = core_completion\manager::get_available_completion_tabs($course)) { 61 redirect($tabs[0]->link); 62 } else { 63 require_capability('moodle/course:update', $context); 64 } 65 } 66 67 } else { 68 require_login(); 69 print_error('needcourseid'); 70 } 71 72 // Set up the page. 73 $PAGE->set_course($course); 74 $PAGE->set_url('/course/completion.php', array('id' => $course->id)); 75 $PAGE->set_title($course->shortname); 76 $PAGE->set_heading($course->fullname); 77 $PAGE->set_pagelayout('admin'); 78 79 // Create the settings form instance. 80 $form = new course_completion_form('completion.php?id='.$id, array('course' => $course)); 81 82 if ($form->is_cancelled()){ 83 redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); 84 85 } else if ($data = $form->get_data()) { 86 $completion = new completion_info($course); 87 88 // Process criteria unlocking if requested. 89 if (!empty($data->settingsunlock)) { 90 $completion->delete_course_completion_data(); 91 92 // Return to form (now unlocked). 93 redirect($PAGE->url); 94 } 95 96 // Delete old criteria. 97 $completion->clear_criteria(); 98 99 // Loop through each criteria type and run its update_config() method. 100 global $COMPLETION_CRITERIA_TYPES; 101 foreach ($COMPLETION_CRITERIA_TYPES as $type) { 102 $class = 'completion_criteria_'.$type; 103 $criterion = new $class(); 104 $criterion->update_config($data); 105 } 106 107 // Handle overall aggregation. 108 $aggdata = array( 109 'course' => $data->id, 110 'criteriatype' => null 111 ); 112 $aggregation = new completion_aggregation($aggdata); 113 $aggregation->setMethod($data->overall_aggregation); 114 $aggregation->save(); 115 116 // Handle activity aggregation. 117 if (empty($data->activity_aggregation)) { 118 $data->activity_aggregation = 0; 119 } 120 121 $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_ACTIVITY; 122 $aggregation = new completion_aggregation($aggdata); 123 $aggregation->setMethod($data->activity_aggregation); 124 $aggregation->save(); 125 126 // Handle course aggregation. 127 if (empty($data->course_aggregation)) { 128 $data->course_aggregation = 0; 129 } 130 131 $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_COURSE; 132 $aggregation = new completion_aggregation($aggdata); 133 $aggregation->setMethod($data->course_aggregation); 134 $aggregation->save(); 135 136 // Handle role aggregation. 137 if (empty($data->role_aggregation)) { 138 $data->role_aggregation = 0; 139 } 140 141 $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_ROLE; 142 $aggregation = new completion_aggregation($aggdata); 143 $aggregation->setMethod($data->role_aggregation); 144 $aggregation->save(); 145 146 // Trigger an event for course module completion changed. 147 $event = \core\event\course_completion_updated::create( 148 array( 149 'courseid' => $course->id, 150 'context' => context_course::instance($course->id) 151 ) 152 ); 153 $event->trigger(); 154 155 // Redirect to the course main page. 156 $url = new moodle_url('/course/view.php', array('id' => $course->id)); 157 redirect($url); 158 } 159 160 $renderer = $PAGE->get_renderer('core_course', 'bulk_activity_completion'); 161 162 // Print the form. 163 echo $OUTPUT->header(); 164 echo $OUTPUT->heading(get_string('editcoursecompletionsettings', 'core_completion')); 165 166 echo $renderer->navigation($course, 'completion'); 167 168 $form->display(); 169 170 echo $OUTPUT->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body