我正在努力在用户手动注册课程时发送电子邮件。到现在我可以发送电子邮件,当用户注册到系统我想知道的是发送注册过期日期与电子邮件,所以如果我可以从数据库这将对我有用..,(任何其他方法可以让这个insie注册也很好)
这是我尝试传递此参数的地方
public function enrol_user(stdClass $instance, $userid, $roleid = NULL, $timestart = 0, $timeend = 0, $status = NULL, $recovergrades = NULL) {
global $DB;
$alreadyenroled = $DB->record_exists('user_enrolments', array('enrolid' => $instance->id, 'userid' => $userid));
parent::enrol_user($instance, $userid, $roleid, $timestart, $timeend, $status, $recovergrades);
if (!$alreadyenroled && $instance->customint4) {
// Don't email immediately - give the admin a chance to remove users
// who were added by mistake
$this->queue_welcome_message($instance->id, $userid,$timestart,$timeend);
}
}
protected function queue_welcome_message($instanceid, $userid,$timestart,$timeend) {
global $DB;
if ($DB->record_exists('enrol_manual_email', array('instanceid' => $instanceid,
'userid' => $userid,'ts' => $timestart,'te' => $timeend))) {
return;
}
$ins = new stdClass();
$ins->instanceid = $instanceid;
$ins->userid = $userid;
////edit lasitha
$ins->ts = $timestart;
$ins->te = $timeend;
$DB->insert_record('enrol_manual_email', $ins);
}
答案 0 :(得分:2)
执行此操作的最佳方法是,当您将Moodle网站更新为新版本时,它不会中断,即创建一个新的本地插件(http://docs.moodle.org/dev/Local_plugins)。然后,您可以使用Moodle事件API(http://docs.moodle.org/dev/Events_API)订阅“user_enrolled”事件。
您从事件API获取的数据将包括字段'timeend'(来自表mdl_user_enrolments),该字段是注册过期的时间戳。如果此字段为“0”,则表示注册不会过期。如果是任何其他值,则可以调用:
userdate($data->timeend, get_string('strftimedate'));
将其格式化为日期。
(有关您可以使用的其他时间格式,请参阅'/lang/en/langconfig.php' - 请注意,此日期将基于当前登录用户的时区 - 您可能需要使用'timezone' 'userdate'的参数,如果你想确保它是接收用户的正确时区。)
答案 1 :(得分:0)
此代码可帮助我获得我想要的内容
$user_enroll_data = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$user->id));
$normal_st_date=date('Y-m-d', $user_enroll_data->timestart);//course start date
$normal_end_date=date('Y-m-d',$user_enroll_data->timeend);//course end date