CFLib.org – Common Function Library Project

vCal(stEvent[, stEvent.description][, stEvent.subject][, stEvent.location][, stEvent.startTime][, stEvent.endTime][, stEvent.priority])

Last updated April 10, 2002

author

Chris Wigginton

Version: 1 | Requires: CF5 | Library: DataManipulationLib

Description:
Pass a formatted structure containing subject, descrition, start date/time in GMT, end date/time in GMT, and priority and get back a formatted string in the vCalendar format that can be saved to a file to be used as an attachment with cfmail.

Return Values:
Returns a string.

Example:

<cfscript>
  stEvent = StructNew();
  stEvent.description = "This can come from a file or other variable";
  stEvent.subject = "A vCal created with the vCal UDF";
  stEvent.location = "Chicago, IL";
  stEvent.startTime = "{ts '2002-01-14 20:53:07'}"; //dateObj or timestamp in GMT
  stEvent.endTime = "{ts '2002-01-14 21:53:07'}"; // dateObj or timestamp in GMT
  stEvent.priority = 2;
  vCalOutput = vCal(stEvent);
</cfscript>

<cfoutput>
#vCalOutput#
</cfoutput>

Parameters:

Name Description Required
stEvent Structure containg the key/value pairs comprising the vCalendar data. Keys are shown below: Yes
stEvent.description Description for the event. No
stEvent.subject Subject of the event. No
stEvent.location Location for the event. No
stEvent.startTime Event's start time in GMT. No
stEvent.endTime Event's end time in GMT. No
stEvent.priority Numeric priority for the event (1,2,3). No

Full UDF Source:

/**
 * Produces output used by the vCalendar standard for PIM's (such as Outlook).
 * There are other tags available such as (CF_AdvancedEmail) that will support multi-part mime encoding where the text of the attachment can be imbeded right into the email
 * 
 * @param stEvent      Structure containg the key/value pairs comprising the vCalendar data.  Keys are shown below: 
 * @param stEvent.description      Description for the event. 
 * @param stEvent.subject      Subject of the event. 
 * @param stEvent.location      Location for the event. 
 * @param stEvent.startTime      Event's start time in GMT. 
 * @param stEvent.endTime      Event's end time in GMT. 
 * @param stEvent.priority      Numeric priority for the event (1,2,3). 
 * @return Returns a string. 
 * @author Chris Wigginton (cwigginton@macromedia.com) 
 * @version 1.1, April 10, 2002 
 */
function vCal(stEvent)
{

    var description = "";
    var vCal = "";
    
    var CRLF=chr(13)&chr(10);
    
    if (NOT IsDefined("stEvent.startTime"))
        stEvent.startTime = DateConvert('local2Utc', Now());
    
    if (NOT IsDefined("stEvent.endTime"))
        stEvent.endTime = DateConvert('local2Utc', Now());
        
    if (NOT IsDefined("stEvent.location"))
        stEvent.location = "N/A";
                
    if (NOT IsDefined("stEvent.subject"))
        stEvent.subject = "Auto vCalendar Generated";
        
    if (NOT IsDefined("stEvent.description"))
        stEvent.description = "Autobot VCalendar Generated";
        
    if (NOT IsDefined("stEvent.priority"))
        stEvent.priority = "1";
            

    vCal = "BEGIN:VCALENDAR" & CRLF;
    vCal = vCal & "PRODID:-//Microsoft Corporation//OutlookMIMEDIR//EN" & CRLF;
    vCal = vCal & "VERSION:1.0" & CRLF;
    vCal = vCal & "BEGIN:VEVENT" & CRLF;
    vCal = vCal & "DTSTART:" & 
            DateFormat(stEvent.startTime,"yyyymmdd") & "T" & 
            TimeFormat(stEvent.startTime, "HHmmss") & "Z" & CRLF;
    vCal = vCal & "DTEND:" & DateFormat(stEvent.endTime, "yyyymmdd") & "T" & 
            TimeFormat(stEvent.endTime, "HHmmss") & "Z" & CRLF;
    vCal = vCal & "LOCATION:" & stEvent.location & CRLF;
    vCal = vCal & "SUMMARY;ENCODING=QUOTED-PRINTABLE:" & stEvent.subject & CRLF;
    
    vCal = vCal & "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:";
    // Convert CF_CRLF (13_10) into =0D=0A with CR/LF and indent sequences
    description = REReplace(stEvent.description,"[#Chr(13)##Chr(10)#]", "=0D=0A=#Chr(13)##Chr(10)#     ", "ALL");
    vCal = vCal & description & CRLF;
    
    vCal = vCal & "PRIORITY:" & stEvent.priority & CRLF;
    vCal = vCal & "END:VEVENT" & CRLF;
    vCal = vCal & "END:VCALENDAR" & CRLF;    
    
    return vCal;
    
}

Search CFLib.org


Latest Additions

Raymond Camden added
QueryDeleteRows
November 04, 2017

Leigh added
nullPad
May 11, 2016

Raymond Camden added
stripHTML
May 10, 2016

Kevin Cotton added
date2ExcelDate
May 05, 2016

Raymond Camden added
CapFirst
April 25, 2016

Created by Raymond Camden / Design by Justin Johnson