/** * Substitute the placeholders in email templates for the actual data * * Expects the following parameters in the $data object: * - datetimeknown * - details * - discountcost * - duration * - normalcost * - sessiondates * * @access public * @param string $msg Email message * @param string $facetofacename F2F name * @param int $reminderperiod Num business days before event to send reminder * @param obj $user The subject of the message * @param obj $data Session data * @param int $sessionid Session ID * @return string */ function facetoface_email_substitutions($msg, $facetofacename, $reminderperiod, $user, $data, $sessionid) { global $CFG, $DB; if (empty($msg)) { return ''; } if ($data->datetimeknown) { // Scheduled session. $sessiondate = userdate($data->sessiondates[0]->timestart, get_string('strftimedate')); $starttime = userdate($data->sessiondates[0]->timestart, get_string('strftimetime')); $finishtime = userdate($data->sessiondates[0]->timefinish, get_string('strftimetime')); $alldates = ''; foreach ($data->sessiondates as $date) { if ($alldates != '') { $alldates .= "\n"; } $alldates .= userdate($date->timestart, get_string('strftimedate')) . ', '; $alldates .= userdate($date->timestart, get_string('strftimetime')) . ' to ' . userdate($date->timefinish, get_string('strftimetime')); } } else { // Wait-listed session. $sessiondate = get_string('unknowndate', 'facetoface'); $alldates = get_string('unknowndate', 'facetoface'); $starttime = get_string('unknowntime', 'facetoface'); $finishtime = get_string('unknowntime', 'facetoface'); } $msg = str_replace(get_string('placeholder:facetofacename', 'facetoface'), $facetofacename, $msg); $msg = str_replace(get_string('placeholder:firstname', 'facetoface'), $user->firstname, $msg); $msg = str_replace(get_string('placeholder:lastname', 'facetoface'), $user->lastname, $msg); $msg = str_replace(get_string('placeholder:cost', 'facetoface'), facetoface_cost($user->id, $sessionid, $data, false), $msg); $msg = str_replace(get_string('placeholder:alldates', 'facetoface'), $alldates, $msg); $msg = str_replace(get_string('placeholder:sessiondate', 'facetoface'), $sessiondate, $msg); $msg = str_replace(get_string('placeholder:starttime', 'facetoface'), $starttime, $msg); $msg = str_replace(get_string('placeholder:finishtime', 'facetoface'), $finishtime, $msg); $msg = str_replace(get_string('placeholder:duration', 'facetoface'), format_duration($data->duration), $msg); if (empty($data->details)) { $msg = str_replace(get_string('placeholder:details', 'facetoface'), '', $msg); } else { $msg = str_replace(get_string('placeholder:details', 'facetoface'), html_to_text($data->details), $msg); } $msg = str_replace(get_string('placeholder:reminderperiod', 'facetoface'), $reminderperiod, $msg); // Replace more meta data. $msg = str_replace(get_string('placeholder:attendeeslink', 'facetoface'), $CFG->wwwroot . '/mod/facetoface/attendees.php?s=' . $data->id, $msg); // Custom session fields (they look like "session:shortname" in the templates). $customfields = facetoface_get_session_customfields(); $customdata = $DB->get_records('facetoface_session_data', array('sessionid' => $sessionid), '', 'fieldid, data'); foreach ($customfields as $field) { $placeholder = "[session:{$field->shortname}]"; $value = ''; if (!empty($customdata[$field->id])) { if (CUSTOMFIELD_TYPE_MULTISELECT == $field->type) { $value = str_replace(CUSTOMFIELD_DELIMITER, ', ', $customdata[$field->id]->data); } else { $value = $customdata[$field->id]->data; } } $msg = str_replace($placeholder, $value, $msg); } return $msg; }
if ($action == 'takeattendance') { // Show current status $data[] = get_string('status_'.facetoface_get_status($attendee->statuscode), 'facetoface'); if (!$download) { $optionid = 'submissionid_'.$attendee->submissionid; $status = $attendee->statuscode; $select = html_writer::select($status_options, $optionid, $status); $data[] = $select; } } else if ($action == 'cancellations') { $data[] = userdate($attendee->timecancelled, get_string('strftimedatetime')); $data[] = isset($attendee->cancelreason) ? format_string($attendee->cancelreason) : get_string('none'); } else { if (!get_config(NULL, 'facetoface_hidecost')) { $data[] = facetoface_cost($attendee->id, $session->id, $session); if (!get_config(NULL, 'facetoface_hidediscount')) { $data[] = $attendee->discountcode; } } $data[] = str_replace(' ', ' ', get_string('status_'.facetoface_get_status($attendee->statuscode), 'facetoface')); } if (!$download) { $table->add_data($data); } else { $export_rows[] = $data; } } if (!$download) { $table->finish_output(); } else {
/** * Subsitute the placeholders in message templates for the actual data * * Expects the following parameters in the $data object: * - datetimeknown * - details * - discountcost * - duration * - normalcost * - sessiondates * * @access public * @param string $msg Email message * @param string $facetofacename F2F name * @param obj $user The subject of the message * @param obj $data Session data * @param int $sessionid Session ID * @return string */ function facetoface_message_substitutions($msg, $coursename, $facetofacename, $user, $data, $sessionid) { global $CFG, $DB; if (empty($msg)) { return ''; } if ($data->datetimeknown) { // Scheduled session $alldates = ''; foreach ($data->sessiondates as $date) { if ($alldates != '') { $alldates .= "\n"; } $startdate = userdate($date->timestart, get_string('strftimedate'), $date->sessiontimezone); $finishdate = userdate($date->timefinish, get_string('strftimedate'), $date->sessiontimezone); if ($startdate == $finishdate) { $alldates .= $startdate . ', '; } else { $alldates .= $startdate . ' - ' . $finishdate . ', '; } $starttime = userdate($date->timestart, get_string('strftimetime'), $date->sessiontimezone); $finishtime = userdate($date->timefinish, get_string('strftimetime'), $date->sessiontimezone); $timestr = $starttime . ' - ' . $finishtime . ' ' . $date->sessiontimezone; $alldates .= $timestr; } $startdate = userdate($data->sessiondates[0]->timestart, get_string('strftimedate'), $date->sessiontimezone); $finishdate = userdate($data->sessiondates[0]->timefinish, get_string('strftimedate'), $date->sessiontimezone); $sessiondate = ($startdate == $finishdate) ? $startdate : $startdate . ' - ' . $finishdate; $starttime = userdate($data->sessiondates[0]->timestart, get_string('strftimetime'), $date->sessiontimezone); $finishtime = userdate($data->sessiondates[0]->timefinish, get_string('strftimetime'), $date->sessiontimezone); } else { // Wait-listed session $startdate = get_string('unknowndate', 'facetoface'); $finishdate = get_string('unknowndate', 'facetoface'); $sessiondate = get_string('unknowndate', 'facetoface'); $alldates = get_string('unknowndate', 'facetoface'); $starttime = get_string('unknowntime', 'facetoface'); $finishtime = get_string('unknowntime', 'facetoface'); } $msg = str_replace(get_string('placeholder:coursename', 'facetoface'), $coursename, $msg); $msg = str_replace(get_string('placeholder:facetofacename', 'facetoface'), $facetofacename, $msg); $msg = str_replace(get_string('placeholder:firstname', 'facetoface'), $user->firstname, $msg); $msg = str_replace(get_string('placeholder:lastname', 'facetoface'), $user->lastname, $msg); $msg = str_replace(get_string('placeholder:cost', 'facetoface'), facetoface_cost($user->id, $sessionid, $data), $msg); $msg = str_replace(get_string('placeholder:alldates', 'facetoface'), $alldates, $msg); $msg = str_replace(get_string('placeholder:sessiondate', 'facetoface'), $sessiondate, $msg); $msg = str_replace(get_string('placeholder:startdate', 'facetoface'), $startdate, $msg); $msg = str_replace(get_string('placeholder:finishdate', 'facetoface'), $finishdate, $msg); $msg = str_replace(get_string('placeholder:starttime', 'facetoface'), $starttime, $msg); $msg = str_replace(get_string('placeholder:finishtime', 'facetoface'), $finishtime, $msg); $msg = str_replace(get_string('placeholder:duration', 'facetoface'), format_duration($data->duration), $msg); // add placeholders that somehow have been forgetten since moodle $roomnull = 'N/A'; // Displayed if empty. // Defaults if values are empty $strlocation = $roomnull; $strvenue = $roomnull; $strroom = $roomnull; if ($room = facetoface_get_session_room($sessionid)) { $strlocation = isset($room->address) ? $room->address : $roomnull; $strvenue = isset($room->building) ? $room->building : $roomnull; $strroom = isset($room->name) ? $room->name : $roomnull; } $msg = str_replace(get_string('placeholder:location', 'facetoface'), $strlocation, $msg); $msg = str_replace(get_string('placeholder:venue', 'facetoface'), $strvenue, $msg); $msg = str_replace(get_string('placeholder:room', 'facetoface'), $strroom, $msg); if (empty($data->details)) { $msg = str_replace(get_string('placeholder:details', 'facetoface'), '', $msg); } else { $msg = str_replace(get_string('placeholder:details', 'facetoface'), html_to_text($data->details), $msg); } // Replace more meta data $attendees_url = new moodle_url('/mod/facetoface/attendees.php', array('s' => $sessionid, 'action' => 'approvalrequired')); $link = html_writer::link($attendees_url, $attendees_url, array('title' => get_string('attendees', 'facetoface'))); $msg = str_replace(get_string('placeholder:attendeeslink', 'facetoface'), $link, $msg); if (strstr($msg, get_string('placeholder:reminderperiod', 'facetoface'))) { // Handle the legacy reminderperiod placeholder. $reminderperiod = $DB->get_field('facetoface_notification', 'MAX(scheduleamount)', array('facetofaceid' => $data->facetoface, 'conditiontype' => MDL_F2F_CONDITION_BEFORE_SESSION, 'scheduleunit' => MDL_F2F_SCHEDULE_UNIT_DAY, 'status' => 1), IGNORE_MULTIPLE); $reminderperiod = empty($reminderperiod) ? 0 : $reminderperiod; $msg = str_replace(get_string('placeholder:reminderperiod', 'facetoface'), $reminderperiod, $msg); } // Custom session fields (they look like "session:shortname" in the templates) $customfields = facetoface_get_session_customfields(); $customdata = $DB->get_records('facetoface_session_data', array('sessionid' => $sessionid), '', 'fieldid, data'); foreach ($customfields as $field) { $placeholder = "[session:{$field->shortname}]"; $value = ''; if (!empty($customdata[$field->id])) { if (CUSTOMFIELD_TYPE_MULTISELECT == $field->type) { $value = str_replace(CUSTOMFIELD_DELIMITER, ', ', $customdata[$field->id]->data); } else { $value = $customdata[$field->id]->data; } } $msg = str_replace($placeholder, $value, $msg); } return $msg; }
function test_facetoface_cost() { // Test variables - case WITH discount. $sessiondata = $this->sessiondata['sess0']; $sess0 = $this->array_to_object($sessiondata); $userid1 = 1; $sessionid1 = 1; // Variable for test case NO discount. $sessiondata1 = $this->sessiondata['sess1']; $sess1 = $this->array_to_object($sessiondata1); $userid2 = 2; $sessionid2 = 2; // Test WITH discount. $this->assertEquals(facetoface_cost($userid1, $sessionid1, $sess0), '$60'); // Test NO discount case. $this->assertEquals(facetoface_cost($userid2, $sessionid2, $sess1), '$90'); $this->resetAfterTest(true); }