Data-ICal

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
        print $calendar->as_string;
 
DESCRIPTION
    A Data::ICal object represents a "VCALENDAR" object as defined in the
    iCalendar protocol (RFC 2445, MIME type "text/calendar"), as implemented
    in many popular calendaring programs such as Apple's iCal.
 
    Each Data::ICal object is a collection of "entries", which are objects
    of a subclass of Data::ICal::Entry. The types of entries defined by
    iCalendar (which refers to them as "components") include events, to-do
    items, journal entries, free/busy time indicators, and time zone
    descriptors; in addition, events and to-do items can contain alarm
    entries. (Currently, Data::ICal only implements to-do items and events.)
 
    Data::ICal is a subclass of Data::ICal::Entry; see its manpage for more
    methods applicable to Data::ICal.
 
METHODS
  new [ data => $data, ] [ filename => $file ], [ vcal10 => $bool ]
    Creates a new Data::ICal object.

doc/rfc2445.txt  view on Meta::CPAN

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
   This memo is formatted as a registration for a MIME media type per
   [RFC 2048]. However, the format in this memo is equally applicable
   for use outside of a MIME message content type.
 
   The proposed media type value is 'text/calendar'. This string would
   label a media type containing calendaring and scheduling information
   encoded as text characters formatted in a manner outlined below.
 
   This MIME media type provides a standard content type for capturing
   calendar event, to-do and journal entry information. It also can be
   used to convey free/busy time information. The content type is
   suitable as a MIME message entity that can be transferred over MIME
   based email systems, using HTTP or some other Internet transport. In
 
 
 
 
 
 
Dawson & Stenerson          Standards Track                     [Page 1]

doc/rfc2445.txt  view on Meta::CPAN

69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
   In order to avoid confusion with this referenced work, this memo is
   to be known as the iCalendar specification.
 
   This memo defines the format for specifying iCalendar object methods.
   An iCalendar object method is a set of usage constraints for the
   iCalendar object. For example, these methods might define scheduling
   messages that request an event be scheduled, reply to an event
   request, send a cancellation notice for an event, modify or replace
   the definition of an event, provide a counter proposal for an
   original event request, delegate an event request to another
   individual, request free or busy time, reply to a free or busy time
   request, or provide similar scheduling messages for a to-do or
   journal entry calendar component. The iCalendar Transport-indendent
   Interoperability Protocol (iTIP) defined in [ITIP] is one such
   scheduling protocol.
 
Table of Contents
 
   1 Introduction.....................................................5
   2 Basic Grammar and Conventions....................................6
    2.1 Formatting Conventions .......................................7

doc/rfc2445.txt  view on Meta::CPAN

285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
 
   unwired transport such as infrared might also be used.
 
   The memo also provides for the definition of iCalendar object methods
   that will map this content type to a set of messages for supporting
   calendaring and scheduling operations such as requesting, replying
   to, modifying, and canceling meetings or appointments, to-dos and
   journal entries. The iCalendar object methods can be used to define
   other calendaring and scheduling operations such a requesting for and
   replying with free/busy time data. Such a scheduling protocol is
   defined in the iCalendar Transport-independent Interoperability
   Protocol (iTIP) defined in [ITIP].
 
   The memo also includes a formal grammar for the content type based on
   the Internet ABNF defined in [RFC 2234]. This ABNF is required for
   the implementation of parsers and to serve as the definitive
   reference when ambiguities or questions arise in interpreting the
   descriptive prose definition of the memo.
 
2 Basic Grammar and Conventions

doc/rfc2445.txt  view on Meta::CPAN

614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
 
 
 
Dawson & Stenerson          Standards Track                    [Page 11]
RFC 2445                       iCalendar                   November 1998
 
 
   The file extension of "ifb" is to be used to designate a file
   containing free or busy time information consistent with this MIME
   content type.
 
   Macintosh file type codes: The file type code of "iCal" is to be used
   in Apple MacIntosh operating system environments to designate a file
   containing calendaring and scheduling information consistent with
   this MIME media type.
 
   The file type code of "iFBf" is to be used in Apple MacIntosh
   operating system environments to designate a file containing free or
   busy time information consistent with this MIME media type.
 
3.11 Contact for Further Information:
 
   Frank Dawson
   6544 Battleford Drive
   Raleigh, NC 27613-3502
   919-676-9515 (Telephone)
   919-676-9564 (Data/Facsimile)
   Frank_Dawson@Lotus.com (Internet Mail)

doc/rfc2445.txt  view on Meta::CPAN

966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
the following notation:
 
  parameter  = altrepparam           ; Alternate text representation
             / cnparam               ; Common name
             / cutypeparam           ; Calendar user type
             / delfromparam          ; Delegator
             / deltoparam            ; Delegatee
             / dirparam              ; Directory entry
             / encodingparam         ; Inline encoding
             / fmttypeparam          ; Format type
             / fbtypeparam           ; Free/busy time type
             / languageparam         ; Language for text
             / memberparam           ; Group or list membership
             / partstatparam         ; Participation status
             / rangeparam            ; Recurrence identifier range
             / trigrelparam          ; Alarm trigger relationship
             / reltypeparam          ; Relationship type
             / roleparam             ; Participation role
             / rsvpparam             ; RSVP expectation
             / sentbyparam           ; Sent by
             / tzidparam             ; Reference to time zone object

doc/rfc2445.txt  view on Meta::CPAN

1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
     Example:
 
      ATTACH;FMTTYPE=application/binary:ftp://domain.com/pub/docs/
       agenda.doc
 
4.2.9 Free/Busy Time Type
 
   Parameter Name: FBTYPE
 
   Purpose: To specify the free or busy time type.
 
   Format Definition: The property parameter is defined by the following
   notation:
 
     fbtypeparam        = "FBTYPE" "=" ("FREE" / "BUSY"
                        / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE"
                        / x-name
        ; Some experimental iCalendar data type.
                        / iana-token)
 
 
 
Dawson & Stenerson          Standards Track                    [Page 23]
RFC 2445                       iCalendar                   November 1998
 
 
        ; Some other IANA registered iCalendar data type.
 
   Description: The parameter specifies the free or busy time type. The
   value FREE indicates that the time interval is free for scheduling.
   The value BUSY indicates that the time interval is busy because one
   or more events have been scheduled for that interval. The value
   BUSY-UNAVAILABLE indicates that the time interval is busy and that
   the interval can not be scheduled. The value BUSY-TENTATIVE indicates
   that the time interval is busy because one or more events have been
   tentatively scheduled for that interval. If not specified on a
   property that allows this parameter, the default is BUSY.
 
   Example: The following is an example of this parameter on a FREEBUSY
   property.
 
     FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z
 
4.2.10 Language

doc/rfc2445.txt  view on Meta::CPAN

1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
The date with local time form is simply a date-time value that does
not contain the UTC designator nor does it reference a time zone. For
example, the following represents Janurary 18, 1998, at 11 PM:
 
  DTSTART:19980118T230000
 
Date-time values of this type are said to be "floating" and are not
bound to any time zone in particular. They are used to represent the
same hour, minute, and second value regardless of which time zone is
currently being observed. For example, an event can be defined that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day, no matter which time zone the person is in. In these
cases, a local time can be specified. The recipient of an iCalendar
object with a property value consisting of a local time, without any
relative time zone information, SHOULD interpret the value as being
fixed to whatever time zone the ATTENDEE is in at any given moment.
This means that two ATTENDEEs, in different time zones, receiving the
same event definition as a floating time, may be participating in the
event at different actual times. Floating time SHOULD only be used
where that is the reasonable behavior.

doc/rfc2445.txt  view on Meta::CPAN

2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
Dawson & Stenerson          Standards Track                    [Page 47]
RFC 2445                       iCalendar                   November 1998
 
 
   Time values of this type are said to be "floating" and are not bound
   to any time zone in particular. They are used to represent the same
   hour, minute, and second value regardless of which time zone is
   currently being observed. For example, an event can be defined that
   indicates that an individual will be busy from 11:00 AM to 1:00 PM
   every day, no matter which time zone the person is in. In these
   cases, a local time can be specified. The recipient of an iCalendar
   object with a property value consisting of a local time, without any
   relative time zone information, SHOULD interpret the value as being
   fixed to whatever time zone the ATTENDEE is in at any given moment.
   This means that two ATTENDEEs may participate in the same event at
   different UTC times; floating time SHOULD only be used where that is
   reasonable behavior.
 
   In most cases, a fixed time is desired. To properly communicate a

doc/rfc2445.txt  view on Meta::CPAN

2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
   as DtStart;TzID=US-Eastern:19980714T120000.
 
4.6 Calendar Components
 
   The body of the iCalendar object consists of a sequence of calendar
   properties and one or more calendar components. The calendar
   properties are attributes that apply to the calendar as a whole. The
   calendar components are collections of properties that express a
   particular calendar semantic. For example, the calendar component can
   specify an event, a to-do, a journal entry, time zone information, or
   free/busy time information, or an alarm.
 
   The body of the iCalendar object is defined by the following
   notation:
 
     icalbody   = calprops component
 
     calprops   = 2*(
 
                ; 'prodid' and 'version' are both REQUIRED,
                ; but MUST NOT occur more than once

doc/rfc2445.txt  view on Meta::CPAN

2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
 
 
Dawson & Stenerson          Standards Track                    [Page 51]
RFC 2445                       iCalendar                   November 1998
 
 
                )
 
     component  = 1*(eventc / todoc / journalc / freebusyc /
                / timezonec / iana-comp / x-comp)
 
     iana-comp  = "BEGIN" ":" iana-token CRLF
 
                  1*contentline
 
                  "END" ":" iana-token CRLF
 
     x-comp     = "BEGIN" ":" x-name CRLF
 
                  1*contentline
 
                  "END" ":" x-name CRLF
 
   An iCalendar object MUST include the "PRODID" and "VERSION" calendar
   properties. In addition, it MUST include at least one calendar
   component. Special forms of iCalendar objects are possible to publish
   just busy time (i.e., only a "VFREEBUSY" calendar component) or time
   zone (i.e., only a "VTIMEZONE" calendar component) information. In
   addition, a complex iCalendar object is possible that is used to
   capture a complete snapshot of the contents of a calendar (e.g.,
   composite of many different calendar components). More commonly, an
   iCalendar object will consist of just a single "VEVENT", "VTODO" or
   "VJOURNAL" calendar component.
 
4.6.1 Event Component
 
   Component Name: "VEVENT"

doc/rfc2445.txt  view on Meta::CPAN

2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
             resources / rdate / rrule / x-prop
 
             )
 
Description: A "VEVENT" calendar component is a grouping of component
properties, and possibly including "VALARM" calendar components, that
represents a scheduled amount of time on a calendar. For example, it
can be an activity; such as a one-hour long, department meeting from
8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up time
on an individual calendar. Hence, the event will appear as an opaque
interval in a search for busy time. Alternately, the event can have
its Time Transparency set to "TRANSPARENT" in order to prevent
blocking of the event in searches for busy time.
 
The "VEVENT" is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a
DATE value type for the "DTSTART" property instead of the default
data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
MUST be specified as a DATE value also. The anniversary type of
"VEVENT" can span more than one date (i.e, "DTEND" property value is
set to a calendar date after the "DTSTART" property value).
 
The "DTSTART" property for a "VEVENT" specifies the inclusive start

doc/rfc2445.txt  view on Meta::CPAN

2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
RFC 2445                       iCalendar                   November 1998
 
 
   The "VEVENT" calendar component cannot be nested within another
   calendar component. However, "VEVENT" calendar components can be
   related to each other or to a "VTODO" or to a "VJOURNAL" calendar
   component with the "RELATED-TO" property.
 
   Example: The following is an example of the "VEVENT" calendar
   component used to represent a meeting that will also be opaque to
   searches for busy time:
 
     BEGIN:VEVENT
     UID:19970901T130000Z-123401@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19970903T163000Z
     DTEND:19970903T190000Z
     SUMMARY:Annual Employee Review
     CLASS:PRIVATE
     CATEGORIES:BUSINESS,HUMAN RESOURCES
     END:VEVENT
 
   The following is an example of the "VEVENT" calendar component used
   to represent a reminder that will not be opaque, but rather
   transparent, to searches for busy time:
 
     BEGIN:VEVENT
     UID:19970901T130000Z-123402@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19970401T163000Z
     DTEND:19970402T010000Z
     SUMMARY:Laurel is in sensitivity awareness class.
     CLASS:PUBLIC
     CATEGORIES:BUSINESS,HUMAN RESOURCES
     TRANSP:TRANSPARENT
     END:VEVENT
 
   The following is an example of the "VEVENT" calendar component used
   to represent an anniversary that will occur annually. Since it takes
   up no time, it will not appear as opaque in a search for busy time;
   no matter what the value of the "TRANSP" property indicates:
 
     BEGIN:VEVENT
     UID:19970901T130000Z-123403@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19971102
     SUMMARY:Our Blissful Anniversary
     CLASS:CONFIDENTIAL
     CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
     RRULE:FREQ=YEARLY

doc/rfc2445.txt  view on Meta::CPAN

3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
property is used to specify the calendar date that the journal entry
is associated with. Generally, it will have a DATE value data type,
but it can also be used to specify a DATE-TIME value data type.
Examples of a journal entry include a daily record of a legislative
body or a journal entry of individual telephone contacts for the day
or an ordered list of accomplishments for the day. The "VJOURNAL"
calendar component can also be used to associate a document with a
calendar date.
 
The "VJOURNAL" calendar component does not take up time on a
calendar. Hence, it does not play a role in free or busy time
searches - - it is as though it has a time transparency value of
TRANSPARENT. It is transparent to any such searches.
 
The "VJOURNAL" calendar component cannot be nested within another
calendar component. However, "VJOURNAL" calendar components can be
related to each other or to a "VEVENT" or to a "VTODO" calendar
component, with the "RELATED-TO" property.
 
Example: The following is an example of the "VJOURNAL" calendar
component:

doc/rfc2445.txt  view on Meta::CPAN

3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
Dawson & Stenerson          Standards Track                    [Page 57]
RFC 2445                       iCalendar                   November 1998
 
 
4.6.4 Free/Busy Component
 
   Component Name: VFREEBUSY
 
   Purpose: Provide a grouping of component properties that describe
   either a request for free/busy time, describe a response to a request
   for free/busy time or describe a published set of busy time.
 
   Formal Definition: A "VFREEBUSY" calendar component is defined by the
   following notation:
 
     freebusyc  = "BEGIN" ":" "VFREEBUSY" CRLF
                  fbprop
                  "END" ":" "VFREEBUSY" CRLF
 
     fbprop     = *(
 
                ; the following are optional,
                ; but MUST NOT occur more than once
 
                contact / dtstart / dtend / duration / dtstamp /
                organizer / uid / url /
 
                ; the following are optional,
                ; and MAY occur more than once
 
                attendee / comment / freebusy / rstatus / x-prop
 
                )
 
   Description: A "VFREEBUSY" calendar component is a grouping of
   component properties that represents either a request for, a reply to
   a request for free or busy time information or a published set of
   busy time information.
 
   When used to request free/busy time information, the "ATTENDEE"
   property specifies the calendar users whose free/busy time is being
   requested; the "ORGANIZER" property specifies the calendar user who
   is requesting the free/busy time; the "DTSTART" and "DTEND"
   properties specify the window of time for which the free/busy time is
   being requested; the "UID" and "DTSTAMP" properties are specified to
   assist in proper sequencing of multiple free/busy time requests.
 
   When used to reply to a request for free/busy time, the "ATTENDEE"
   property specifies the calendar user responding to the free/busy time
   request; the "ORGANIZER" property specifies the calendar user that
   originally requested the free/busy time; the "FREEBUSY" property
   specifies the free/busy time information (if it exists); and the
 
 
 
Dawson & Stenerson          Standards Track                    [Page 58]
RFC 2445                       iCalendar                   November 1998
 
 
   "UID" and "DTSTAMP" properties are specified to assist in proper
   sequencing of multiple free/busy time replies.
 
   When used to publish busy time, the "ORGANIZER" property specifies
   the calendar user associated with the published busy time; the
   "DTSTART" and "DTEND" properties specify an inclusive time window
   that surrounds the busy time information; the "FREEBUSY" property
   specifies the published busy time information; and the "DTSTAMP"
   property specifies the date/time that iCalendar object was created.
 
   The "VFREEBUSY" calendar component cannot be nested within another
   calendar component. Multiple "VFREEBUSY" calendar components can be
   specified within an iCalendar object. This permits the grouping of
   Free/Busy information into logical collections, such as monthly
   groups of busy time information.
 
   The "VFREEBUSY" calendar component is intended for use in iCalendar
   object methods involving requests for free time, requests for busy
   time, requests for both free and busy, and the associated replies.
 
   Free/Busy information is represented with the "FREEBUSY" property.
   This property provides a terse representation of time periods. One or
   more "FREEBUSY" properties can be specified in the "VFREEBUSY"
   calendar component.
 
   When present in a "VFREEBUSY" calendar component, the "DTSTART" and
   "DTEND" properties SHOULD be specified prior to any "FREEBUSY"
   properties. In a free time request, these properties can be used in
   combination with the "DURATION" property to represent a request for a
   duration of free time within a specified window of time.
 
   The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are
   not permitted within a "VFREEBUSY" calendar component. Any recurring
   events are resolved into their individual busy time periods using the
   "FREEBUSY" property.
 
   Example: The following is an example of a "VFREEBUSY" calendar
   component used to request free or busy time information:
 
     BEGIN:VFREEBUSY
     ORGANIZER:MAILTO:jane_doe@host1.com
     ATTENDEE:MAILTO:john_public@host2.com
     DTSTART:19971015T050000Z
     DTEND:19971016T050000Z
     DTSTAMP:19970901T083000Z
     END:VFREEBUSY
 
 
 
 
 
Dawson & Stenerson          Standards Track                    [Page 59]
RFC 2445                       iCalendar                   November 1998
 
 
   The following is an example of a "VFREEBUSY" calendar component used
   to reply to the request with busy time information:
 
     BEGIN:VFREEBUSY
     ORGANIZER:MAILTO:jane_doe@host1.com
     ATTENDEE:MAILTO:john_public@host2.com
     DTSTAMP:19970901T100000Z
     FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
      19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
     COMMENT:This iCalendar file contains busy time information for
       the next three months.
     END:VFREEBUSY
 
   The following is an example of a "VFREEBUSY" calendar component used
   to publish busy time information.
 
     BEGIN:VFREEBUSY
     ORGANIZER:jsmith@host.com
     DTSTART:19980313T141711Z
     DTEND:19980410T141711Z
     FREEBUSY:19980314T233000Z/19980315T003000Z
     FREEBUSY:19980316T153000Z/19980316T163000Z
     FREEBUSY:19980318T030000Z/19980318T040000Z
     END:VFREEBUSY
 
4.6.5 Time Zone Component
 
   Component Name: VTIMEZONE
 
   Purpose: Provide a grouping of component properties that defines a
   time zone.
 
   Formal Definition: A "VTIMEZONE" calendar component is defined by the

doc/rfc2445.txt  view on Meta::CPAN

5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
identifier property parameters can be specified on this property.
 
Conformance: This property can be specified in "VEVENT" or
"VFREEBUSY" calendar components.
 
Description: Within the "VEVENT" calendar component, this property
defines the date and time by which the event ends. The value MUST be
later in time than the value of the "DTSTART" property.
 
Within the "VFREEBUSY" calendar component, this property defines the
end date and time for the free or busy time information. The time
MUST be specified in the UTC time format. The value MUST be later in
time than the value of the "DTSTART" property.
 
Format Definition: The property is defined by the following notation:
 
  dtend      = "DTEND" dtendparam":" dtendval CRLF
 
  dtendparam = *(
 
             ; the following are optional,

doc/rfc2445.txt  view on Meta::CPAN

5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
Conformance: This property can be specified in the "VEVENT", "VTODO",
"VFREEBUSY", or "VTIMEZONE" calendar components.
 
Description: Within the "VEVENT" calendar component, this property
defines the start date and time for the event. The property is
REQUIRED in "VEVENT" calendar components. Events can have a start
date/time but no end date/time. In that case, the event does not take
up any time.
 
Within the "VFREEBUSY" calendar component, this property defines the
start date and time for the free or busy time information. The time
MUST be specified in UTC time.
 
Within the "VTIMEZONE" calendar component, this property defines the
effective start date and time for a time zone specification. This
property is REQUIRED within each STANDARD and DAYLIGHT part included
in "VTIMEZONE" calendar components and MUST be specified as a local
DATE-TIME without the "TZID" property parameter.
 
Format Definition: The property is defined by the following notation:

doc/rfc2445.txt  view on Meta::CPAN

5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
   The following is an example of this property that specifies an
   interval of time of 15 minutes.
 
     DURATION:PT15M
 
4.8.2.6 Free/Busy Time
 
   Property Name: FREEBUSY
 
   Purpose: The property defines one or more free or busy time
   intervals.
 
   Value Type: PERIOD. The date and time values MUST be in an UTC time
   format.
 
   Property Parameters: Non-standard or free/busy time type property
   parameters can be specified on this property.
 
   Conformance: The property can be specified in a "VFREEBUSY" calendar
   component.
 
   Property Parameter: "FBTYPE" and non-standard parameters can be
   specified on this property.
 
   Description: These time periods can be specified as either a start
   and end date-time or a start date-time and duration. The date and

doc/rfc2445.txt  view on Meta::CPAN

5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
 
 
Dawson & Stenerson          Standards Track                    [Page 95]
RFC 2445                       iCalendar                   November 1998
 
 
   Format Definition: The property is defined by the following notation:
 
     freebusy   = "FREEBUSY" fbparam ":" fbvalue
                  CRLF
 
     fbparam    = *(
                ; the following is optional,
                ; but MUST NOT occur more than once
 
                (";" fbtypeparam) /
 
                ; the following is optional,
                ; and MAY occur more than once

doc/rfc2445.txt  view on Meta::CPAN

5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
     FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
 
     FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H,
      19970308T230000Z/19970309T000000Z
 
4.8.2.7 Time Transparency
 
   Property Name: TRANSP
 
   Purpose: This property defines whether an event is transparent or not
   to busy time searches.
 
   Value Type: TEXT
 
   Property Parameters: Non-standard property parameters can be
   specified on this property.
 
   Conformance: This property can be specified once in a "VEVENT"
   calendar component.
 
   Description: Time Transparency is the characteristic of an event that

doc/rfc2445.txt  view on Meta::CPAN

5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
   that consume actual time for the individual or resource associated
 
 
 
Dawson & Stenerson          Standards Track                    [Page 96]
RFC 2445                       iCalendar                   November 1998
 
 
   with the calendar SHOULD be recorded as OPAQUE, allowing them to be
   detected by free-busy time searches. Other events, which do not take
   up the individual's (or resource's) time SHOULD be recorded as
   TRANSPARENT, making them invisible to free-busy time searches.
 
   Format Definition: The property is specified by the following
   notation:
 
     transp     = "TRANSP" tranparam ":" transvalue CRLF
 
     tranparam  = *(";" xparam)
 
     transvalue = "OPAQUE"      ;Blocks or opaque on busy time searches.
                / "TRANSPARENT" ;Transparent on busy time searches.
        ;Default value is OPAQUE
 
   Example: The following is an example of this property for an event
   that is transparent or does not block on free/busy time searches:
 
     TRANSP:TRANSPARENT
 
   The following is an example of this property for an event that is
   opaque or blocks on free/busy time searches:
 
     TRANSP:OPAQUE
 
4.8.3 Time Zone Component Properties
 
   The following properties specify time zone information in calendar
   components.
 
4.8.3.1 Time Zone Identifier

doc/rfc2445.txt  view on Meta::CPAN

5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
Property Parameters: Non-standard, language, calendar user type,
group or list membership, participation role, participation status,
RSVP expectation, delegatee, delegator, sent by, common name or
directory entry reference property parameters can be specified on
this property.
 
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
NOT be specified in an iCalendar object when publishing the calendar
information (e.g., NOT in an iCalendar object that specifies the
publication of a calendar user's busy time, event, to-do or journal).
This property is not specified in an iCalendar object that specifies
only a time zone definition or that defines calendar entities that
are not group scheduled entities, but are entities only on a single
user's calendar.
 
Description: The property MUST only be specified within calendar
components to specify participants, non-participants and the chair of
a group scheduled calendar entity. The property is specified within
an "EMAIL" category of the "VALARM" calendar component to specify an
email address that is to receive the email type of iCalendar alarm.

doc/rfc2445.txt  view on Meta::CPAN

5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
Value Type: CAL-ADDRESS
 
Property Parameters: Non-standard, language, common name, directory
entry reference, sent by property parameters can be specified on this
property.
 
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
be specified in an iCalendar object that specifies the publication of
a calendar user's busy time. This property MUST NOT be specified in
an iCalendar object that specifies only a time zone definition or
that defines calendar entities that are not group scheduled entities,
but are entities only on a single user's calendar.
 
Description: The property is specified within the "VEVENT", "VTODO",
"VJOURNAL calendar components to specify the organizer of a group
scheduled calendar entity. The property is specified within the
"VFREEBUSY" calendar component to specify the calendar user
requesting the free or busy time. When publishing a "VFREEBUSY"
calendar component, the property is used to specify the calendar that
the published busy time came from.
 
The property has the property parameters CN, for specifying the
common or display name associated with the "Organizer", DIR, for
specifying a pointer to the directory information associated with the
"Organizer", SENT-BY, for specifying another calendar user that is
acting on behalf of the "Organizer". The non-standard parameters may
also be specified on this property. If the LANGUAGE property
parameter is specified, the identified language applies to the CN
parameter value.

doc/rfc2445.txt  view on Meta::CPAN

7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
   The COMMA and SEMICOLON separator characters in the property value
   are BACKSLASH character escaped because they appear in a  text value.
 
     REQUEST-STATUS:2.0;Success
 
     REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01
 
     REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
      as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2
 
     REQUEST-STATUS:4.1;Event conflict. Date/time is busy.
 
     REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
      MAILTO:jsmith@host.com
 
5 iCalendar Object Examples
 
   The following examples are provided as an informational source of
   illustrative iCalendar objects consistent with this content type.
 
   The following example specifies a three-day conference that begins at

doc/rfc2445.txt  view on Meta::CPAN

7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
      Participants: John Smith, Jane Doe, Jim Dandy\n-It was
       decided that the requirements need to be signed off by
       product marketing.\n-Project processes were accepted.\n
      -Project schedule needs to account for scheduled holidays
       and employee vacation time. Check with HR for specific
       dates.\n-New schedule will be distributed by Friday.\n-
      Next weeks meeting is cancelled. No meeting until 3/23.
     END:VJOURNAL
     END:VCALENDAR
 
   The following is an example of published busy time information. The
   iCalendar object might be placed in the network resource
   www.host.com/calendar/busytime/jsmith.ifb.
 
     BEGIN:VCALENDAR
     VERSION:2.0
     PRODID:-//RDU Software//NONSGML HandCal//EN
     BEGIN:VFREEBUSY
 
 
 
Dawson & Stenerson          Standards Track                   [Page 139]
RFC 2445                       iCalendar                   November 1998
 
 
     ORGANIZER:MAILTO:jsmith@host.com
     DTSTART:19980313T141711Z
     DTEND:19980410T141711Z
     FREEBUSY:19980314T233000Z/19980315T003000Z
     FREEBUSY:19980316T153000Z/19980316T163000Z
     FREEBUSY:19980318T030000Z/19980318T040000Z
     END:VFREEBUSY
     END:VCALENDAR
 
6 Recommended Practices
 
   These recommended practices should be followed in order to assure
   consistent handling of the following cases for an iCalendar object.
 
   1.  Content lines longer than 75 octets SHOULD be folded.
 
   2.  A calendar entry with a "DTSTART" property but no "DTEND"
       property does not take up any time. It is intended to represent
       an event that is associated with a given calendar date and time
       of day, such as an anniversary. Since the event does not take up
       any time, it MUST NOT be used to record busy time no matter what
       the value for the "TRANSP" property.
 
   3.  When the "DTSTART" and "DTEND", for "VEVENT", "VJOURNAL" and
       "VFREEBUSY" calendar components, and "DTSTART" and "DUE", for
       "VTODO" calendar components, have the same value data type (e.g.,
       DATE-TIME), they SHOULD specify values in the same time format
       (e.g., UTC time format).
 
   4.  When the combination of the "RRULE" and "RDATE" properties on an
       iCalendar object produces multiple instances having the same

lib/Data/ICal.pm  view on Meta::CPAN

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
=head1 DESCRIPTION
 
A L<Data::ICal> object represents a C<VCALENDAR> object as defined in the
iCalendar protocol (RFC 2445, MIME type "text/calendar"), as implemented in many
popular calendaring programs such as Apple's iCal.
 
Each L<Data::ICal> object is a collection of "entries", which are objects of a
subclass of L<Data::ICal::Entry>.  The types of entries defined by iCalendar
(which refers to them as "components") include events, to-do items, journal
entries, free/busy time indicators, and time zone descriptors; in addition,
events and to-do items can contain alarm entries.  (Currently, L<Data::ICal>
only implements to-do items and events.)
 
L<Data::ICal> is a subclass of L<Data::ICal::Entry>; see its manpage for more
methods applicable to L<Data::ICal>.
 
=head1 METHODS
 
=cut

lib/Data/ICal/Entry.pm  view on Meta::CPAN

137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
    $output .= $self->footer(%args);
 
    return $output;
}
 
=head2 add_entry $entry
 
Adds an entry to this entry.  (According to the standard, this should
only be called on either a to-do or event entry with an alarm entry,
or on a calendar entry (L<Data::ICal>) with a to-do, event, journal,
timezone, or free/busy entry.)
 
Returns true if the entry was successfully added, and false otherwise
(perhaps because you tried to add an entry of an invalid type, but
this check hasn't been implemented yet).
 
=cut
 
sub add_entry {
    my $self  = shift;
    my $entry = shift;

lib/Data/ICal/Entry.pm  view on Meta::CPAN

485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
        @_
    );
    return 'END:' . $self->ical_entry_type . $args{crlf};
}
 
# mapping of event types to class (under the Data::Ical::Event namespace)
my %_generic = (
    vevent    => 'Event',
    vtodo     => 'Todo',
    vjournal  => 'Journal',
    vfreebusy => 'FreeBusy',
    vtimezone => 'TimeZone',
    standard  => 'TimeZone::Standard',
    daylight  => 'TimeZone::Daylight',
);
 
=head2 parse_object
 
Translate a L<Text::vFile::asData> sub object into the appropriate
L<Data::iCal::Event> subtype.

lib/Data/ICal/Entry/FreeBusy.pm  view on Meta::CPAN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use strict;
 
 
 
=head1 NAME
 
Data::ICal::Entry::FreeBusy - Represents blocks of free and busy time in an iCalendar file
 
=head1 SYNOPSIS
 
    my $vfreebusy = Data::ICal::Entry::FreeBusy->new();
    $vfreebusy->add_properties(
        organizer => 'MAILTO:jsmith@host.com',
        # Dat*e*::ICal is not a typo here
        freebusy   => Date::ICal->new( epoch => ... )->ical . '/' . Date::ICal->new( epoch => ... )->ical,
    );
 
    $calendar->add_entry($vfreebusy);
 
=head1 DESCRIPTION
 
A L<Data::ICal::Entry::FreeBusy> object represents a request for
information about free and busy time or a reponse to such a request,
in an iCalendar file.  (Note that the iCalendar RFC refers to entries
as "components".)  It is a subclass of L<Data::ICal::Entry> and
accepts all of its methods.
 
=head1 METHODS
 
=cut
 
=head2 ical_entry_type

lib/Data/ICal/Entry/FreeBusy.pm  view on Meta::CPAN

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
=cut
 
sub mandatory_unique_properties {
    my $self = shift;
    return $self->rfc_strict ? ("uid") : ()
}
 
=head2 optional_unique_properties
 
According to the iCalendar standard, the following properties may be
specified at most one time for a free/busy entry:
 
        contact  dtstart  dtend  duration  dtstamp
        organizer  uid  url
 
=cut
 
sub optional_unique_properties {
    my $self = shift;
    my @ret = qw(
        contact  dtstart  dtend  duration  dtstamp
        organizer  url
    );
    push @ret, "uid" unless $self->rfc_strict;
    return @ret;
}
 
=head2 optional_repeatable_properties
 
According to the iCalendar standard, the following properties may be
specified any number of times for free/busy entry:
 
        attendee comment freebusy request-status
 
=cut
 
sub optional_repeatable_properties {
    qw(
        attendee comment freebusy request-status
    );
}
 
=head1 AUTHOR
 
Best Practical Solutions, LLC E<lt>modules@bestpractical.comE<gt>
 
=head1 LICENCE AND COPYRIGHT
 
Copyright (c) 2005 - 2020, Best Practical Solutions, LLC.  All rights reserved.



( run in 0.368 second using v1.01-cache-2.11-cpan-454fe037f31 )