$hidden = optional_param('hidden', 0, PARAM_BOOL); // whether this assignment is hidden
$timestart = optional_param('timestart', 0, PARAM_INT);
$timeend = optional_param('timened', 0, PARAM_INT);
+ $extendperiod = optional_param('extendperiod', 0, PARAM_INT);
$userid = optional_param('userid', 0, PARAM_INT); // needed for user tabs
$courseid = optional_param('courseid', 0, PARAM_INT); // needed for user tabs
$strparticipants = get_string('participants');
$strsearchresults = get_string('searchresults');
+ $unlimitedperiod = get_string('unlimited');
+ $defaultperiod = $course->enrolperiod;
+ for ($i=1; $i<=365; $i++) {
+ $seconds = $i * 86400;
+ $periodmenu[$seconds] = get_string('numdays', '', $i);
+ }
-
+ $timeformat = get_string('strftimedate');
+ $basemenu[0] = get_string('startdate') . ' (' . userdate($course->startdate, $timeformat) . ')';
+ if(time() > $course->startdate) {
+ $basemenu[3] = get_string('today') . ' (' . userdate(time(), $timeformat) . ')' ;
+ }
+ if($course->enrollable == 2) {
+ if($course->enrolstartdate > 0) {
+ $basemenu[4] = get_string('courseenrolstartdate') . ' (' . userdate($course->enrolstartdate, $timeformat) . ')';
+ }
+ if($course->enrolenddate > 0) {
+ $basemenu[5] = get_string('courseenrolenddate') . ' (' . userdate($course->enrolenddate, $timeformat) . ')';
+ }
+ }
+
/// Make sure this user can assign that role
if ($roleid) {
}
}
if ($allow) {
+ $timestart = $timemodified;
+ if($extendperiod > 0) {
+ $timeend = $timestart + $extendperiod;
+ } else {
+ $timeend = 0;
+ }
if (! role_assign($roleid, $adduser, 0, $context->id, $timestart, $timeend, $hidden)) {
$errors[] = "Could not add user with id $adduser to this role!";
}
require_capability('moodle/role:assign', $context);
if ((count($users) > 0) and ($form = data_submitted()) and confirm_sesskey()) {
- if (count($form->userid) != count($form->extendperiod)) {
+ if (count($form->userid) != count($form->extendperiod) || count($form->userid) != count($form->extendbase)) {
error('Parameters malformation', $CFG->wwwroot.'/user/index.php?id='.$id);
}
foreach ($students as $student) {
// only extend if the user can make role assignments on this role
if (user_can_assign($context, $student->roleid)) {
- role_assign($student->roleid, $v, 0, $context->id, $student->timestart, $student->timeend + $form->extendperiod[$k], 0);
+ switch($form->extendperiod[$k]) {
+ case 0: // No change
+ break;
+ case -1: // unlimited
+ $student->timeend = 0;
+ break;
+ default: // extend
+ switch($form->extendbase[$k]) {
+ case 0: // course start date
+ $student->timeend = $course->startdate + $form->extendperiod[$k];
+ break;
+ case 1: // student enrolment start date
+ // we check for student enrolment date because Moodle versions before 1.9 did not set this for
+ // unlimited enrolment courses, so it might be 0
+ if($student->timestart > 0) {
+ $student->timeend = $student->timestart + $form->extendperiod[$k];
+ }
+ break;
+ case 2: // student enrolment start date
+ // enrolment end equals 0 means Unlimited, so adding some time to that will still yield Unlimited
+ if($student->timeend > 0) {
+ $student->timeend = $student->timeend + $form->extendperiod[$k];
+ }
+ break;
+ case 3: // current date
+ if(time() > $course->startdate) {
+ $student->timeend = time() + $form->extendperiod[$k];
+ }
+ break;
+ case 4: // course enrolment start date
+ if($course->enrolstartdate > 0) {
+ $student->timeend = $course->enrolstartdate + $form->extendperiod[$k];
+ }
+ break;
+ case 5: // course enrolment end date
+ if($course->enrolenddate > 0) {
+ $student->timeend = $course->enrolenddate + $form->extendperiod[$k];
+ }
+ break;
+ }
+ }
+ role_assign($student->roleid, $v, 0, $context->id, $student->timestart, $student->timeend, 0);
}
}
}
get_string('extendenrol'), "", "", true, " ", navmenu($course));
}
+$timeformat = get_string('strftimedate');
+$unlimited = get_string('unlimited');
+$periodmenu[-1] = $unlimited;
for ($i=1; $i<=365; $i++) {
$seconds = $i * 86400;
$periodmenu[$seconds] = get_string('numdays', '', $i);
}
-print_heading(get_string('extendenrol'));
+// this will contain all available the based On select options, but we'll disable some on them on a per user basis
+$basemenu[0] = get_string('startdate') . ' (' . userdate($course->startdate, $timeformat) . ')';
+$basemenu[1] = get_string('enrolmentstart');
+$basemenu[2] = get_string('enrolmentend');
+if(time() > $course->startdate) {
+ $basemenu[3] = get_string('today') . ' (' . userdate(time(), $timeformat) . ')' ;
+}
+if($course->enrollable == 2) {
+ if($course->enrolstartdate > 0) {
+ $basemenu[4] = get_string('courseenrolstartdate') . ' (' . userdate($course->enrolstartdate, $timeformat) . ')';
+ }
+ if($course->enrolenddate > 0) {
+ $basemenu[5] = get_string('courseenrolenddate') . ' (' . userdate($course->enrolenddate, $timeformat) . ')';
+ }
+}
+
+$title = get_string('extendenrol');
+print_heading($title . helpbutton('extendenrol', $title, 'moodle', true, false, '', true));
echo "<form method=\"post\" action=\"extendenrol.php\">\n";
echo '<input type="hidden" name="id" value="'.$course->id.'" />';
echo '<input type="hidden" name="sesskey" value="'.$USER->sesskey.'" />';
-$table->head = array (get_string('fullname'), get_string('enrolmentstart'), get_string('enrolmentend'), get_string('extendperiod'));
+$table->head = array (get_string('fullname'), get_string('enrolmentstart'), get_string('enrolmentend'), get_string('extendperiod'), get_string('startingfrom'));
$table->align = array ('left', 'center', 'center', 'center');
$table->width = "600";
-$timeformat = get_string('strftimedate');
$nochange = get_string('nochange');
$notavailable = get_string('notavailable');
-$unlimited = get_string('unlimited');
foreach ($_POST as $k => $v) {
if (preg_match('/^user(\d+)$/',$k,$m)) {
WHERE u.id={$m[1]} AND ra.contextid = $context->id"))) {
continue;
}
+ $userbasemenu = $basemenu;
if ($user->timestart) {
$timestart = userdate($user->timestart, $timeformat);
} else {
$timestart = $notavailable;
+ unset($userbasemenu[1]);
}
if ($user->timeend) {
$timeend = userdate($user->timeend, $timeformat);
- $checkbox = choose_from_menu($periodmenu, "extendperiod[{$m[1]}]", "0", $nochange, '', '0', true);
} else {
$timeend = $unlimited;
- $checkbox = '<input type="hidden" name="extendperiod['.$m[1].']" value="0" />'.$nochange;
+ unset($userbasemenu[2]);
}
+ $checkbox = choose_from_menu($periodmenu, "extendperiod[{$m[1]}]", "0", $nochange, '', '0', true);
+ $checkbox2 = choose_from_menu($userbasemenu, "extendbase[{$m[1]}]", "2", "", '', '0', true);
$table->data[] = array(
fullname($user, true),
$timestart,
$timeend,
- '<input type="hidden" name="userid['.$m[1].']" value="'.$m[1].'" />'.$checkbox
+ '<input type="hidden" name="userid['.$m[1].']" value="'.$m[1].'" />'.$checkbox,
+ $checkbox2
);
}
}
echo '</td>';
}
- if ($groupmode == VISIBLEGROUPS or ($groupmode and has_capability('moodle/site:accessallgroups', $context))) {
- if ($groups_names = groups_get_groups_names($course->id)) { //TODO:
- echo '<td class="left">';
- print_group_menu($groups_names, $groupmode, $currentgroup, $baseurl);
- echo '</td>';
- }
- }
+ echo '<td class="left">';
+ setup_and_print_groups($course, $groupmode, $baseurl);
+ echo '</td>';
// get minimum lastaccess for this course and display a dropbox to filter by lastaccess going back this far.
// this might not work anymore because you always going to get yourself as the most recent entry? added $USER!=$user ch
if (has_capability('moodle/site:readallmessages', $context)) {
$displaylist['messageselect.php'] = get_string('messageselectadd');
}
- if ($course->enrolperiod) {
- $displaylist['extendenrol.php'] = get_string('extendenrol');
- }
+
+ $displaylist['extendenrol.php'] = get_string('extendenrol');
+ $displaylist['groupextendenrol.php'] = get_string('groupextendenrol');
+
helpbutton("participantswithselectedusers", get_string("withselectedusers"));
choose_from_menu ($displaylist, "formaction", "", get_string("withselectedusers"), "if(checksubmit(this.form))this.form.submit();", "");
echo '<input type="hidden" name="id" value="'.$course->id.'" />';