public function test_certificate_get_ordinal_number_suffix()
 {
     $this->assertEquals('th', certificate_get_ordinal_number_suffix(0));
     $this->assertEquals('st', certificate_get_ordinal_number_suffix(1));
     $this->assertEquals('nd', certificate_get_ordinal_number_suffix(2));
     $this->assertEquals('rd', certificate_get_ordinal_number_suffix(3));
     $this->assertEquals('th', certificate_get_ordinal_number_suffix(12));
 }
Ejemplo n.º 2
0
/**
 * Returns the date to display for the certificate.
 *
 * @param stdClass $certificate
 * @param stdClass $certrecord
 * @param stdClass $course
 * @param int $userid
 * @return string the date
 */
function certificate_get_date($certificate, $certrecord, $course, $userid = null)
{
    global $DB, $USER;
    if (empty($userid)) {
        $userid = $USER->id;
    }
    // Set certificate date to current time, can be overwritten later
    $date = $certrecord->timecreated;
    if ($certificate->printdate == '2') {
        // Get the enrolment end date
        $sql = "SELECT MAX(c.timecompleted) as timecompleted\n                  FROM {course_completions} c\n                 WHERE c.userid = :userid\n                   AND c.course = :courseid";
        if ($timecompleted = $DB->get_record_sql($sql, array('userid' => $userid, 'courseid' => $course->id))) {
            if (!empty($timecompleted->timecompleted)) {
                $date = $timecompleted->timecompleted;
            }
        }
    } else {
        if ($certificate->printdate > 2) {
            if ($modinfo = certificate_get_mod_grade($course, $certificate->printdate, $userid)) {
                $date = $modinfo->dategraded;
            }
        }
    }
    if ($certificate->printdate > 0) {
        if ($certificate->datefmt == 1) {
            $certificatedate = userdate($date, '%B %d, %Y');
        } else {
            if ($certificate->datefmt == 2) {
                $suffix = certificate_get_ordinal_number_suffix(userdate($date, '%d'));
                $certificatedate = userdate($date, '%B %d' . $suffix . ', %Y');
            } else {
                if ($certificate->datefmt == 3) {
                    $certificatedate = userdate($date, '%d %B %Y');
                } else {
                    if ($certificate->datefmt == 4) {
                        $certificatedate = userdate($date, '%B %Y');
                    } else {
                        if ($certificate->datefmt == 5) {
                            $certificatedate = userdate($date, get_string('strftimedate', 'langconfig'));
                        }
                    }
                }
            }
        }
        return $certificatedate;
    }
    return '';
}