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
Download UDF

author

Chris Wigginton                                   Chris Wigginton

Version: 1 | Requires: ColdFusion 5 | Library: DataManipulationLib

 
Rated 13 time(s). Average Rating: 2.3

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:

<cfscript>
/**
* 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;
    
}
</cfscript>

Search CFLib.org


Latest Additions

Shawn Porter Shawn Porter added
DeMoronize
2 hour(s) ago

Chris Carey Chris Carey added
readPropertiesFi...
1 day(s) ago

Randy Johnson Randy Johnson added
lastDayofWeek
3 day(s) ago

Frank Marion Frank Marion added
sitemapPing
7 day(s) ago

Top Rated

James Sleeman                                     QuickSort
Rated 5.0, 3 time(s)

Barney Boisvert indentXml
Rated 5.0, 3 time(s)

Nathan Dintenfass                                 queryColumnsToSt...
Rated 5.0, 3 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 3 time(s)

Created by Raymond Camden / Design by Justin Johnson