public function is_available($not, \core_availability\info $info, $grabthelot, $userid) { global $PAGE, $CFG; require_once $CFG->dirroot . '/enrol/locallib.php'; $course = $info->get_course(); $enrolmanager = new \course_enrolment_manager($PAGE, $course); $allow = true; if (!($enrolments = $enrolmanager->get_user_enrolments($userid))) { $allow = false; } foreach ($enrolments as $enrol) { if (time() - $enrol->timestart < $this->mintimesinceenrol) { $allow = false; } } if (!$not) { $allow = !$allow; } return $allow; }
/** * Unenrol a user from a courses * @param object $user * @param array $courseids * @param int $companyid * @return void */ public static function unenrol($user, $courseids, $companyid = null) { global $DB, $PAGE; foreach ($courseids as $courseid) { if (!$DB->get_record('iomad_courses', array('courseid' => $courseid, 'shared' => 0))) { $shared = true; } else { $shared = false; } $course = $DB->get_record('course', array('id' => $courseid)); $courseenrolmentmanager = new course_enrolment_manager($PAGE, $course); $ues = $courseenrolmentmanager->get_user_enrolments($user->id); foreach ($ues as $ue) { if ($ue->enrolmentinstance->courseid == $courseid) { $courseenrolmentmanager->unenrol_user($ue); if ($shared) { if (!empty($companyid)) { company::remove_user_from_shared_course($courseid, $user->id, $companyid); } } } } } }
/** * Add a record to the facetoface submissions table and sends out an * email confirmation * * @param class $session record from the facetoface_sessions table * @param class $facetoface record from the facetoface table * @param class $course record from the course table * @param string $discountcode code entered by the user * @param integer $notificationtype type of notifications to send to user * @see {{MDL_F2F_INVITE}} * @param integer $statuscode Status code to set * @param integer $userid user to signup * @param bool $notifyuser whether or not to send an email confirmation * @param bool $displayerrors whether or not to return an error page on errors */ function facetoface_user_signup($session, $facetoface, $course, $discountcode, $notificationtype, $statuscode, $userid = false, $notifyuser = true) { global $CFG, $DB, $PAGE; // Get user ID. if (!$userid) { global $USER; $userid = $USER->id; } $return = false; $timenow = time(); // Check to see if user is already enrolled, if not. Enrol user $ehelper = new course_enrolment_manager($PAGE, $course); $enrolinstances = $ehelper->get_enrolment_instances(); $enrolments = $ehelper->get_user_enrolments($userid); if (empty($enrolments)) { foreach ($enrolinstances as $instance) { if ($instance->enrol == 'manual') { $emp = new enrol_manual_plugin(); $emp->enrol_user($instance, $userid, 5, $timenow); break; } } } // Check to see if a signup already exists. if ($existingsignup = $DB->get_record('facetoface_signups', array('sessionid' => $session->id, 'userid' => $userid))) { $usersignup = $existingsignup; } else { // Otherwise, prepare a signup object. $usersignup = new stdclass(); $usersignup->sessionid = $session->id; $usersignup->userid = $userid; } $usersignup->mailedreminder = 0; $usersignup->notificationtype = $notificationtype; $usersignup->discountcode = trim(strtoupper($discountcode)); if (empty($usersignup->discountcode)) { $usersignup->discountcode = null; } // Update/insert the signup record. if (!empty($usersignup->id)) { $success = $DB->update_record('facetoface_signups', $usersignup); } else { $usersignup->id = $DB->insert_record('facetoface_signups', $usersignup); $success = (bool) $usersignup->id; } if (!$success) { print_error('error:couldnotupdatef2frecord', 'facetoface'); return false; } // Work out which status to use. // If approval not required. if (!$facetoface->approvalreqd) { $newstatus = $statuscode; } else { // If approval required. // Get current status (if any). $currentstatus = $DB->get_field('facetoface_signups_status', 'statuscode', array('signupid' => $usersignup->id, 'superceded' => 0)); // If approved, then no problem. if ($currentstatus == MDL_F2F_STATUS_APPROVED) { $newstatus = $statuscode; } else { if ($session->datetimeknown) { // Otherwise, send manager request. $newstatus = MDL_F2F_STATUS_REQUESTED; } else { $newstatus = MDL_F2F_STATUS_WAITLISTED; } } } // Update status. if (!facetoface_update_signup_status($usersignup->id, $newstatus, $userid)) { print_error('error:f2ffailedupdatestatus', 'facetoface'); return false; } // Add to user calendar -- if facetoface usercalentry is set to true. if ($facetoface->usercalentry) { if (in_array($newstatus, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_WAITLISTED))) { facetoface_add_session_to_calendar($session, $facetoface, 'user', $userid, 'booking'); } } // Course completion. if (in_array($newstatus, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_WAITLISTED))) { $completion = new completion_info($course); if ($completion->is_enabled()) { $ccdetails = array('course' => $course->id, 'userid' => $userid); $cc = new completion_completion($ccdetails); $cc->mark_inprogress($timenow); } } // If session has already started, do not send a notification. if (facetoface_has_session_started($session, $timenow)) { $notifyuser = false; } // Send notification. if ($notifyuser) { // If booked/waitlisted. switch ($newstatus) { case MDL_F2F_STATUS_BOOKED: $error = facetoface_send_confirmation_notice($facetoface, $session, $userid, $notificationtype, false); break; case MDL_F2F_STATUS_WAITLISTED: $error = facetoface_send_confirmation_notice($facetoface, $session, $userid, $notificationtype, true); break; case MDL_F2F_STATUS_REQUESTED: $error = facetoface_send_request_notice($facetoface, $session, $userid); break; } if (!empty($error)) { print_error($error, 'facetoface'); return false; } if (!$DB->update_record('facetoface_signups', $usersignup)) { print_error('error:couldnotupdatef2frecord', 'facetoface'); return false; } } return true; }
private function unenroll_all($id) { global $DB, $PAGE; // Unenroll everybody from given course. // Get list of enrollments. $course = $DB->get_record('course', array('id' => $id)); $courseenrolment = new course_enrolment_manager($PAGE, $course); $userlist = $courseenrolment->get_users('', 'ASC', 0, 0); foreach ($userlist as $user) { $ues = $courseenrolment->get_user_enrolments($user->id); foreach ($ues as $ue) { $courseenrolment->unenrol_user($ue); } } }