获取具有给定用户ID的给定课程的用户注册日和注册时段

时间:2014-02-20 04:25:31

标签: php moodle

我正在努力在用户手动注册课程时发送电子邮件。到现在我可以发送电子邮件,当用户注册到系统我想知道的是发送注册过期日期与电子邮件,所以如果我可以从数据库这将对我有用..,(任何其他方法可以让这个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);
}

2 个答案:

答案 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