--- /dev/null
+<?php // $Id$\r
+require_once("../config.php");\r
+\r
+$id = required_param('id', PARAM_INT); // course id\r
+$users = optional_param('userid', array(), PARAM_INT); // array of user id\r
+\r
+if (! $course = get_record('course', 'id', $id)) {\r
+ error("Course ID is incorrect");\r
+}\r
+\r
+$context = get_context_instance(CONTEXT_COURSE, $id);\r
+require_login($course->id);\r
+\r
+// to extend enrolments current user needs to be able to do role assignments\r
+require_capability('moodle/role:assign', $context);\r
+\r
+if ((count($users) > 0) and ($form = data_submitted()) and confirm_sesskey()) {\r
+\r
+ foreach ($form->userid as $k => $v) {\r
+ // find all roles this student have in this course \r
+ if ($students = get_records_sql("SELECT ra.id, ra.roleid, ra.timestart, ra.timeend\r
+ FROM {$CFG->prefix}role_assignments ra\r
+ WHERE userid = $v\r
+ AND contextid = $context->id")) {\r
+ // enrol these users again, with time extension\r
+ // not that this is not necessarily a student role\r
+ foreach ($students as $student) {\r
+ // only extend if the user can make role assignments on this role\r
+ if (user_can_assign($context, $student->roleid)) {\r
+ switch($form->extendperiod) {\r
+ case 0: // No change (currently this option is not available in dropdown list, but it might be ...)\r
+ break;\r
+ case -1: // unlimited\r
+ $student->timeend = 0;\r
+ break;\r
+ default: // extend\r
+ switch($form->extendbase) {\r
+ case 0: // course start date\r
+ $student->timeend = $course->startdate + $form->extendperiod;\r
+ break;\r
+ case 1: // student enrolment start date\r
+ // we check for student enrolment date because Moodle versions before 1.9 did not set this for\r
+ // unlimited enrolment courses, so it might be 0\r
+ if($student->timestart > 0) {\r
+ $student->timeend = $student->timestart + $form->extendperiod;\r
+ }\r
+ break;\r
+ case 2: // student enrolment start date\r
+ // enrolment end equals 0 means Unlimited, so adding some time to that will still yield Unlimited\r
+ if($student->timeend > 0) {\r
+ $student->timeend = $student->timeend + $form->extendperiod;\r
+ }\r
+ break;\r
+ case 3: // current date\r
+ if(time() > $course->startdate) {\r
+ $student->timeend = time() + $form->extendperiod;\r
+ }\r
+ break;\r
+ case 4: // course enrolment start date\r
+ if($course->enrolstartdate > 0) {\r
+ $student->timeend = $course->enrolstartdate + $form->extendperiod;\r
+ }\r
+ break;\r
+ case 5: // course enrolment end date\r
+ if($course->enrolenddate > 0) {\r
+ $student->timeend = $course->enrolenddate + $form->extendperiod;\r
+ }\r
+ break;\r
+ }\r
+ } \r
+ role_assign($student->roleid, $v, 0, $context->id, $student->timestart, $student->timeend, 0);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ redirect("$CFG->wwwroot/user/index.php?id=$id", get_string('changessaved'));\r
+}\r
+\r
+/// Print headers\r
+\r
+if ($course->id != SITEID) {\r
+ print_header("$course->shortname: ".get_string('extendenrol'), $course->fullname,\r
+ "<a href=\"../course/view.php?id=$course->id\">$course->shortname</a> -> ".\r
+ get_string('extendenrol'), "", "", true, " ", navmenu($course));\r
+} else {\r
+ print_header("$course->shortname: ".get_string('extendenrol'), $course->fullname,\r
+ get_string('extendenrol'), "", "", true, " ", navmenu($course));\r
+}\r
+\r
+$timeformat = get_string('strftimedate');\r
+$unlimited = get_string('unlimited');\r
+$periodmenu[-1] = $unlimited;\r
+for ($i=1; $i<=365; $i++) {\r
+ $seconds = $i * 86400;\r
+ $periodmenu[$seconds] = get_string('numdays', '', $i);\r
+}\r
+\r
+$basemenu[0] = get_string('startdate') . ' (' . userdate($course->startdate, $timeformat) . ')';\r
+$basemenu[1] = get_string('enrolmentstart');\r
+$basemenu[2] = get_string('enrolmentend');\r
+if(time() > $course->startdate) {\r
+ $basemenu[3] = get_string('today') . ' (' . userdate(time(), $timeformat) . ')' ;\r
+}\r
+if($course->enrollable == 2) {\r
+ if($course->enrolstartdate > 0) {\r
+ $basemenu[4] = get_string('courseenrolstartdate') . ' (' . userdate($course->enrolstartdate, $timeformat) . ')';\r
+ }\r
+ if($course->enrolenddate > 0) {\r
+ $basemenu[5] = get_string('courseenrolenddate') . ' (' . userdate($course->enrolenddate, $timeformat) . ')';\r
+ }\r
+}\r
+\r
+$title = get_string('groupextendenrol');\r
+print_heading($title . helpbutton('groupextendenrol', $title, 'moodle', true, false, '', true));\r
+echo '<form method="post" action="groupextendenrol.php">';\r
+echo '<input type="hidden" name="id" value="'.$course->id.'" />';\r
+echo '<input type="hidden" name="sesskey" value="'.$USER->sesskey.'" />';\r
+$table->head = array (get_string('fullname'), get_string('enrolmentstart'), get_string('enrolmentend'));\r
+$table->align = array ('left', 'center', 'center', 'center');\r
+$table->width = "600";\r
+$nochange = get_string('nochange');\r
+$notavailable = get_string('notavailable');\r
+\r
+foreach ($_POST as $k => $v) {\r
+ if (preg_match('/^user(\d+)$/',$k,$m)) {\r
+ \r
+ if (!($user = get_record_sql("SELECT * FROM {$CFG->prefix}user u \r
+ INNER JOIN {$CFG->prefix}role_assignments ra ON u.id=ra.userid \r
+ WHERE u.id={$m[1]} AND ra.contextid = $context->id"))) {\r
+ continue;\r
+ }\r
+ if ($user->timestart) {\r
+ $timestart = userdate($user->timestart, $timeformat);\r
+ } else {\r
+ $timestart = $notavailable;\r
+ }\r
+ if ($user->timeend) {\r
+ $timeend = userdate($user->timeend, $timeformat);\r
+ } else {\r
+ $timeend = $unlimited;\r
+ }\r
+ $table->data[] = array(\r
+ fullname($user, true),\r
+ $timestart,\r
+ $timeend . '<input type="hidden" name="userid['.$m[1].']" value="'.$m[1].'" />'\r
+ );\r
+ }\r
+}\r
+print_table($table);\r
+echo '<div style="width:100%;text-align:center;"><strong>';\r
+echo get_string('extendperiod') . ' ';\r
+choose_from_menu($periodmenu, "extendperiod");\r
+echo ' ' . get_string('startingfrom') . ' ';\r
+choose_from_menu($basemenu, "extendbase", "2", "");\r
+echo '</strong><br />';\r
+echo '<input type="submit" value="'.get_string('savechanges').'" />';\r
+echo '</div></form>';\r
+\r
+print_footer($course);\r
+?>
\ No newline at end of file