See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401]
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 * Page to enrol our users into remote courses 20 * 21 * @package plugintype 22 * @subpackage pluginname 23 * @copyright 2010 David Mudrak <david@moodle.com> 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 require(__DIR__.'/../../../config.php'); 28 require_once($CFG->libdir.'/adminlib.php'); 29 require_once($CFG->dirroot.'/mnet/service/enrol/locallib.php'); 30 31 require_sesskey(); 32 33 $hostid = required_param('host', PARAM_INT); // remote host id in our mnet_host table 34 $courseid = required_param('course', PARAM_INT); // id of the course in our cache table 35 $usecache = optional_param('usecache', true, PARAM_BOOL); // use cached list of enrolments 36 37 admin_externalpage_setup('mnetenrol', '', array('host'=>$hostid, 'course'=>$courseid, 'usecache'=>1, 'sesskey'=>sesskey()), 38 new moodle_url('/mnet/service/enrol/course.php')); 39 40 $service = mnetservice_enrol::get_instance(); 41 42 if (!$service->is_available()) { 43 echo $OUTPUT->box(get_string('mnetdisabled','mnet'), 'noticebox'); 44 echo $OUTPUT->footer(); 45 die(); 46 } 47 48 // remote hosts that may publish remote enrolment service and we are subscribed to it 49 $hosts = $service->get_remote_publishers(); 50 51 if (empty($hosts[$hostid])) { 52 throw new \moodle_exception('wearenotsubscribedtothishost', 'mnetservice_enrol'); 53 } 54 $host = $hosts[$hostid]; 55 $course = $DB->get_record('mnetservice_enrol_courses', array('id'=>$courseid, 'hostid'=>$host->id), '*', MUST_EXIST); 56 57 echo $OUTPUT->header(); 58 59 // course name 60 $icon = $OUTPUT->pix_icon('i/course', get_string('category')); 61 echo $OUTPUT->heading($icon . s($course->fullname)); 62 63 // collapsible course summary 64 if (!empty($course->summary)) { 65 $options = new stdClass(); 66 $options->trusted = false; 67 $options->para = false; 68 $options->filter = false; 69 $options->noclean = false; 70 $options->overflowdiv = true; 71 print_collapsible_region_start('remotecourse summary', 'remotecourse-summary', get_string('coursesummary'), false, true); 72 echo format_text($course->summary, $course->summaryformat, $options); 73 print_collapsible_region_end(); 74 } 75 76 $error = ''; 77 78 $lastfetchenrolments = get_config('mnetservice_enrol', 'lastfetchenrolments'); 79 if (!$usecache or empty($lastfetchenrolments) or (time()-$lastfetchenrolments > 600)) { 80 // fetch fresh data from remote if we just came from the course selection screen 81 // or every 10 minutes 82 $usecache = false; 83 $result = $service->req_course_enrolments($host->id, $course->remoteid, $usecache); 84 if ($result !== true) { 85 $error .= $service->format_error_message($result); 86 } 87 } 88 89 // user selectors 90 $currentuserselector = new mnetservice_enrol_existing_users_selector('removeselect', array('hostid'=>$host->id, 'remotecourseid'=>$course->remoteid)); 91 $potentialuserselector = new mnetservice_enrol_potential_users_selector('addselect', array('hostid'=>$host->id, 'remotecourseid'=>$course->remoteid)); 92 93 // process incoming enrol request 94 if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { 95 $userstoassign = $potentialuserselector->get_selected_users(); 96 if (!empty($userstoassign)) { 97 foreach($userstoassign as $adduser) { 98 $user = $DB->get_record('user', array('id'=>$adduser->id)); 99 $result = $service->req_enrol_user($user, $course); 100 if ($result !== true) { 101 $error .= $service->format_error_message($result); 102 } 103 } 104 105 $potentialuserselector->invalidate_selected_users(); 106 $currentuserselector->invalidate_selected_users(); 107 } 108 } 109 110 // process incoming unenrol request 111 if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { 112 $userstounassign = $currentuserselector->get_selected_users(); 113 if (!empty($userstounassign)) { 114 foreach($userstounassign as $removeuser) { 115 $user = $DB->get_record('user', array('id'=>$removeuser->id)); 116 $result = $service->req_unenrol_user($user, $course); 117 if ($result !== true) { 118 $error .= $service->format_error_message($result); 119 } 120 } 121 122 $potentialuserselector->invalidate_selected_users(); 123 $currentuserselector->invalidate_selected_users(); 124 } 125 } 126 127 if (!empty($error)) { 128 echo $OUTPUT->box($error, 'generalbox error'); 129 } 130 131 // print form to enrol our students 132 ?> 133 <form id="assignform" method="post" action="<?php echo $PAGE->url ?>"> 134 <div> 135 <input type="hidden" name="sesskey" value="<?php echo sesskey() ?>" /> 136 <input type="hidden" name="hostid" value="<?php echo $host->id ?>" /> 137 <input type="hidden" name="courseid" value="<?php echo $course->id ?>" /> 138 139 <table summary="" class="roleassigntable generaltable generalbox boxaligncenter" cellspacing="0"> 140 <tr> 141 <td id="existingcell"> 142 <p><label for="removeselect"><?php print_string('enrolledusers', 'enrol'); ?></label></p> 143 <?php $currentuserselector->display() ?> 144 </td> 145 <td id="buttonscell"> 146 <div id="addcontrols"> 147 <input name="add" id="add" type="submit" value="<?php echo $OUTPUT->larrow().' '.get_string('add'); ?>" title="<?php print_string('add'); ?>" /><br /> 148 149 <div class="enroloptions"> 150 <p><?php echo get_string('assignrole', 'role') .': '. s($course->rolename); ?></p> 151 </div> 152 153 </div> 154 155 <div id="removecontrols"> 156 <input name="remove" id="remove" type="submit" value="<?php echo get_string('remove').' '.$OUTPUT->rarrow(); ?>" title="<?php print_string('remove'); ?>" /> 157 </div> 158 </td> 159 <td id="potentialcell"> 160 <p><label for="addselect"><?php print_string('enrolcandidates', 'enrol'); ?></label></p> 161 <?php $potentialuserselector->display() ?> 162 </td> 163 </tr> 164 </table> 165 </div> 166 </form> 167 <?php 168 169 // eventually display other enrolments of our users (manual, self etc.) in the remote course 170 list($sort, $params) = users_order_by_sql('u'); 171 $sql = "SELECT e.id,e.enroltype AS plugin, u.firstname, u.lastname, u.email, u.id AS userid, 172 e.enroltime AS timemodified, e.rolename 173 FROM {mnetservice_enrol_enrolments} e 174 JOIN {user} u ON u.id = e.userid 175 WHERE e.hostid = :hostid AND e.remotecourseid = :remotecourseid AND e.enroltype != 'mnet' 176 ORDER BY $sort"; 177 $params['hostid'] = $host->id; 178 $params['remotecourseid'] = $course->remoteid; 179 180 if ($enrolments = $DB->get_records_sql($sql, $params)) { 181 echo $OUTPUT->heading(get_string('otherenrolledusers', 'mnetservice_enrol'), 3); 182 183 $table = new html_table(); 184 $table->attributes['class'] = 'generaltable otherenrolledusers'; 185 $table->head = array(get_string('fullnameuser'), get_string('role'), get_string('plugin')); 186 foreach ($enrolments as $enrolleduser) { 187 $table->data[] = array(fullname($enrolleduser), s($enrolleduser->rolename), s($enrolleduser->plugin)); 188 } 189 echo html_writer::table($table); 190 } 191 192 if ($usecache) { 193 echo $OUTPUT->single_button(new moodle_url($PAGE->url, array('usecache'=>0, 'sesskey'=>sesskey())), 194 get_string('refetch', 'mnetservice_enrol'), 'get'); 195 } 196 197 echo $OUTPUT->single_button(new moodle_url('/mnet/service/enrol/host.php', array('id'=>$host->id)), 198 get_string('availablecourseson', 'mnetservice_enrol', s($host->hostname)), 'get'); 199 200 echo $OUTPUT->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body