function calendar_get_ics_invitation_string
Search API
7.x calendar.module | calendar_get_ics_invitation_string($event_title, $location, $description = "", $start_dt = 0, $end_dt = 0) |
6.x calendar.module | calendar_get_ics_invitation_string($event_title, $location, $description = "", $start_dt = 0, $end_dt = 0) |
Return back an ics file (as a string) to be used as an attachment for emails, which will facilitate a calendar invitation.
Inspired from: https://gist.github.com/jakebellacera/635416/3c81643cc236a5efdf535fcbf3f...
start_dt and end_dt should look like Ymd\THis\Z (in UTC format)
2 calls to calendar_get_ics_invitation_string()
- calendar_appointment_content_form_validate in modules/
calendar/ calendar.module - Custom validate handler for when we save an appointment form. We want to confirm the student is valid, and also store ONLY the cwid.
- calendar_schedule_appointment_confirm_form_submit in modules/
calendar/ calendar.module - We passed validation, it's time to actually submit now!
File
- modules/
calendar/ calendar.module, line 3482
Code
function calendar_get_ics_invitation_string($event_title, $location, $description = "", $start_dt = 0, $end_dt = 0) {
$rtn = "";
if ($description == "") {
$description = $event_title;
}
$description = strip_tags($description);
$description = str_replace("\r\n", "\n", $description); // Convert from windows to unix style linebreaks.
$description = str_replace("\n", "\\n", $description); // required if we have line breaks in the description. We have to escape the slash.
$description = str_replace(";", "\\;", $description); // We have to escape semi-colons the same way
$description = str_replace(",", "\\,", $description); // And commas.
// We have to do "line folding" for the description if it is longer than 75 chars. See: https://icalendar.org/iCalendar-RFC-5545/3-1-content-lines.html
$rtn .= "BEGIN:VCALENDAR\n";
$rtn .= "VERSION:2.0\n";
$rtn .= "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n";
$rtn .= "CALSCALE:GREGORIAN\n";
$rtn .= "BEGIN:VEVENT\n";
$rtn .= "DTEND:$end_dt\n";
$rtn .= "UID:" . sha1("FlightPath ~~" . $event_title . $start_dt . $end_dt) . "\n";
$rtn .= "SEQUENCE:0\n";
$rtn .= "DTSTAMP:" . date("Ymd\THis\Z", time()) . "\n";
$rtn .= "LOCATION:$location\n";
$rtn .= "DESCRIPTION:" . calendar_ics_split("DESCRIPTION:", $description) . "\n";
//$rtn .= "URL;VALUE=URI: http://mydomain.com/events/blah\n";
$rtn .= "SUMMARY:$event_title\n";
$rtn .= "DTSTART:$start_dt\n";
$rtn .= "END:VEVENT\n";
$rtn .= "END:VCALENDAR";
return $rtn;
}