MDL-21695 adding help strings
[moodle.git] / user / extendenrol.php
blob9b384e286153ac2cf7313349912902ee9a58384e
1 <?php
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.
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/>.
18 /**
19 * This file is part of the User section Moodle
21 * @copyright 1999 Martin Dougiamas http://dougiamas.com
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 * @package user
26 require_once("../config.php");
28 $id = required_param('id', PARAM_INT); // course id
29 $users = optional_param('userid', array(), PARAM_INT); // array of user id
31 $PAGE->set_url('/user/extendenrol.php', array('id'=>$id));
33 if (! $course = $DB->get_record('course', array('id'=>$id))) {
34 print_error('invalidcourseid');
37 $context = get_context_instance(CONTEXT_COURSE, $id);
38 require_login($course->id);
40 // to extend enrolments current user needs to be able to do role assignments
41 require_capability('moodle/role:assign', $context);
42 $today = time();
43 $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
44 if ((count($users) > 0) and ($form = data_submitted()) and confirm_sesskey()) {
45 if (count($form->userid) != count($form->extendperiod) || count($form->userid) != count($form->extendbase)) {
46 print_error('invalidformdata', '', $CFG->wwwroot.'/user/index.php?id='.$id);
49 foreach ($form->userid as $k => $v) {
50 // find all roles this student have in this course
51 if ($students = $DB->get_records_sql("SELECT ra.id, ra.roleid, ra.timestart, ra.timeend
52 FROM {role_assignments} ra
53 WHERE userid = ?
54 AND contextid = ?", array($v, $context->id))) {
55 // enrol these users again, with time extension
56 // not that this is not necessarily a student role
57 foreach ($students as $student) {
58 // only extend if the user can make role assignments on this role
59 if (user_can_assign($context, $student->roleid)) {
60 switch($form->extendperiod[$k]) {
61 case 0: // No change
62 break;
63 case -1: // unlimited
64 $student->timeend = 0;
65 break;
66 default: // extend
67 switch($form->extendbase[$k]) {
68 case 0: // course start date
69 $student->timeend = $course->startdate + $form->extendperiod[$k];
70 break;
71 case 1: // student enrolment start date
72 // we check for student enrolment date because Moodle versions before 1.9 did not set this for
73 // unlimited enrolment courses, so it might be 0
74 if($student->timestart > 0) {
75 $student->timeend = $student->timestart + $form->extendperiod[$k];
77 break;
78 case 2: // student enrolment start date
79 // enrolment end equals 0 means Unlimited, so adding some time to that will still yield Unlimited
80 if($student->timeend > 0) {
81 $student->timeend = $student->timeend + $form->extendperiod[$k];
83 break;
84 case 3: // current date
85 $student->timeend = $today + $form->extendperiod[$k];
86 break;
87 case 4: // course enrolment start date
88 if($course->enrolstartdate > 0) {
89 $student->timeend = $course->enrolstartdate + $form->extendperiod[$k];
91 break;
92 case 5: // course enrolment end date
93 if($course->enrolenddate > 0) {
94 $student->timeend = $course->enrolenddate + $form->extendperiod[$k];
96 break;
99 role_assign($student->roleid, $v, 0, $context->id, $student->timestart, $student->timeend, 0);
105 redirect("$CFG->wwwroot/user/index.php?id=$id", get_string('changessaved'));
108 /// Print headers
110 $PAGE->navbar->add(get_string('extendenrol'));
111 $PAGE->set_title("$course->shortname: ".get_string('extendenrol'));
112 $PAGE->set_heading( $course->fullname);
114 echo $OUTPUT->header();
116 $timeformat = get_string('strftimedate');
117 $unlimited = get_string('unlimited');
118 $periodmenu[-1] = $unlimited;
119 for ($i=1; $i<=365; $i++) {
120 $seconds = $i * 86400;
121 $periodmenu[$seconds] = get_string('numdays', '', $i);
124 // this will contain all available the based On select options, but we'll disable some on them on a per user basis
125 $basemenu[0] = get_string('startdate') . ' (' . userdate($course->startdate, $timeformat) . ')';
126 $basemenu[1] = get_string('enrolmentstart');
127 $basemenu[2] = get_string('enrolmentend');
128 if($course->enrollable != 2 || ($course->enrolstartdate == 0 || $course->enrolstartdate <= $today) && ($course->enrolenddate == 0 || $course->enrolenddate > $today)) {
129 $basemenu[3] = get_string('today') . ' (' . userdate($today, $timeformat) . ')' ;
131 if($course->enrollable == 2) {
132 if($course->enrolstartdate > 0) {
133 $basemenu[4] = get_string('courseenrolstartdate') . ' (' . userdate($course->enrolstartdate, $timeformat) . ')';
135 if($course->enrolenddate > 0) {
136 $basemenu[5] = get_string('courseenrolenddate') . ' (' . userdate($course->enrolenddate, $timeformat) . ')';
140 $title = get_string('extendenrol');
141 echo $OUTPUT->heading($title . $OUTPUT->old_help_icon('extendenrol', $title));
142 echo "<form method=\"post\" action=\"extendenrol.php\">\n";
143 echo '<input type="hidden" name="id" value="'.$course->id.'" />';
144 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
145 $table = new html_table();
146 $table->head = array (get_string('fullnameuser'), get_string('enrolmentstart'), get_string('enrolmentend'), get_string('extendperiod'), get_string('startingfrom'));
147 $table->align = array ('left', 'center', 'center', 'center');
148 $table->width = "600";
149 $nochange = get_string('nochange');
150 $notavailable = get_string('notavailable');
151 foreach ($_POST as $k => $v) {
152 if (preg_match('/^user(\d+)$/',$k,$m)) {
154 if (!($user = $DB->get_record_sql("SELECT *
155 FROM {user} u
156 JOIN {role_assignments} ra ON u.id=ra.userid
157 WHERE u.id=? AND ra.contextid = ?", array($m[1], $context->id)))) {
158 continue;
160 $userbasemenu = $basemenu;
161 if ($user->timestart) {
162 $timestart = userdate($user->timestart, $timeformat);
163 } else {
164 $timestart = $notavailable;
165 unset($userbasemenu[1]);
167 if ($user->timeend) {
168 $timeend = userdate($user->timeend, $timeformat);
169 } else {
170 $timeend = $unlimited;
171 unset($userbasemenu[2]);
174 $checkbox = html_writer::select($periodmenu, "extendperiod[{$m[1]}]", "0", array('0'=>$nochange));
175 $checkbox2 = html_writer::select($userbasemenu, "extendbase[{$m[1]}]", "2", false);
176 $table->data[] = array(
177 fullname($user, true),
178 $timestart,
179 $timeend,
180 '<input type="hidden" name="userid['.$m[1].']" value="'.$m[1].'" />'.$checkbox,
181 $checkbox2);
184 echo html_writer::table($table);
185 echo "\n<div style=\"width:100%;text-align:center;\"><input type=\"submit\" value=\"".get_string('savechanges')."\" /></div>\n</form>\n";
187 echo $OUTPUT->footer();