コード例 #1
0
 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;
 }
コード例 #2
0
ファイル: user.php プロジェクト: sumitnegi933/Moodle_lms_New
 /**
  * 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);
                     }
                 }
             }
         }
     }
 }
コード例 #3
0
ファイル: lib.php プロジェクト: eSrem/facetoface-2.0
/**
 * 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;
}
コード例 #4
0
 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);
         }
     }
 }