tilia-vobject 4.0.0.pre.alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rubocop.yml +32 -0
  4. data/.simplecov +4 -0
  5. data/.travis.yml +3 -0
  6. data/CHANGELOG.sabre.md +626 -0
  7. data/CONTRIBUTING.md +25 -0
  8. data/Gemfile +17 -0
  9. data/Gemfile.lock +68 -0
  10. data/LICENSE +27 -0
  11. data/LICENSE.sabre +27 -0
  12. data/README.md +63 -0
  13. data/Rakefile +17 -0
  14. data/bin/vobject +7 -0
  15. data/lib/tilia/v_object/birthday_calendar_generator.rb +142 -0
  16. data/lib/tilia/v_object/cli.rb +582 -0
  17. data/lib/tilia/v_object/component/available.rb +107 -0
  18. data/lib/tilia/v_object/component/v_alarm.rb +114 -0
  19. data/lib/tilia/v_object/component/v_availability.rb +128 -0
  20. data/lib/tilia/v_object/component/v_calendar.rb +468 -0
  21. data/lib/tilia/v_object/component/v_card.rb +457 -0
  22. data/lib/tilia/v_object/component/v_event.rb +127 -0
  23. data/lib/tilia/v_object/component/v_free_busy.rb +81 -0
  24. data/lib/tilia/v_object/component/v_journal.rb +75 -0
  25. data/lib/tilia/v_object/component/v_time_zone.rb +51 -0
  26. data/lib/tilia/v_object/component/v_todo.rb +147 -0
  27. data/lib/tilia/v_object/component.rb +591 -0
  28. data/lib/tilia/v_object/date_time_parser.rb +486 -0
  29. data/lib/tilia/v_object/document.rb +218 -0
  30. data/lib/tilia/v_object/element_list.rb +18 -0
  31. data/lib/tilia/v_object/eof_exception.rb +8 -0
  32. data/lib/tilia/v_object/free_busy_data.rb +149 -0
  33. data/lib/tilia/v_object/free_busy_generator.rb +465 -0
  34. data/lib/tilia/v_object/i_tip/broker.rb +909 -0
  35. data/lib/tilia/v_object/i_tip/i_tip_exception.rb +9 -0
  36. data/lib/tilia/v_object/i_tip/message.rb +109 -0
  37. data/lib/tilia/v_object/i_tip/same_organizer_for_all_components_exception.rb +13 -0
  38. data/lib/tilia/v_object/i_tip.rb +10 -0
  39. data/lib/tilia/v_object/node.rb +192 -0
  40. data/lib/tilia/v_object/parameter.rb +327 -0
  41. data/lib/tilia/v_object/parse_exception.rb +7 -0
  42. data/lib/tilia/v_object/parser/json.rb +149 -0
  43. data/lib/tilia/v_object/parser/mime_dir.rb +543 -0
  44. data/lib/tilia/v_object/parser/parser.rb +61 -0
  45. data/lib/tilia/v_object/parser/xml/element/key_value.rb +60 -0
  46. data/lib/tilia/v_object/parser/xml/element.rb +11 -0
  47. data/lib/tilia/v_object/parser/xml.rb +322 -0
  48. data/lib/tilia/v_object/parser.rb +10 -0
  49. data/lib/tilia/v_object/property/binary.rb +96 -0
  50. data/lib/tilia/v_object/property/boolean.rb +57 -0
  51. data/lib/tilia/v_object/property/flat_text.rb +52 -0
  52. data/lib/tilia/v_object/property/float_value.rb +107 -0
  53. data/lib/tilia/v_object/property/i_calendar/cal_address.rb +49 -0
  54. data/lib/tilia/v_object/property/i_calendar/date.rb +15 -0
  55. data/lib/tilia/v_object/property/i_calendar/date_time.rb +330 -0
  56. data/lib/tilia/v_object/property/i_calendar/duration.rb +65 -0
  57. data/lib/tilia/v_object/property/i_calendar/period.rb +124 -0
  58. data/lib/tilia/v_object/property/i_calendar/recur.rb +173 -0
  59. data/lib/tilia/v_object/property/i_calendar.rb +14 -0
  60. data/lib/tilia/v_object/property/integer_value.rb +60 -0
  61. data/lib/tilia/v_object/property/text.rb +352 -0
  62. data/lib/tilia/v_object/property/time.rb +85 -0
  63. data/lib/tilia/v_object/property/unknown.rb +30 -0
  64. data/lib/tilia/v_object/property/uri.rb +78 -0
  65. data/lib/tilia/v_object/property/utc_offset.rb +56 -0
  66. data/lib/tilia/v_object/property/v_card/date.rb +31 -0
  67. data/lib/tilia/v_object/property/v_card/date_and_or_time.rb +343 -0
  68. data/lib/tilia/v_object/property/v_card/date_time.rb +22 -0
  69. data/lib/tilia/v_object/property/v_card/language_tag.rb +41 -0
  70. data/lib/tilia/v_object/property/v_card/time_stamp.rb +74 -0
  71. data/lib/tilia/v_object/property/v_card.rb +13 -0
  72. data/lib/tilia/v_object/property.rb +532 -0
  73. data/lib/tilia/v_object/reader.rb +73 -0
  74. data/lib/tilia/v_object/recur/event_iterator.rb +417 -0
  75. data/lib/tilia/v_object/recur/no_instances_exception.rb +11 -0
  76. data/lib/tilia/v_object/recur/r_date_iterator.rb +138 -0
  77. data/lib/tilia/v_object/recur/r_rule_iterator.rb +717 -0
  78. data/lib/tilia/v_object/recur.rb +10 -0
  79. data/lib/tilia/v_object/settings.rb +32 -0
  80. data/lib/tilia/v_object/splitter/i_calendar.rb +95 -0
  81. data/lib/tilia/v_object/splitter/splitter_interface.rb +31 -0
  82. data/lib/tilia/v_object/splitter/v_card.rb +56 -0
  83. data/lib/tilia/v_object/splitter.rb +9 -0
  84. data/lib/tilia/v_object/string_util.rb +58 -0
  85. data/lib/tilia/v_object/time_zone_data/exchange_zones.rb +96 -0
  86. data/lib/tilia/v_object/time_zone_data/lotus_zones.rb +104 -0
  87. data/lib/tilia/v_object/time_zone_data/php_zones.rb +49 -0
  88. data/lib/tilia/v_object/time_zone_data/windows_zones.rb +121 -0
  89. data/lib/tilia/v_object/time_zone_data.rb +10 -0
  90. data/lib/tilia/v_object/time_zone_util.rb +213 -0
  91. data/lib/tilia/v_object/uuid_util.rb +51 -0
  92. data/lib/tilia/v_object/v_card_converter.rb +354 -0
  93. data/lib/tilia/v_object/version.rb +9 -0
  94. data/lib/tilia/v_object/writer.rb +56 -0
  95. data/lib/tilia/v_object.rb +45 -0
  96. data/lib/tilia/vobject.rb +1 -0
  97. data/resources/schema/xcal.rng +1192 -0
  98. data/resources/schema/xcard.rng +388 -0
  99. data/test/test_helper.rb +56 -0
  100. data/test/v_object/attach_issue_test.rb +19 -0
  101. data/test/v_object/birthday_calendar_generator_test.rb +463 -0
  102. data/test/v_object/cli_mock.rb +19 -0
  103. data/test/v_object/cli_test.rb +460 -0
  104. data/test/v_object/component/available_test.rb +59 -0
  105. data/test/v_object/component/v_alarm_test.rb +160 -0
  106. data/test/v_object/component/v_availability_test.rb +388 -0
  107. data/test/v_object/component/v_calendar_test.rb +646 -0
  108. data/test/v_object/component/v_card_test.rb +258 -0
  109. data/test/v_object/component/v_event_test.rb +85 -0
  110. data/test/v_object/component/v_free_busy_test.rb +59 -0
  111. data/test/v_object/component/v_journal_test.rb +85 -0
  112. data/test/v_object/component/v_time_zone_test.rb +47 -0
  113. data/test/v_object/component/v_todo_test.rb +172 -0
  114. data/test/v_object/component_test.rb +419 -0
  115. data/test/v_object/date_time_parser_test.rb +526 -0
  116. data/test/v_object/document_test.rb +71 -0
  117. data/test/v_object/element_list_test.rb +27 -0
  118. data/test/v_object/em_client_test.rb +53 -0
  119. data/test/v_object/empty_parameter_test.rb +65 -0
  120. data/test/v_object/empty_value_issue_test.rb +25 -0
  121. data/test/v_object/fake_component.rb +21 -0
  122. data/test/v_object/free_busy_data_test.rb +285 -0
  123. data/test/v_object/free_busy_generator_test.rb +637 -0
  124. data/test/v_object/google_colon_escaping_test.rb +27 -0
  125. data/test/v_object/i_calendar/attach_parse_test.rb +24 -0
  126. data/test/v_object/i_tip/broker_attendee_reply_test.rb +1042 -0
  127. data/test/v_object/i_tip/broker_delete_event_test.rb +175 -0
  128. data/test/v_object/i_tip/broker_new_event_test.rb +440 -0
  129. data/test/v_object/i_tip/broker_process_message_test.rb +153 -0
  130. data/test/v_object/i_tip/broker_process_reply_test.rb +402 -0
  131. data/test/v_object/i_tip/broker_tester.rb +71 -0
  132. data/test/v_object/i_tip/broker_update_event_test.rb +763 -0
  133. data/test/v_object/i_tip/evolution_test.rb +2644 -0
  134. data/test/v_object/i_tip/message_test.rb +25 -0
  135. data/test/v_object/issue153.vcf +352 -0
  136. data/test/v_object/issue153_test.rb +12 -0
  137. data/test/v_object/issue26_test.rb +25 -0
  138. data/test/v_object/issue36_work_around_test.rb +37 -0
  139. data/test/v_object/issue40_test.rb +26 -0
  140. data/test/v_object/issue64.vcf +351 -0
  141. data/test/v_object/issue64_test.rb +17 -0
  142. data/test/v_object/issue96_test.rb +22 -0
  143. data/test/v_object/issue_undefined_index_test.rb +24 -0
  144. data/test/v_object/j_cal_test.rb +150 -0
  145. data/test/v_object/j_card_test.rb +192 -0
  146. data/test/v_object/line_folding_issue_test.rb +19 -0
  147. data/test/v_object/mock_document.rb +6 -0
  148. data/test/v_object/parameter_test.rb +109 -0
  149. data/test/v_object/parser/json_test.rb +370 -0
  150. data/test/v_object/parser/mime_dir_test.rb +14 -0
  151. data/test/v_object/parser/quoted_printable_test.rb +78 -0
  152. data/test/v_object/parser/xml_test.rb +2563 -0
  153. data/test/v_object/property/binary_test.rb +12 -0
  154. data/test/v_object/property/boolean_test.rb +18 -0
  155. data/test/v_object/property/compound_test.rb +43 -0
  156. data/test/v_object/property/float_test.rb +20 -0
  157. data/test/v_object/property/i_calendar/cal_address_test.rb +26 -0
  158. data/test/v_object/property/i_calendar/date_time_test.rb +303 -0
  159. data/test/v_object/property/i_calendar/duration_test.rb +14 -0
  160. data/test/v_object/property/i_calendar/recur_test.rb +39 -0
  161. data/test/v_object/property/text_test.rb +81 -0
  162. data/test/v_object/property/v_card/date_and_or_time_test.rb +205 -0
  163. data/test/v_object/property/v_card/language_tag_test.rb +35 -0
  164. data/test/v_object/property_test.rb +338 -0
  165. data/test/v_object/reader_test.rb +403 -0
  166. data/test/v_object/recur/event_iterator/by_month_in_daily_test.rb +52 -0
  167. data/test/v_object/recur/event_iterator/by_set_pos_hang_test.rb +55 -0
  168. data/test/v_object/recur/event_iterator/expand_floating_times_test.rb +109 -0
  169. data/test/v_object/recur/event_iterator/fifth_tuesday_problem_test.rb +45 -0
  170. data/test/v_object/recur/event_iterator/incorrect_expand_test.rb +53 -0
  171. data/test/v_object/recur/event_iterator/infinite_loop_problem_test.rb +75 -0
  172. data/test/v_object/recur/event_iterator/issue48_test.rb +43 -0
  173. data/test/v_object/recur/event_iterator/issue50_test.rb +123 -0
  174. data/test/v_object/recur/event_iterator/main_test.rb +1222 -0
  175. data/test/v_object/recur/event_iterator/missing_overridden_test.rb +55 -0
  176. data/test/v_object/recur/event_iterator/no_instances_test.rb +32 -0
  177. data/test/v_object/recur/event_iterator/override_first_event_test.rb +106 -0
  178. data/test/v_object/recur/r_date_iterator_test.rb +44 -0
  179. data/test/v_object/recur/r_rule_iterator_test.rb +608 -0
  180. data/test/v_object/recurrence_iterator/UntilRespectsTimezoneTest.ics +39 -0
  181. data/test/v_object/slash_r_test.rb +15 -0
  182. data/test/v_object/splitter/i_calendar_test.rb +299 -0
  183. data/test/v_object/splitter/v_card_test.rb +173 -0
  184. data/test/v_object/string_util_test.rb +37 -0
  185. data/test/v_object/test_case.rb +42 -0
  186. data/test/v_object/time_zone_util_test.rb +271 -0
  187. data/test/v_object/uuid_util_test.rb +18 -0
  188. data/test/v_object/v_card21_test.rb +43 -0
  189. data/test/v_object/v_card_converter_test.rb +419 -0
  190. data/test/v_object/version_test.rb +15 -0
  191. data/test/v_object/writer_test.rb +33 -0
  192. data/tilia-vobject.gemspec +17 -0
  193. metadata +308 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 93752908dd3fe5f2eb4e779f3b502f2a9188748a
4
+ data.tar.gz: 4920f43108b370cd96c113fe3afe9884c740835b
5
+ SHA512:
6
+ metadata.gz: 69c4ba324840c8ccee64989a1f77b67c3ebae5fea404bbc5eeb0ece7895b190ef95e5d758854af86d94d57a2fc7f50508e312b28156d62a3bd2d3567afac4ac2
7
+ data.tar.gz: a3f12529cf63684643432cc8a36f292c8e7b947ece7692e3173db95acb65a2149d40720ee7de01a0f6f75978eb8bc79adbf6a7a542362d03832bbbebba2ae5b7
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ # Gem files
2
+ /*.gem
3
+
4
+ # backup files
5
+ *~
6
+
7
+ # swap files
8
+ *.swp
9
+ *.kate-swp
10
+
11
+ # file manager files
12
+ *.directory
13
+
14
+ # coverage
15
+ /coverage
16
+
17
+ # documentation
18
+ /doc
19
+ /.yardoc
data/.rubocop.yml ADDED
@@ -0,0 +1,32 @@
1
+ # Disable metrics - we stick to the sabre coding
2
+ Metrics/AbcSize:
3
+ Enabled: false
4
+
5
+ Metrics/BlockNesting:
6
+ Enabled: false
7
+
8
+ Metrics/ClassLength:
9
+ Enabled: false
10
+
11
+ Metrics/ModuleLength:
12
+ Enabled: false
13
+
14
+ Metrics/CyclomaticComplexity:
15
+ Enabled: false
16
+
17
+ Metrics/LineLength:
18
+ Enabled: false
19
+
20
+ Metrics/MethodLength:
21
+ Enabled: false
22
+
23
+ Metrics/ParameterLists:
24
+ Enabled: false
25
+
26
+ Metrics/PerceivedComplexity:
27
+ Enabled: false
28
+
29
+ # ['word', 'array'] looks better when aligned with other arrays that can't use
30
+ # %w() syntax
31
+ Style/WordArray:
32
+ Enabled: false
data/.simplecov ADDED
@@ -0,0 +1,4 @@
1
+ SimpleCov.start do
2
+ add_filter "/spec/"
3
+ end
4
+
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
@@ -0,0 +1,626 @@
1
+ ChangeLog
2
+ =========
3
+
4
+ 4.0.0-alpha2 (2015-09-04)
5
+ -------------------------
6
+
7
+ * Updated windows timezone file to support new mexican timezone.
8
+ * #239: Added a `BirthdayCalendarGenerator`. (@DominikTo)
9
+ * #250: `isInTimeRange()` now considers the timezone for floating dates and
10
+ times. (@armin-hackmann)
11
+ * Added a duplicate vcard merging tool for the command line.
12
+ * #253: `isInTimeRange()` now correctly handles events that throw the
13
+ `NoInstancesException` exception. (@migrax, @DominikTo)
14
+ * #254: The parser threw an `E_NOTICE` for certain invalid objects. It now
15
+ correctly throws a `ParseException`.
16
+
17
+
18
+ 4.0.0-alpha1 (2015-07-17)
19
+ -------------------------
20
+
21
+ * sabre/vobject now requires PHP 5.5.
22
+ * #244: PHP7 support.
23
+ * Lots of speedups and reduced memory usage!
24
+ * #160: Support for xCal a.k.a. RFC6321! (@Hywan)
25
+ * #192: Support for xCard a.k.a. RFC6351! (@Hywan)
26
+ * #139: We now accept `DateTimeInterface` wherever it accepted `DateTime`
27
+ before in arguments. This means that either `DateTime` or
28
+ `DateTimeImmutable` may be used everywhere.
29
+ * #242: Full support for the `VAVAILABILITY` component, and calculating
30
+ `VFREEBUSY` based on `VAVAILABILITY` data.
31
+ * #186: Fixing conversion of `UTC-OFFSET` properties when going back and
32
+ forward between jCal and iCalendar.
33
+ * Properties, Components and Parameters now implement PHP's `JsonSerializable`
34
+ interface.
35
+ * #139: We now _always_ return `DateTimeImmutable` from any method. This could
36
+ potentially have big implications if you manipulate Date objects anywhere.
37
+ * #161: Simplified `ElementList` by extending `ArrayIterator`.
38
+ * Removed `RecurrenceIterator` (use Recur\EventIterator instead).
39
+ * Now using php-cs-fixer to automatically enforce and correct CS.
40
+ * #233: The `+00:00` timezone is now recognized as UTC. (@c960657)
41
+ * #237: Added a `destroy()` method to all documents. This method breaks any
42
+ circular references, allowing PHP to free up memory.
43
+ * #197: Made accessing properties and objects by their name a lot faster. This
44
+ especially helps objects that have a lot of sub-components or properties,
45
+ such as large iCalendar objects.
46
+ * #197: The `$children` property on components has been changed from `public`
47
+ to `protected`. Use the `children()` method instead to get a flat list of
48
+ objects.
49
+ * #244: The `Float` and `Integer` classes have been renamed to `FloatValue`
50
+ and `IntegerValue` to allow PHP 7 compatibility.
51
+
52
+
53
+ 3.4.7 (2015-09-04)
54
+ ------------------
55
+
56
+ * #253: Handle `isInTimeRange` for recurring events that have 0 valid
57
+ instances. (@DominikTo, @migrax).
58
+
59
+
60
+ 3.4.6 (2015-08-06)
61
+ ------------------
62
+
63
+ * #250: Recurring all-day events are incorrectly included in time range
64
+ requests when not using UTC in the time range. (@armin-hackmann)
65
+
66
+
67
+ 3.4.5 (2015-06-02)
68
+ ------------------
69
+
70
+ * #229: Converting vcards from 3.0 to 4.0 that contained a `LANG` property
71
+ would throw an error.
72
+
73
+
74
+ 3.4.4 (2015-05-27)
75
+ ------------------
76
+
77
+ * #228: Fixed a 'party crasher' bug in the iTip broker. This would break
78
+ scheduling in some cases.
79
+
80
+
81
+ 3.4.3 (2015-05-19)
82
+ ------------------
83
+
84
+ * #219: Corrected validation of `EXDATE` properties with more than one value.
85
+ * #212: `BYSETPOS` with values below `-1` was broken and could cause infinite
86
+ loops.
87
+ * #211: Fix `BYDAY=-5TH` in recurrence iterator. (@lindquist)
88
+ * #216: `ENCODING` parameter is now validated for all document types.
89
+ * #217: Initializing vCard `DATE` objects with a PHP DateTime object will now
90
+ work correctly. (@thomascube)
91
+
92
+
93
+ 3.4.2 (2015-02-25)
94
+ ------------------
95
+
96
+ * #210: iTip: Replying to an event without a master event was broken.
97
+
98
+
99
+ 3.4.1 (2015-02-24)
100
+ ------------------
101
+
102
+ * A minor change to ensure that unittests work correctly in the sabre/dav
103
+ test-suite.
104
+
105
+
106
+ 3.4.0 (2015-02-23)
107
+ ------------------
108
+
109
+ * #196: Made parsing recurrence rules a lot faster on big calendars.
110
+ * Updated windows timezone mappings to latest unicode version.
111
+ * #202: Support for parsing and validating `VAVAILABILITY` components. (@Hywan)
112
+ * #195: PHP 5.3 compatibility in 'generatevcards' script. (@rickdenhaan)
113
+ * #205: Improving handling of multiple `EXDATE` when processing iTip changes.
114
+ (@armin-hackmann)
115
+ * #187: Fixed validator rules for `LAST-MODIFIED` properties.
116
+ * #188: Retain floating times when generating instances using
117
+ `Recur\EventIterator`.
118
+ * #203: Skip tests for timezones that are not supported on older PHP versions,
119
+ instead of a hard fail.
120
+ * #204: Dealing a bit better with vCard date-time values that contained
121
+ milliseconds. (which is normally invalid). (@armin-hackmann)
122
+
123
+
124
+ 3.3.5 (2015-01-09)
125
+ ------------------
126
+
127
+ * #168: Expanding calendars now removes objects with recurrence rules that
128
+ don't have a valid recurrence instance.
129
+ * #177: SCHEDULE-STATUS should not contain a reason phrase, only a status
130
+ code.
131
+ * #175: Parser can now read and skip the UTF-8 BOM.
132
+ * #179: Added `isFloating` to `DATE-TIME` properties.
133
+ * #179: Fixed jCal serialization of floating `DATE-TIME` properties.
134
+ * #173: vCard converter failed for `X-ABDATE` properties that had no
135
+ `X-ABLABEL`.
136
+ * #180: Added `PROFILE_CALDAV` and `PROFILE_CARDDAV` to enable validation rules
137
+ specific for CalDAV/CardDAV servers.
138
+ * #176: A missing `UID` is no longer an error, but a warning for the vCard
139
+ validator, unless `PROFILE_CARDDAV` is specified.
140
+
141
+
142
+ 3.3.4 (2014-11-19)
143
+ ------------------
144
+
145
+ * #154: Converting `ANNIVERSARY` to `X-ANNIVERSARY` and `X-ABDATE` and
146
+ vice-versa when converting to/from vCard 4.
147
+ * #154: It's now possible to easily select all vCard properties belonging to
148
+ a single group with `$vcard->{'ITEM1.'}` syntax. (@armin-hackmann)
149
+ * #156: Simpler way to check if a string is UTF-8. (@Hywan)
150
+ * Unittest improvements.
151
+ * #159: The recurrence iterator, freebusy generator and iCalendar DATE and
152
+ DATE-TIME properties can now all accept a reference timezone when working
153
+ floating times or all-day events.
154
+ * #159: Master events will no longer get a `RECURRENCE-ID` when expanding.
155
+ * #159: `RECURRENCE-ID` for all-day events will now be correct when expanding.
156
+ * #163: Added a `getTimeZone()` method to `VTIMEZONE` components.
157
+
158
+
159
+ 3.3.3 (2014-10-09)
160
+ ------------------
161
+
162
+ * #142: `CANCEL` and `REPLY` messages now include the `DTSTART` from the
163
+ original event.
164
+ * #143: `SCHEDULE-AGENT` on the `ORGANIZER` property is respected.
165
+ * #144: `PARTSTAT=NEEDS-ACTION` is now set for new invites, if no `PARTSTAT` is
166
+ set to support the inbox feature of iOS.
167
+ * #147: Bugs related to scheduling all-day events.
168
+ * #148: Ignore events that have attendees but no organizer.
169
+ * #149: Avoiding logging errors during timezone detection. This is a workaround
170
+ for a PHP bug.
171
+ * Support for "Line Islands Standard Time" windows timezone.
172
+ * #154: Correctly work around vCard parameters that have a value but no name.
173
+
174
+
175
+ 3.3.2 (2014-09-19)
176
+ ------------------
177
+
178
+ * Changed: iTip broker now sets RSVP status to false when replies are received.
179
+ * #118: iTip Message now has a `getScheduleStatus()` method.
180
+ * #119: Support for detecting 'significant changes'.
181
+ * #120: Support for `SCHEDULE-FORCE-SEND`.
182
+ * #121: iCal demands parameters containing the + sign to be quoted.
183
+ * #122: Don't generate REPLY messages for events that have been cancelled.
184
+ * #123: Added `SUMMARY` to iTip messages.
185
+ * #130: Incorrect validation rules for `RELATED` (should be `RELATED-TO`).
186
+ * #128: `ATTACH` in iCalendar is `URI` by default, not `BINARY`.
187
+ * #131: RRULE that doesn't provide a single valid instance now throws an
188
+ exception.
189
+ * #136: Validator rejects *all* control characters. We were missing a few.
190
+ * #133: Splitter objects will throw exceptions when receiving incompatible
191
+ objects.
192
+ * #127: Attendees who delete recurring event instances events they had already
193
+ declined earlier will no longer generate another reply.
194
+ * #125: Send CANCEL messages when ORGANIZER property gets deleted.
195
+
196
+
197
+ 3.3.1 (2014-08-18)
198
+ ------------------
199
+
200
+ * Changed: It's now possible to pass DateTime objects when using the magic
201
+ setters on properties. (`$event->DTSTART = new DateTime('now')`).
202
+ * #111: iTip Broker does not process attendee adding events to EXDATE.
203
+ * #112: EventIterator now sets TZID on RECURRENCE-ID.
204
+ * #113: Timezone support during creation of iTip REPLY messages.
205
+ * #114: VTIMEZONE is retained when generating new REQUEST objects.
206
+ * #114: Support for 'MAILTO:' style email addresses (in uppercase) in the iTip
207
+ broker. This improves evolution support.
208
+ * #115: Using REQUEST-STATUS from REPLY messages and now propegating that into
209
+ SCHEDULE-STATUS.
210
+
211
+
212
+ 3.3.0 (2014-08-07)
213
+ ------------------
214
+
215
+ * We now use PSR-4 for the directory structure. This means that everything
216
+ that was used to be in the `lib/Sabre/VObject` directory is now moved to
217
+ `lib/`. If you use composer to load this library, you shouldn't have to do
218
+ anything about that though.
219
+ * VEVENT now get populated with a DTSTAMP and UID property by default.
220
+ * BC Break: Removed the 'includes.php' file. Use composer instead.
221
+ * #103: Added support for processing [iTip][iTip] messages. This allows a user
222
+ to parse incoming iTip messages and apply the result on existing calendars,
223
+ or automatically generate invites/replies/cancellations based on changes that
224
+ a user made on objects.
225
+ * #75, #58, #18: Fixes related to overriding the first event in recurrences.
226
+ * Added: VCalendar::getBaseComponent to find the 'master' component in a
227
+ calendar.
228
+ * #51: Support for iterating RDATE properties.
229
+ * Fixed: Issue #101: RecurrenceIterator::nextMonthly() shows events that are
230
+ excluded events with wrong time
231
+
232
+
233
+ 3.2.4 (2014-07-14)
234
+ ------------------
235
+
236
+ * Added: Issue #98. The VCardConverter now takes `X-APPLE-OMIT-YEAR` into
237
+ consideration when converting between vCard 3 and 4.
238
+ * Fixed: Issue #96. Some support for Yahoo's broken vcards.
239
+ * Fixed: PHP 5.3 support was broken in the cli tool.
240
+
241
+
242
+ 3.2.3 (2014-06-12)
243
+ ------------------
244
+
245
+ * Validator now checks if DUE and DTSTART are of the same type in VTODO, and
246
+ ensures that DUE is always after DTSTART.
247
+ * Removed documentation from source repository, to http://sabre.io/vobject/
248
+ * Expanded the vobject cli tool validation output to make it easier to find
249
+ issues.
250
+ * Fixed: vobject repair. It was not working for iCalendar objects.
251
+
252
+
253
+ 3.2.2 (2014-05-07)
254
+ ------------------
255
+
256
+ * Minor tweak in unittests to make it run on PHP 5.5.12. Json-prettifying
257
+ slightly changed which caused the test to fail.
258
+
259
+
260
+ 3.2.1 (2014-05-03)
261
+ ------------------
262
+
263
+ * Minor tweak to make the unittests run with the latest hhvm on travis.
264
+ * Updated timezone definitions.
265
+ * Updated copyright links to point to http://sabre.io/
266
+
267
+
268
+ 3.2.0 (2014-04-02)
269
+ ------------------
270
+
271
+ * Now hhvm compatible!
272
+ * The validator can now detect a _lot_ more problems. Many rules for both
273
+ iCalendar and vCard were added.
274
+ * Added: bin/generate_vcards, a utility to generate random vcards for testing
275
+ purposes. Patches are welcome to add more data.
276
+ * Updated: Windows timezone mapping to latest version from unicode.org
277
+ * Changed: The timezone maps are now loaded in from external files, in
278
+ lib/Sabre/VObject/timezonedata.
279
+ * Added: Fixing badly encoded URL's from google contacts vcards.
280
+ * Fixed: Issue #68. Couldn't decode properties ending in a colon.
281
+ * Fixed: Issue #72. RecurrenceIterator should respect timezone in the UNTIL
282
+ clause.
283
+ * Fixed: Issue #67. BYMONTH limit on DAILY recurrences.
284
+ * Fixed: Issue #26. Return a more descriptive error when coming across broken
285
+ BYDAY rules.
286
+ * Fixed: Issue #28. Incorrect timezone detection for some timezones.
287
+ * Fixed: Issue #70. Casting a parameter with a null value to string would fail.
288
+ * Added: Support for rfc6715 and rfc6474.
289
+ * Added: Support for DateTime objects in the VCard DATE-AND-OR-TIME property.
290
+ * Added: UUIDUtil, for easily creating unique identifiers.
291
+ * Fixed: Issue #83. Creating new VALUE=DATE objects using php's DateTime.
292
+ * Fixed: Issue #86. Don't go into an infinite loop when php errors are
293
+ disabled and an invalid file is read.
294
+
295
+
296
+ 3.1.4 (2014-03-30)
297
+ ------------------
298
+
299
+ * Fixed: Issue #87: Several compatibility fixes related to timezone handling
300
+ changes in PHP 5.5.10.
301
+
302
+
303
+ 3.1.3 (2013-10-02)
304
+ ------------------
305
+
306
+ * Fixed: Support from properties from draft-daboo-valarm-extensions-04. Issue
307
+ #56.
308
+ * Fixed: Issue #54. Parsing a stream of multiple vcards separated by more than
309
+ one newline. Thanks @Vedmak for the patch.
310
+ * Fixed: Serializing vcard 2.1 parameters with no name caused a literal '1' to
311
+ be inserted.
312
+ * Added: VCardConverter removed properties that are no longer supported in vCard
313
+ 4.0.
314
+ * Added: vCards with a minimum number of values (such as N), but don't have that
315
+ many, are now automatically padded with empty components.
316
+ * Added: The vCard validator now also checks for a minimum number of components,
317
+ and has the ability to repair these.
318
+ * Added: Some support for vCard 2.1 in the VCard converter, to upgrade to vCard
319
+ 3.0 or 4.0.
320
+ * Fixed: Issue 60 Use Document::$componentMap when instantiating the top-level
321
+ VCalendar and VCard components.
322
+ * Fixed: Issue 62: Parsing iCalendar parameters with no value.
323
+ * Added: --forgiving option to vobject utility.
324
+ * Fixed: Compound properties such as ADR were not correctly split up in vCard
325
+ 2.1 quoted printable-encoded properties.
326
+ * Fixed: Issue 64: Encoding of binary properties of converted vCards. Thanks
327
+ @DominikTo for the patch.
328
+
329
+
330
+ 3.1.2 (2013-08-13)
331
+ ------------------
332
+
333
+ * Fixed: Setting correct property group on VCard conversion
334
+
335
+
336
+ 3.1.1 (2013-08-02)
337
+ ------------------
338
+
339
+ * Fixed: Issue #53. A regression in RecurrenceIterator.
340
+
341
+
342
+ 3.1.0 (2013-07-27)
343
+ ------------------
344
+
345
+ * Added: bad-ass new cli debugging utility (in bin/vobject).
346
+ * Added: jCal and jCard parser.
347
+ * Fixed: URI properties should not escape ; and ,.
348
+ * Fixed: VCard 4 documents now correctly use URI as a default value-type for
349
+ PHOTO and others. BINARY no longer exists in vCard 4.
350
+ * Added: Utility to convert between 2.1, 3.0 and 4.0 vCards.
351
+ * Added: You can now add() multiple parameters to a property in one call.
352
+ * Added: Parameter::has() for easily checking if a parameter value exists.
353
+ * Added: VCard::preferred() to find a preferred email, phone number, etc for a
354
+ contact.
355
+ * Changed: All $duration properties are now public.
356
+ * Added: A few validators for iCalendar documents.
357
+ * Fixed: Issue #50. RecurrenceIterator gives incorrect result when exception
358
+ events are out of order in the iCalendar file.
359
+ * Fixed: Issue #48. Overridden events in the recurrence iterator that were past
360
+ the UNTIL date were ignored.
361
+ * Added: getDuration for DURATION values such as TRIGGER. Thanks to
362
+ @SimonSimCity.
363
+ * Fixed: Issue #52. vCard 2.1 parameters with no name may lose values if there's
364
+ more than 1. Thanks to @Vedmak.
365
+
366
+
367
+ 3.0.0 (2013-06-21)
368
+ ------------------
369
+
370
+ * Fixed: includes.php file was still broken. Our tool to generate it had some
371
+ bugs.
372
+
373
+
374
+ 3.0.0-beta4 (2013-06-21)
375
+ ------------------------
376
+
377
+ * Fixed: includes.php was no longer up to date.
378
+
379
+
380
+ 3.0.0-beta3 (2013-06-17)
381
+ ------------------------
382
+
383
+ * Added: OPTION_FORGIVING now also allows slashes in property names.
384
+ * Fixed: DateTimeParser no longer fails on dates with years < 1000 & > 4999
385
+ * Fixed: Issue 36: Workaround for the recurrenceiterator and caldav events with
386
+ a missing base event.
387
+ * Fixed: jCard encoding of TIME properties.
388
+ * Fixed: jCal encoding of REQUEST-STATUS, GEO and PERIOD values.
389
+
390
+
391
+ 3.0.0-beta2 (2013-06-10)
392
+ ------------------------
393
+
394
+ * Fixed: Corrected includes.php file.
395
+ * Fixed: vCard date-time parser supported extended-format dates as well.
396
+ * Changed: Properties have been moved to an ICalendar or VCard directory.
397
+ * Fixed: Couldn't parse vCard 3 extended format dates and times.
398
+ * Fixed: Couldn't export jCard DATE values correctly.
399
+ * Fixed: Recursive loop in ICalendar\DateTime property.
400
+
401
+
402
+ 3.0.0-beta1 (2013-06-07)
403
+ ------------------------
404
+
405
+ * Added: jsonSerialize() for creating jCal and jCard documents.
406
+ * Added: helper method to parse vCard dates and times.
407
+ * Added: Specialized classes for FLOAT, LANGUAGE-TAG, TIME, TIMESTAMP,
408
+ DATE-AND-OR-TIME, CAL-ADDRESS, UNKNOWN and UTC-OFFSET properties.
409
+ * Removed: CommaSeparatedText property. Now included into Text.
410
+ * Fixed: Multiple parameters with the same name are now correctly encoded.
411
+ * Fixed: Parameter values containing a comma are now enclosed in double-quotes.
412
+ * Fixed: Iterating parameter values should now fully work as expected.
413
+ * Fixed: Support for vCard 2.1 nameless parameters.
414
+ * Changed: $valueMap, $componentMap and $propertyMap now all use fully-qualified
415
+ class names, so they are actually overridable.
416
+ * Fixed: Updating DATE-TIME to DATE values now behaves like expected.
417
+
418
+
419
+ 3.0.0-alpha4 (2013-05-31)
420
+ -------------------------
421
+
422
+ * Added: It's now possible to send parser options to the splitter classes.
423
+ * Added: A few tweaks to improve component and property creation.
424
+
425
+
426
+ 3.0.0-alpha3 (2013-05-13)
427
+ -------------------------
428
+
429
+ * Changed: propertyMap, valueMap and componentMap are now static properties.
430
+ * Changed: Component::remove() will throw an exception when trying to a node
431
+ that's not a child of said component.
432
+ * Added: Splitter objects are now faster, line numbers are accurately reported
433
+ and use less memory.
434
+ * Added: MimeDir parser can now continue parsing with the same stream buffer.
435
+ * Fixed: vobjectvalidate.php is operational again.
436
+ * Fixed: \r is properly stripped in text values.
437
+ * Fixed: QUOTED-PRINTABLE is now correctly encoded as well as encoded, for
438
+ vCards 2.1.
439
+ * Fixed: Parser assumes vCard 2.1, if no version was supplied.
440
+
441
+
442
+ 3.0.0-alpha2 (2013-05-22)
443
+ -------------------------
444
+
445
+ * Fixed: vCard URL properties were referencing a non-existant class.
446
+
447
+
448
+ 3.0.0-alpha1 (2013-05-21)
449
+ -------------------------
450
+
451
+ * Fixed: Now correctly dealing with escaping of properties. This solves the
452
+ problem with double-backslashes where they don't belong.
453
+ * Added: Easy support for properties with more than one value, using setParts
454
+ and getParts.
455
+ * Added: Support for broken 2.1 vCards produced by microsoft.
456
+ * Added: Automatically decoding quoted-printable values.
457
+ * Added: Automatically decoding base64 values.
458
+ * Added: Decoding RFC6868 parameter values (uses ^ as an escape character).
459
+ * Added: Fancy new MimeDir parser that can also parse streams.
460
+ * Added: Automatically mapping many, many properties to a property-class with
461
+ specialized API's.
462
+ * Added: remove() method for easily removing properties and sub-components
463
+ components.
464
+ * Changed: Components, Properties and Parameters can no longer be created with
465
+ Component::create, Property::create and Parameter::create. They must instead
466
+ be created through the root component. (A VCalendar or VCard object).
467
+ * Changed: API for DateTime properties has slightly changed.
468
+ * Changed: the ->value property is now protected everywhere. Use getParts() and
469
+ getValue() instead.
470
+ * BC Break: No support for mac newlines (\r). Never came across these anyway.
471
+ * Added: add() method to the Property class.
472
+ * Added: It's now possible to easy set multi-value properties as arrays.
473
+ * Added: When setting date-time properties you can just pass PHP's DateTime
474
+ object.
475
+ * Added: New components automatically get a bunch of default properties, such as
476
+ VERSION and CALSCALE.
477
+ * Added: You can add new sub-components much quicker with the magic setters, and
478
+ add() method.
479
+
480
+
481
+ 2.1.7 (2015-01-21)
482
+ ------------------
483
+
484
+ * Fixed: Issue #94, a workaround for bad escaping of ; and , in compound
485
+ properties. It's not a full solution, but it's an improvement for those
486
+ stuck in the 2.1 versions.
487
+
488
+
489
+ 2.1.6 (2014-12-10)
490
+ ------------------
491
+
492
+ * Fixed: Minor change to make sure that unittests succeed on every PHP version.
493
+
494
+
495
+ 2.1.5 (2014-06-03)
496
+ ------------------
497
+
498
+ * Fixed: #94: Better parameter escaping.
499
+ * Changed: Documentation cleanups.
500
+
501
+
502
+ 2.1.4 (2014-03-30)
503
+ ------------------
504
+
505
+ * Fixed: Issue #87: Several compatibility fixes related to timezone handling
506
+ changes in PHP 5.5.10.
507
+
508
+
509
+ 2.1.3 (2013-10-02)
510
+ ------------------
511
+
512
+ * Fixed: Issue #55. \r must be stripped from property values.
513
+ * Fixed: Issue #65. Putting quotes around parameter values that contain a colon.
514
+
515
+
516
+ 2.1.2 (2013-08-02)
517
+ ------------------
518
+
519
+ * Fixed: Issue #53. A regression in RecurrenceIterator.
520
+
521
+
522
+ 2.1.1 (2013-07-27)
523
+ ------------------
524
+
525
+ * Fixed: Issue #50. RecurrenceIterator gives incorrect result when exception
526
+ events are out of order in the iCalendar file.
527
+ * Fixed: Issue #48. Overridden events in the recurrence iterator that were past
528
+ the UNTIL date were ignored.
529
+
530
+
531
+ 2.1.0 (2013-06-17)
532
+ ------------------
533
+
534
+ * This version is fully backwards compatible with 2.0.\*. However, it contains a
535
+ few new API's that mimic the VObject 3 API. This allows it to be used a
536
+ 'bridge' version. Specifically, this new version exists so SabreDAV 1.7 and
537
+ 1.8 can run with both the 2 and 3 versions of this library.
538
+ * Added: Property\DateTime::hasTime().
539
+ * Added: Property\MultiDateTime::hasTime().
540
+ * Added: Property::getValue().
541
+ * Added: Document class.
542
+ * Added: Document::createComponent and Document::createProperty.
543
+ * Added: Parameter::getValue().
544
+
545
+
546
+ 2.0.7 (2013-03-05)
547
+ ------------------
548
+
549
+ * Fixed: Microsoft re-uses their magic numbers for different timezones,
550
+ specifically id 2 for both Sarajevo and Lisbon). A workaround was added to
551
+ deal with this.
552
+
553
+
554
+ 2.0.6 (2013-02-17)
555
+ ------------------
556
+
557
+ * Fixed: The reader now properly parses parameters without a value.
558
+
559
+
560
+ 2.0.5 (2012-11-05)
561
+ ------------------
562
+
563
+ * Fixed: The FreeBusyGenerator is now properly using the factory methods for
564
+ creation of components and properties.
565
+
566
+
567
+ 2.0.4 (2012-11-02)
568
+ ------------------
569
+
570
+ * Added: Known Lotus Notes / Domino timezone id's.
571
+
572
+
573
+ 2.0.3 (2012-10-29)
574
+ ------------------
575
+
576
+ * Added: Support for 'GMT+????' format in TZID's.
577
+ * Added: Support for formats like SystemV/EST5EDT in TZID's.
578
+ * Fixed: RecurrenceIterator now repairs recurrence rules where UNTIL < DTSTART.
579
+ * Added: Support for BYHOUR in FREQ=DAILY (@hollodk).
580
+ * Added: Support for BYHOUR and BYDAY in FREQ=WEEKLY.
581
+
582
+
583
+ 2.0.2 (2012-10-06)
584
+ ------------------
585
+
586
+ * Added: includes.php file, to load the entire library in one go.
587
+ * Fixed: A problem with determining alarm triggers for TODO's.
588
+
589
+
590
+ 2.0.1 (2012-09-22)
591
+ ------------------
592
+
593
+ * Removed: Element class. It wasn't used.
594
+ * Added: Basic validation and repair methods for broken input data.
595
+ * Fixed: RecurrenceIterator could infinitely loop when an INTERVAL of 0 was
596
+ specified.
597
+ * Added: A cli script that can validate and automatically repair vcards and
598
+ iCalendar objects.
599
+ * Added: A new 'Compound' property, that can automatically split up parts for
600
+ properties such as N, ADR, ORG and CATEGORIES.
601
+ * Added: Splitter classes, that can split up large objects (such as exports)
602
+ into individual objects (thanks @DominikTo and @armin-hackmann).
603
+ * Added: VFREEBUSY component, which allows easily checking wether timeslots are
604
+ available.
605
+ * Added: The Reader class now has a 'FORGIVING' option, which allows it to parse
606
+ properties with incorrect characters in the name (at this time, it just allows
607
+ underscores).
608
+ * Added: Also added the 'IGNORE_INVALID_LINES' option, to completely disregard
609
+ any invalid lines.
610
+ * Fixed: A bug in Windows timezone-id mappings for times created in Greenlands
611
+ timezone (sorry Greenlanders! I do care!).
612
+ * Fixed: DTEND was not generated correctly for VFREEBUSY reports.
613
+ * Fixed: Parser is at least 25% faster with real-world data.
614
+
615
+
616
+ 2.0.0 (2012-08-08)
617
+ ------------------
618
+
619
+ * VObject is now a separate project from SabreDAV. See the SabreDAV changelog
620
+ for version information before 2.0.
621
+ * New: VObject library now uses PHP 5.3 namespaces.
622
+ * New: It's possible to specify lists of parameters when constructing
623
+ properties.
624
+ * New: made it easier to construct the FreeBusyGenerator.
625
+
626
+ [iTip]: http://tools.ietf.org/html/rfc5546