/**
 * Return list of marked submissions that have not been mailed out for currently enrolled students
 */
function facetoface_get_unmailed_reminders() {
    global $CFG, $DB;

    $submissions = $DB->get_records_sql("
        SELECT
            su.*,
            f.course,
            f.id as facetofaceid,
            f.name as facetofacename,
            se.duration,
            se.normalcost,
            se.discountcost,
            se.details,
            se.datetimeknown
        FROM
            {facetoface_signups} su
        INNER JOIN
            {facetoface_signups_status} sus
         ON su.id = sus.signupid
        AND sus.superceded = 0
        AND sus.statuscode = ?
        JOIN
            {facetoface_sessions} se
         ON su.sessionid = se.id
        JOIN
            {facetoface} f
         ON se.facetoface = f.id
        WHERE
            su.mailedreminder = 0
        AND se.datetimeknown = 1
    ", array(MDL_F2F_STATUS_BOOKED));

    if ($submissions) {
        foreach ($submissions as $key => $value) {
            $submissions[$key]->duration = facetoface_minutes_to_hours($submissions[$key]->duration);
            $submissions[$key]->sessiondates = facetoface_get_session_dates($value->sessionid);
        }
    }

    return $submissions;
}
示例#2
0
/**
 * Get all records from facetoface_sessions for a given facetoface activity and location
 *
 * @param integer $facetofaceid ID of the activity
 * @param string $location location filter (optional)
 */
function facetoface_get_sessions($facetofaceid, $location='') {
    global $CFG,$DB;

    $fromclause = "FROM {facetoface_sessions} s";
    $locationwhere = '';
    $locationparams = array();
    if (!empty($location)) {
        $fromclause = "FROM {facetoface_session_data} d
                       JOIN {facetoface_sessions} s ON s.id = d.sessionid";
        $locationwhere .= " AND d.data = ?";
        $locationparams[] = $location;
    }
    $sessions = $DB->get_records_sql("SELECT s.*
                                   $fromclause
                        LEFT OUTER JOIN (SELECT sessionid, min(timestart) AS mintimestart
                                           FROM {facetoface_sessions_dates} GROUP BY sessionid) m ON m.sessionid = s.id
                                  WHERE s.facetoface = ?
                                        $locationwhere
                               ORDER BY s.datetimeknown, m.mintimestart", array_merge(array($facetofaceid), $locationparams));

    if ($sessions) {
        foreach ($sessions as $key => $value) {
            $sessions[$key]->duration = facetoface_minutes_to_hours($sessions[$key]->duration);
            $sessions[$key]->sessiondates = facetoface_get_session_dates($value->id);
        }
    }
    return $sessions;
}
示例#3
0
/**
 * Return list of marked submissions that have not been mailed out for currently enrolled students
 */
function facetoface_get_unmailed_reminders()
{
    global $CFG, $DB;
    $submissions = $DB->get_records_sql("\n        SELECT\n            su.*,\n            f.course,\n            f.id as facetofaceid,\n            f.name as facetofacename,\n            f.reminderperiod,\n            se.duration,\n            se.normalcost,\n            se.discountcost,\n            se.details,\n            se.datetimeknown\n        FROM\n            {facetoface_signups} su\n        INNER JOIN\n            {facetoface_signups_status} sus\n         ON su.id = sus.signupid\n        AND sus.superceded = 0\n        AND sus.statuscode = ?\n        JOIN\n            {facetoface_sessions} se\n         ON su.sessionid = se.id\n        JOIN\n            {facetoface} f\n         ON se.facetoface = f.id\n        WHERE\n            su.mailedreminder = 0\n        AND se.datetimeknown = 1\n    ", array(MDL_F2F_STATUS_BOOKED));
    if ($submissions) {
        foreach ($submissions as $key => $value) {
            $submissions[$key]->duration = facetoface_minutes_to_hours($submissions[$key]->duration);
            $submissions[$key]->sessiondates = facetoface_get_session_dates($value->sessionid);
        }
    }
    return $submissions;
}
 public function test_facetoface_minutes_to_hours()
 {
     // Test for positive minutes value.
     $this->assertEqual(facetoface_minutes_to_hours('11'), '0:11');
     // Test for positive hours & minutes value.
     $this->assertEqual(facetoface_minutes_to_hours('67'), '1:7');
     // Test for negative minutes value.
     $this->assertEqual(facetoface_minutes_to_hours('-42'), '-42');
     // Test for negative hours and minutes value.
     $this->assertEqual(facetoface_minutes_to_hours('-7:19'), '-7:19');
     // Test for invalid characters value.
     $this->assertEqual(facetoface_minutes_to_hours('invalid_string'), '0');
 }
示例#5
0
function facetoface_get_custom_sessions($facetofaceid, $location='') {
    global $CFG,$DB,$USER;

  $fromclause = "FROM {facetoface} fa,{facetoface_sessions} s";
    $locationwhere = '';
    $locationparams = array();
    if (!empty($location)) {
        $fromclause = "FROM {facetoface_session_data} d
                       JOIN {facetoface_sessions} s ON s.id = d.sessionid";
        $locationwhere .= " AND d.data = ?";
        $locationparams[] = $location;
    }
    $sessions = $DB->get_records_sql("SELECT s.*,fa.name
                                   $fromclause
                        LEFT OUTER JOIN (SELECT sessionid, min(timestart) AS mintimestart
                                           FROM {facetoface_sessions_dates} GROUP BY sessionid) m ON m.sessionid = s.id
                                 LEFT JOIN {facetoface_signups} fs ON fs.sessionid=s.id LEFT JOIN {facetoface_signups_status} fss ON fss.signupid=fs.id WHERE s.facetoface=fa.id AND fs.userid={$USER->id} AND fss.statuscode=70
AND fss.superceded=0                                        $locationwhere
                               ORDER BY s.datetimeknown, m.mintimestart");
   

    
    if ($sessions) {
        foreach ($sessions as $key => $value) {
            $sessions[$key]->duration = facetoface_minutes_to_hours($sessions[$key]->duration);
            $sessions[$key]->sessiondates = facetoface_get_session_dates($value->id);
        }
    }
    return $sessions;
}