$timeend = 0; } else { $timeend = $timestart + $duration * 24 * 60 * 60; } $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); $instances = $manager->get_enrolment_instances(); $plugins = $manager->get_enrolment_plugins(true); // Do not allow actions on disabled plugins. if (!array_key_exists($enrolid, $instances)) { throw new enrol_ajax_exception('invalidenrolinstance'); } $instance = $instances[$enrolid]; if (!isset($plugins[$instance->enrol])) { throw new enrol_ajax_exception('enrolnotpermitted'); } $plugin = $plugins[$instance->enrol]; if ($plugin->allow_enrol($instance) && has_capability('enrol/' . $plugin->get_name() . ':enrol', $context)) { $plugin->enrol_user($instance, $user->id, $roleid, $timestart, $timeend); if ($recovergrades) { require_once $CFG->libdir . '/gradelib.php'; grade_recover_history_grades($user->id, $instance->courseid); } } else { throw new enrol_ajax_exception('enrolnotpermitted'); } $outcome->success = true; break; default: throw new enrol_ajax_exception('unknowajaxaction'); } echo json_encode($outcome);
/** * Enrol user into course via enrol instance. * * @param stdClass $instance * @param int $userid * @param int $roleid optional role id * @param int $timestart 0 means unknown * @param int $timeend 0 means forever * @param int $status default to ENROL_USER_ACTIVE for new enrolments, no change by default in updates * @param bool $recovergrades restore grade history * @return void */ public function enrol_user(stdClass $instance, $userid, $roleid = null, $timestart = 0, $timeend = 0, $status = null, $recovergrades = null) { global $DB, $USER, $CFG; // CFG necessary!!! if ($instance->courseid == SITEID) { throw new coding_exception('invalid attempt to enrol into frontpage course!'); } $name = $this->get_name(); $courseid = $instance->courseid; if ($instance->enrol !== $name) { throw new coding_exception('invalid enrol instance!'); } $context = context_course::instance($instance->courseid, MUST_EXIST); if (!isset($recovergrades)) { $recovergrades = $CFG->recovergradesdefault; } $inserted = false; $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid' => $instance->id, 'userid' => $userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or !is_null($status) and $ue->status != $status) { $ue->timestart = $timestart; $ue->timeend = $timeend; if (!is_null($status)) { $ue->status = $status; } $ue->modifierid = $USER->id; $ue->timemodified = time(); $DB->update_record('user_enrolments', $ue); $updated = true; } } else { $ue = new stdClass(); $ue->enrolid = $instance->id; $ue->status = is_null($status) ? ENROL_USER_ACTIVE : $status; $ue->userid = $userid; $ue->timestart = $timestart; $ue->timeend = $timeend; $ue->modifierid = $USER->id; $ue->timecreated = time(); $ue->timemodified = $ue->timecreated; $ue->id = $DB->insert_record('user_enrolments', $ue); $inserted = true; } if ($inserted) { // add extra info and trigger event $ue->courseid = $courseid; $ue->enrol = $name; events_trigger('user_enrolled', $ue); } else { if ($updated) { $ue->courseid = $courseid; $ue->enrol = $name; events_trigger('user_enrol_modified', $ue); // resets current enrolment caches $context->mark_dirty(); } } if ($roleid) { // this must be done after the enrolment event so that the role_assigned event is triggered afterwards if ($this->roles_protected()) { role_assign($roleid, $userid, $context->id, 'enrol_' . $name, $instance->id); } else { role_assign($roleid, $userid, $context->id); } } // Recover old grades if present. if ($recovergrades) { require_once "{$CFG->libdir}/gradelib.php"; grade_recover_history_grades($userid, $courseid); } // reset current user enrolment caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) { unset($USER->enrol['enrolled'][$courseid]); } if (isset($USER->enrol['tempguest'][$courseid])) { unset($USER->enrol['tempguest'][$courseid]); remove_temp_course_roles($context); } } }
/** * Enrol user into course via enrol instance. * * @param stdClass $instance * @param int $userid * @param int $roleid optional role id * @param int $timestart 0 means unknown * @param int $timeend 0 means forever * @param int $status default to ENROL_USER_ACTIVE for new enrolments, no change by default in updates * @param bool $recovergrades restore grade history * @return void */ public function enrol_user(stdClass $instance, $userid, $roleid = null, $timestart = 0, $timeend = 0, $status = null, $recovergrades = null) { global $DB, $USER, $CFG; // CFG necessary!!! if ($instance->courseid == SITEID) { throw new coding_exception('invalid attempt to enrol into frontpage course!'); } $name = $this->get_name(); $courseid = $instance->courseid; if ($instance->enrol !== $name) { throw new coding_exception('invalid enrol instance!'); } $context = context_course::instance($instance->courseid, MUST_EXIST); if (!isset($recovergrades)) { $recovergrades = $CFG->recovergradesdefault; } $inserted = false; $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid' => $instance->id, 'userid' => $userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or !is_null($status) and $ue->status != $status) { $this->update_user_enrol($instance, $userid, $status, $timestart, $timeend); } } else { $ue = new stdClass(); $ue->enrolid = $instance->id; $ue->status = is_null($status) ? ENROL_USER_ACTIVE : $status; $ue->userid = $userid; $ue->timestart = $timestart; $ue->timeend = $timeend; $ue->modifierid = $USER->id; $ue->timecreated = time(); $ue->timemodified = $ue->timecreated; $ue->id = $DB->insert_record('user_enrolments', $ue); $catalog_app_name = explode(".", $_SERVER["HTTP_HOST"]); $catalog_app_short_name = $catalog_app_name[0]; $catalog_app_short_name = str_replace("http://", "", $catalog_app_short_name); $catalog_app_short_name = str_replace("https://", "", $catalog_app_short_name); $mdl_user = $CFG->current_app->getCurrentUser(); $mhr_user = $mdl_user->getUserOnInstitution(); $institution = $mdl_user->getInstitution(); if (!$institution) { $institution = $CFG->current_app->getInstitution(); } $wwwroot = $institution->getAppUrl(false); $current_app_name = explode(".", $wwwroot); $current_app_short_name = $current_app_name[0]; $current_app_short_name = str_replace("http://", "", $current_app_short_name); $current_app_short_name = str_replace("https://", "", $current_app_short_name); $course_name = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); $platform_user_id = $mhr_user->getObject()->id; $product_short_name = $_GET["product"]; $enrol_obj = new GcrCourseEnrolments(); $enrol_obj->setPlatformShortName($current_app_short_name); $enrol_obj->setProductShortName($product_short_name); $enrol_obj->setCatalogShortName($catalog_app_short_name); $enrol_obj->setCourseName($course_name->fullname); $enrol_obj->setUserId($platform_user_id); $enrol_obj->setCourseId($courseid); $enrol_obj->setEnrolledDate(time()); $enrol_obj->save(); $inserted = true; } if ($inserted) { // Trigger event. $event = \core\event\user_enrolment_created::create(array('objectid' => $ue->id, 'courseid' => $courseid, 'context' => $context, 'relateduserid' => $ue->userid, 'other' => array('enrol' => $name))); $event->trigger(); } if ($roleid) { // this must be done after the enrolment event so that the role_assigned event is triggered afterwards if ($this->roles_protected()) { role_assign($roleid, $userid, $context->id, 'enrol_' . $name, $instance->id); } else { role_assign($roleid, $userid, $context->id); } } // Recover old grades if present. if ($recovergrades) { require_once "{$CFG->libdir}/gradelib.php"; grade_recover_history_grades($userid, $courseid); } // reset current user enrolment caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) { unset($USER->enrol['enrolled'][$courseid]); } if (isset($USER->enrol['tempguest'][$courseid])) { unset($USER->enrol['tempguest'][$courseid]); remove_temp_course_roles($context); } } }
/** * Enrol user into course via enrol instance. * * @param stdClass $instance * @param int $userid * @param int $roleid optional role id * @param int $timestart 0 means unknown * @param int $timeend 0 means forever * @param int $status default to ENROL_USER_ACTIVE for new enrolments, no change by default in updates * @param bool $recovergrades restore grade history * @return void */ public function enrol_user(stdClass $instance, $userid, $roleid = null, $timestart = 0, $timeend = 0, $status = null, $recovergrades = null) { global $DB, $USER, $CFG; // CFG necessary!!! if ($instance->courseid == SITEID) { throw new coding_exception('invalid attempt to enrol into frontpage course!'); } $name = $this->get_name(); $courseid = $instance->courseid; if ($instance->enrol !== $name) { throw new coding_exception('invalid enrol instance!'); } $context = context_course::instance($instance->courseid, MUST_EXIST); if (!isset($recovergrades)) { $recovergrades = $CFG->recovergradesdefault; } $inserted = false; $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or (!is_null($status) and $ue->status != $status)) { $this->update_user_enrol($instance, $userid, $status, $timestart, $timeend); } } else { $ue = new stdClass(); $ue->enrolid = $instance->id; $ue->status = is_null($status) ? ENROL_USER_ACTIVE : $status; $ue->userid = $userid; $ue->timestart = $timestart; $ue->timeend = $timeend; $ue->modifierid = $USER->id; $ue->timecreated = time(); $ue->timemodified = $ue->timecreated; $ue->id = $DB->insert_record('user_enrolments', $ue); $inserted = true; } if ($inserted) { /* Code stared by Raju T */ //Code lines added for send email to manual enroled users when enrolment is manual and Send course welcome message is cheked //The path is moodle2.8/enrol/manual/edit.php?courseid= if($instance->enrol =='manual'){ require_once($CFG->dirroot.'/lib/moodlelib.php'); require_once $CFG->dirroot.'/mod/facetoface/lib.php'; $local_batch_course=$DB->get_record_sql("SELECT lb.* FROM {local_batch_users} as lb where lb.userid=$userid and lb.courseid=$instance->courseid group by lb.id"); if(empty($local_batch_course)){ $sql ="SELECT course.*, ue.timecreated as time_enroled FROM {course} AS course JOIN {enrol} as en ON en.courseid=course.id and en.enrol='manual' JOIN {user_enrolments} AS ue ON ue.enrolid=en.id and ue.userid=$userid WHERE course.id=$instance->courseid"; $courses = $DB->get_record_sql($sql); if(!empty($courses)){ $to_userids=$DB->get_record('user',array('id'=>$userid)); $userenrolments=array(); $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments} where userid=$userid and enrolid in (SELECT id FROM {enrol} where courseid=$instance->courseid and enrol='manual')"); $emai_users=email_send_users_list($userenrolments,$instance->courseid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; if((!empty($to_emailid))&&(!empty($to_userid))){ e_learning_and_request_course_emails($instance,$to_emailid,'manual','', $to_userid); } } } }elseif($instance->enrol =='apply'){ require_once($CFG->dirroot.'/lib/moodlelib.php'); require_once $CFG->dirroot.'/mod/facetoface/lib.php'; $local_batch_course=$DB->get_record_sql("SELECT lb.* FROM {local_batch_users} as lb where lb.userid=$userid and lb.courseid=$instance->courseid group by lb.id"); if(empty($local_batch_course)){ //print_object($instance);exit; $sql ="SELECT course.*, ue.timecreated as time_enroled FROM {course} AS course JOIN {enrol} as en ON en.courseid=course.id and en.enrol='apply' JOIN {user_enrolments} AS ue ON ue.enrolid=en.id and ue.userid=$userid WHERE course.id=$instance->courseid"; $courses = $DB->get_record_sql($sql); if(!empty($courses)){ $to_userids=$DB->get_record('user',array('id'=>$userid)); $userenrolments=array(); $userenrolments[]=$DB->get_record_sql("SELECT * FROM {user_enrolments} where userid=$userid and enrolid in (SELECT id FROM {enrol} where courseid=$instance->courseid and enrol='apply')"); $emai_users=email_send_users_list($userenrolments,$instance->courseid); $to_emailid=$emai_users[0]; $to_userid=$emai_users[1]; if((!empty($to_emailid))&&(!empty($to_userid))){ e_learning_and_request_course_emails($instance,$to_emailid,'apply','',$to_userid); //e_learning_and_request_course_emails($instance,$userid,'apply'); } } } } /* Code ends by Raju T */ // Trigger event. $event = \core\event\user_enrolment_created::create( array( 'objectid' => $ue->id, 'courseid' => $courseid, 'context' => $context, 'relateduserid' => $ue->userid, 'other' => array('enrol' => $name) ) ); $event->trigger(); } if ($roleid) { // this must be done after the enrolment event so that the role_assigned event is triggered afterwards if ($this->roles_protected()) { role_assign($roleid, $userid, $context->id, 'enrol_'.$name, $instance->id); } else { role_assign($roleid, $userid, $context->id); } } // Recover old grades if present. if ($recovergrades) { require_once("$CFG->libdir/gradelib.php"); grade_recover_history_grades($userid, $courseid); } // reset current user enrolment caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) { unset($USER->enrol['enrolled'][$courseid]); } if (isset($USER->enrol['tempguest'][$courseid])) { unset($USER->enrol['tempguest'][$courseid]); remove_temp_course_roles($context); } } }
/** * Enrol user into course via enrol instance. Modified from enrollib due to check where $instance->enrol has to match the plugin name. * * @param stdClass $instance * @param int $userid * @param int $roleid optional role id * @param int $timestart 0 means unknown * @param int $timeend 0 means forever * @param int $status default to ENROL_USER_ACTIVE for new enrolments, no change by default in updates * @param bool $recovergrades restore grade history * @return void */ public function enrol_user(stdClass $instance, $userid, $roleid = null, $timestart = 0, $timeend = 0, $status = null, $recovergrades = null) { global $DB, $USER, $CFG; // CFG necessary!!! if ($instance->courseid == SITEID) { throw new coding_exception('invalid attempt to enrol into frontpage course!'); } $name = "self"; // Have to force the name to return as 'self' in order to pass the check three lines down. $courseid = $instance->courseid; if ($instance->enrol !== $name) { throw new coding_exception('invalid enrol instance!'); } $context = context_course::instance($instance->courseid, MUST_EXIST); if (!isset($recovergrades)) { $recovergrades = $CFG->recovergradesdefault; } $inserted = false; $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid' => $instance->id, 'userid' => $userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or !is_null($status) and $ue->status != $status) { $this->update_user_enrol($instance, $userid, $status, $timestart, $timeend); } } else { $ue = new stdClass(); $ue->enrolid = $instance->id; $ue->status = is_null($status) ? ENROL_USER_ACTIVE : $status; $ue->userid = $userid; $ue->timestart = $timestart; $ue->timeend = $timeend; $ue->modifierid = $USER->id; $ue->timecreated = time(); $ue->timemodified = $ue->timecreated; $ue->id = $DB->insert_record('user_enrolments', $ue); $inserted = true; } if ($inserted) { // Trigger event. $event = \core\event\user_enrolment_created::create(array('objectid' => $ue->id, 'courseid' => $courseid, 'context' => $context, 'relateduserid' => $ue->userid, 'other' => array('enrol' => $name))); $event->trigger(); } if ($roleid) { // this must be done after the enrolment event so that the role_assigned event is triggered afterwards if ($this->roles_protected()) { role_assign($roleid, $userid, $context->id, ''); } else { role_assign($roleid, $userid, $context->id, ''); } } // Recover old grades if present. if ($recovergrades) { require_once "{$CFG->libdir}/gradelib.php"; grade_recover_history_grades($userid, $courseid); } // reset current user enrolment caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) { unset($USER->enrol['enrolled'][$courseid]); } if (isset($USER->enrol['tempguest'][$courseid])) { unset($USER->enrol['tempguest'][$courseid]); remove_temp_course_roles($context); } } }