|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00004 // // 00005 // NOTICE OF COPYRIGHT // 00006 // // 00007 // Moodle - Modular Object-Oriented Dynamic Learning Environment // 00008 // http://moodle.com // 00009 // // 00010 // Copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com // 00011 // // 00012 // This program is free software; you can redistribute it and/or modify // 00013 // it under the terms of the GNU General Public License as published by // 00014 // the Free Software Foundation; either version 2 of the License, or // 00015 // (at your option) any later version. // 00016 // // 00017 // This program is distributed in the hope that it will be useful, // 00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of // 00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // 00020 // GNU General Public License for more details: // 00021 // // 00022 // http://www.gnu.org/copyleft/gpl.html // 00023 // // 00025 00026 // Edit course completion settings 00027 00028 require_once('../config.php'); 00029 require_once('lib.php'); 00030 require_once($CFG->libdir.'/completionlib.php'); 00031 require_once($CFG->libdir.'/completion/completion_criteria_self.php'); 00032 require_once($CFG->libdir.'/completion/completion_criteria_date.php'); 00033 require_once($CFG->libdir.'/completion/completion_criteria_unenrol.php'); 00034 require_once($CFG->libdir.'/completion/completion_criteria_activity.php'); 00035 require_once($CFG->libdir.'/completion/completion_criteria_duration.php'); 00036 require_once($CFG->libdir.'/completion/completion_criteria_grade.php'); 00037 require_once($CFG->libdir.'/completion/completion_criteria_role.php'); 00038 require_once($CFG->libdir.'/completion/completion_criteria_course.php'); 00039 require_once $CFG->libdir.'/gradelib.php'; 00040 require_once('completion_form.php'); 00041 00042 $id = required_param('id', PARAM_INT); // course id 00043 00045 if ($id) { // editing course 00046 00047 if($id == SITEID){ 00048 // don't allow editing of 'site course' using this from 00049 print_error('cannoteditsiteform'); 00050 } 00051 00052 if (!$course = $DB->get_record('course', array('id'=>$id))) { 00053 print_error('invalidcourseid'); 00054 } 00055 require_login($course->id); 00056 require_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id)); 00057 00058 } else { 00059 require_login(); 00060 print_error('needcourseid'); 00061 } 00062 00064 $streditcompletionsettings = get_string("editcoursecompletionsettings", 'completion'); 00065 $PAGE->set_course($course); 00066 $PAGE->set_url('/course/completion.php', array('id' => $course->id)); 00067 //$PAGE->navbar->add($streditcompletionsettings); 00068 $PAGE->set_title($course->shortname); 00069 $PAGE->set_heading($course->fullname); 00070 $PAGE->set_pagelayout('standard'); 00071 00073 $form = new course_completion_form('completion.php?id='.$id, compact('course')); 00074 00075 // now override defaults if course already exists 00076 if ($form->is_cancelled()){ 00077 redirect($CFG->wwwroot.'/course/view.php?id='.$course->id); 00078 00079 } else if ($data = $form->get_data()) { 00080 00081 $completion = new completion_info($course); 00082 00084 if (!empty($data->settingsunlock)) { 00085 00086 $completion->delete_course_completion_data(); 00087 00088 // Return to form (now unlocked) 00089 redirect($CFG->wwwroot."/course/completion.php?id=$course->id"); 00090 } 00091 00093 // Delete old criteria 00094 $completion->clear_criteria(); 00095 00096 // Loop through each criteria type and run update_config 00097 global $COMPLETION_CRITERIA_TYPES; 00098 foreach ($COMPLETION_CRITERIA_TYPES as $type) { 00099 $class = 'completion_criteria_'.$type; 00100 $criterion = new $class(); 00101 $criterion->update_config($data); 00102 } 00103 00104 // Handle aggregation methods 00105 // Overall aggregation 00106 $aggregation = new completion_aggregation(); 00107 $aggregation->course = $data->id; 00108 $aggregation->criteriatype = null; 00109 $aggregation->setMethod($data->overall_aggregation); 00110 $aggregation->insert(); 00111 00112 // Activity aggregation 00113 if (empty($data->activity_aggregation)) { 00114 $data->activity_aggregation = 0; 00115 } 00116 00117 $aggregation = new completion_aggregation(); 00118 $aggregation->course = $data->id; 00119 $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_ACTIVITY; 00120 $aggregation->setMethod($data->activity_aggregation); 00121 $aggregation->insert(); 00122 00123 // Course aggregation 00124 if (empty($data->course_aggregation)) { 00125 $data->course_aggregation = 0; 00126 } 00127 00128 $aggregation = new completion_aggregation(); 00129 $aggregation->course = $data->id; 00130 $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_COURSE; 00131 $aggregation->setMethod($data->course_aggregation); 00132 $aggregation->insert(); 00133 00134 // Role aggregation 00135 if (empty($data->role_aggregation)) { 00136 $data->role_aggregation = 0; 00137 } 00138 00139 $aggregation = new completion_aggregation(); 00140 $aggregation->course = $data->id; 00141 $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_ROLE; 00142 $aggregation->setMethod($data->role_aggregation); 00143 $aggregation->insert(); 00144 00145 // Update course total passing grade 00146 if (!empty($data->criteria_grade)) { 00147 if ($grade_item = grade_category::fetch_course_category($course->id)->grade_item) { 00148 $grade_item->gradepass = $data->criteria_grade_value; 00149 if (method_exists($grade_item, 'update')) { 00150 $grade_item->update('course/completion.php'); 00151 } 00152 } 00153 } 00154 00155 redirect($CFG->wwwroot."/course/view.php?id=$course->id", get_string('changessaved')); 00156 } 00157 00158 00160 00161 00162 echo $OUTPUT->header(); 00163 echo $OUTPUT->heading($streditcompletionsettings); 00164 00165 $form->display(); 00166 00167 echo $OUTPUT->footer();