tilia-dav 3.1.0.pre.alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. checksums.yaml +7 -0
  2. data/.database.travis.yml +6 -0
  3. data/.gitignore +25 -0
  4. data/.rubocop.yml +35 -0
  5. data/.simplecov +4 -0
  6. data/.travis.yml +10 -0
  7. data/CHANGELOG.sabre.md +2084 -0
  8. data/CONTRIBUTING.md +25 -0
  9. data/Gemfile +25 -0
  10. data/Gemfile.lock +103 -0
  11. data/LICENSE +27 -0
  12. data/LICENSE.sabre +27 -0
  13. data/README.md +40 -0
  14. data/Rakefile +18 -0
  15. data/database.sample.yml +6 -0
  16. data/examples/minimal.rb +25 -0
  17. data/lib/tilia/cal_dav.rb +27 -0
  18. data/lib/tilia/cal_dav/backend.rb +17 -0
  19. data/lib/tilia/cal_dav/backend/abstract_backend.rb +194 -0
  20. data/lib/tilia/cal_dav/backend/backend_interface.rb +250 -0
  21. data/lib/tilia/cal_dav/backend/notification_support.rb +38 -0
  22. data/lib/tilia/cal_dav/backend/scheduling_support.rb +57 -0
  23. data/lib/tilia/cal_dav/backend/sequel.rb +1118 -0
  24. data/lib/tilia/cal_dav/backend/sharing_support.rb +239 -0
  25. data/lib/tilia/cal_dav/backend/subscription_support.rb +79 -0
  26. data/lib/tilia/cal_dav/backend/sync_support.rb +75 -0
  27. data/lib/tilia/cal_dav/calendar.rb +426 -0
  28. data/lib/tilia/cal_dav/calendar_home.rb +335 -0
  29. data/lib/tilia/cal_dav/calendar_object.rb +219 -0
  30. data/lib/tilia/cal_dav/calendar_query_validator.rb +294 -0
  31. data/lib/tilia/cal_dav/calendar_root.rb +57 -0
  32. data/lib/tilia/cal_dav/exception.rb +7 -0
  33. data/lib/tilia/cal_dav/exception/invalid_component_type.rb +21 -0
  34. data/lib/tilia/cal_dav/i_calendar.rb +11 -0
  35. data/lib/tilia/cal_dav/i_calendar_object.rb +13 -0
  36. data/lib/tilia/cal_dav/i_calendar_object_container.rb +32 -0
  37. data/lib/tilia/cal_dav/i_shareable_calendar.rb +40 -0
  38. data/lib/tilia/cal_dav/i_shared_calendar.rb +28 -0
  39. data/lib/tilia/cal_dav/ics_export_plugin.rb +327 -0
  40. data/lib/tilia/cal_dav/notifications.rb +12 -0
  41. data/lib/tilia/cal_dav/notifications/collection.rb +131 -0
  42. data/lib/tilia/cal_dav/notifications/i_collection.rb +17 -0
  43. data/lib/tilia/cal_dav/notifications/i_node.rb +30 -0
  44. data/lib/tilia/cal_dav/notifications/node.rb +142 -0
  45. data/lib/tilia/cal_dav/notifications/plugin.rb +138 -0
  46. data/lib/tilia/cal_dav/plugin.rb +891 -0
  47. data/lib/tilia/cal_dav/principal.rb +12 -0
  48. data/lib/tilia/cal_dav/principal/collection.rb +21 -0
  49. data/lib/tilia/cal_dav/principal/i_proxy_read.rb +13 -0
  50. data/lib/tilia/cal_dav/principal/i_proxy_write.rb +13 -0
  51. data/lib/tilia/cal_dav/principal/proxy_read.rb +127 -0
  52. data/lib/tilia/cal_dav/principal/proxy_write.rb +127 -0
  53. data/lib/tilia/cal_dav/principal/user.rb +96 -0
  54. data/lib/tilia/cal_dav/schedule.rb +14 -0
  55. data/lib/tilia/cal_dav/schedule/i_inbox.rb +12 -0
  56. data/lib/tilia/cal_dav/schedule/i_mip_plugin.rb +156 -0
  57. data/lib/tilia/cal_dav/schedule/i_outbox.rb +12 -0
  58. data/lib/tilia/cal_dav/schedule/i_scheduling_object.rb +10 -0
  59. data/lib/tilia/cal_dav/schedule/inbox.rb +211 -0
  60. data/lib/tilia/cal_dav/schedule/outbox.rb +143 -0
  61. data/lib/tilia/cal_dav/schedule/plugin.rb +851 -0
  62. data/lib/tilia/cal_dav/schedule/scheduling_object.rb +126 -0
  63. data/lib/tilia/cal_dav/shareable_calendar.rb +54 -0
  64. data/lib/tilia/cal_dav/shared_calendar.rb +120 -0
  65. data/lib/tilia/cal_dav/sharing_plugin.rb +359 -0
  66. data/lib/tilia/cal_dav/subscriptions.rb +9 -0
  67. data/lib/tilia/cal_dav/subscriptions/i_subscription.rb +37 -0
  68. data/lib/tilia/cal_dav/subscriptions/plugin.rb +83 -0
  69. data/lib/tilia/cal_dav/subscriptions/subscription.rb +205 -0
  70. data/lib/tilia/cal_dav/xml.rb +10 -0
  71. data/lib/tilia/cal_dav/xml/filter.rb +12 -0
  72. data/lib/tilia/cal_dav/xml/filter/calendar_data.rb +64 -0
  73. data/lib/tilia/cal_dav/xml/filter/comp_filter.rb +79 -0
  74. data/lib/tilia/cal_dav/xml/filter/param_filter.rb +66 -0
  75. data/lib/tilia/cal_dav/xml/filter/prop_filter.rb +80 -0
  76. data/lib/tilia/cal_dav/xml/notification.rb +13 -0
  77. data/lib/tilia/cal_dav/xml/notification/invite.rb +253 -0
  78. data/lib/tilia/cal_dav/xml/notification/invite_reply.rb +167 -0
  79. data/lib/tilia/cal_dav/xml/notification/notification_interface.rb +41 -0
  80. data/lib/tilia/cal_dav/xml/notification/system_status.rb +139 -0
  81. data/lib/tilia/cal_dav/xml/property.rb +15 -0
  82. data/lib/tilia/cal_dav/xml/property/allowed_sharing_modes.rb +64 -0
  83. data/lib/tilia/cal_dav/xml/property/email_address_set.rb +60 -0
  84. data/lib/tilia/cal_dav/xml/property/invite.rb +207 -0
  85. data/lib/tilia/cal_dav/xml/property/schedule_calendar_transp.rb +108 -0
  86. data/lib/tilia/cal_dav/xml/property/supported_calendar_component_set.rb +100 -0
  87. data/lib/tilia/cal_dav/xml/property/supported_calendar_data.rb +50 -0
  88. data/lib/tilia/cal_dav/xml/property/supported_collation_set.rb +47 -0
  89. data/lib/tilia/cal_dav/xml/request.rb +14 -0
  90. data/lib/tilia/cal_dav/xml/request/calendar_multi_get_report.rb +99 -0
  91. data/lib/tilia/cal_dav/xml/request/calendar_query_report.rb +112 -0
  92. data/lib/tilia/cal_dav/xml/request/free_busy_query_report.rb +70 -0
  93. data/lib/tilia/cal_dav/xml/request/invite_reply.rb +110 -0
  94. data/lib/tilia/cal_dav/xml/request/mk_calendar.rb +67 -0
  95. data/lib/tilia/cal_dav/xml/request/share.rb +93 -0
  96. data/lib/tilia/card_dav.rb +17 -0
  97. data/lib/tilia/card_dav/address_book.rb +338 -0
  98. data/lib/tilia/card_dav/address_book_home.rb +192 -0
  99. data/lib/tilia/card_dav/address_book_root.rb +58 -0
  100. data/lib/tilia/card_dav/backend.rb +12 -0
  101. data/lib/tilia/card_dav/backend/abstract_backend.rb +30 -0
  102. data/lib/tilia/card_dav/backend/backend_interface.rb +175 -0
  103. data/lib/tilia/card_dav/backend/sequel.rb +476 -0
  104. data/lib/tilia/card_dav/backend/sync_support.rb +80 -0
  105. data/lib/tilia/card_dav/card.rb +193 -0
  106. data/lib/tilia/card_dav/i_address_book.rb +10 -0
  107. data/lib/tilia/card_dav/i_card.rb +11 -0
  108. data/lib/tilia/card_dav/i_directory.rb +14 -0
  109. data/lib/tilia/card_dav/plugin.rb +724 -0
  110. data/lib/tilia/card_dav/vcf_export_plugin.rb +122 -0
  111. data/lib/tilia/card_dav/xml.rb +9 -0
  112. data/lib/tilia/card_dav/xml/filter.rb +11 -0
  113. data/lib/tilia/card_dav/xml/filter/address_data.rb +50 -0
  114. data/lib/tilia/card_dav/xml/filter/param_filter.rb +71 -0
  115. data/lib/tilia/card_dav/xml/filter/prop_filter.rb +77 -0
  116. data/lib/tilia/card_dav/xml/property.rb +10 -0
  117. data/lib/tilia/card_dav/xml/property/supported_address_data.rb +67 -0
  118. data/lib/tilia/card_dav/xml/property/supported_collation_set.rb +38 -0
  119. data/lib/tilia/card_dav/xml/request.rb +10 -0
  120. data/lib/tilia/card_dav/xml/request/address_book_multi_get_report.rb +91 -0
  121. data/lib/tilia/card_dav/xml/request/address_book_query_report.rb +156 -0
  122. data/lib/tilia/dav.rb +94 -0
  123. data/lib/tilia/dav/auth.rb +8 -0
  124. data/lib/tilia/dav/auth/backend.rb +15 -0
  125. data/lib/tilia/dav/auth/backend/abstract_basic.rb +119 -0
  126. data/lib/tilia/dav/auth/backend/abstract_digest.rb +132 -0
  127. data/lib/tilia/dav/auth/backend/apache.rb +85 -0
  128. data/lib/tilia/dav/auth/backend/backend_interface.rb +61 -0
  129. data/lib/tilia/dav/auth/backend/basic_call_back.rb +46 -0
  130. data/lib/tilia/dav/auth/backend/file.rb +61 -0
  131. data/lib/tilia/dav/auth/backend/sequel.rb +46 -0
  132. data/lib/tilia/dav/auth/plugin.rb +157 -0
  133. data/lib/tilia/dav/browser.rb +12 -0
  134. data/lib/tilia/dav/browser/assets/favicon.ico +0 -0
  135. data/lib/tilia/dav/browser/assets/openiconic/ICON-LICENSE +21 -0
  136. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.css +510 -0
  137. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.eot +0 -0
  138. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.otf +0 -0
  139. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.svg +543 -0
  140. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.ttf +0 -0
  141. data/lib/tilia/dav/browser/assets/openiconic/open-iconic.woff +0 -0
  142. data/lib/tilia/dav/browser/assets/sabredav.css +228 -0
  143. data/lib/tilia/dav/browser/assets/sabredav.png +0 -0
  144. data/lib/tilia/dav/browser/guess_content_type.rb +80 -0
  145. data/lib/tilia/dav/browser/html_output.rb +27 -0
  146. data/lib/tilia/dav/browser/html_output_helper.rb +86 -0
  147. data/lib/tilia/dav/browser/map_get_to_prop_find.rb +41 -0
  148. data/lib/tilia/dav/browser/plugin.rb +693 -0
  149. data/lib/tilia/dav/browser/prop_find_all.rb +95 -0
  150. data/lib/tilia/dav/client.rb +341 -0
  151. data/lib/tilia/dav/collection.rb +79 -0
  152. data/lib/tilia/dav/core_plugin.rb +824 -0
  153. data/lib/tilia/dav/exception.rb +59 -0
  154. data/lib/tilia/dav/exception/bad_request.rb +18 -0
  155. data/lib/tilia/dav/exception/conflict.rb +18 -0
  156. data/lib/tilia/dav/exception/conflicting_lock.rb +26 -0
  157. data/lib/tilia/dav/exception/forbidden.rb +18 -0
  158. data/lib/tilia/dav/exception/insufficient_storage.rb +18 -0
  159. data/lib/tilia/dav/exception/invalid_resource_type.rb +23 -0
  160. data/lib/tilia/dav/exception/invalid_sync_token.rb +26 -0
  161. data/lib/tilia/dav/exception/length_required.rb +18 -0
  162. data/lib/tilia/dav/exception/lock_token_matches_request_uri.rb +25 -0
  163. data/lib/tilia/dav/exception/locked.rb +48 -0
  164. data/lib/tilia/dav/exception/method_not_allowed.rb +29 -0
  165. data/lib/tilia/dav/exception/not_authenticated.rb +18 -0
  166. data/lib/tilia/dav/exception/not_found.rb +18 -0
  167. data/lib/tilia/dav/exception/not_implemented.rb +18 -0
  168. data/lib/tilia/dav/exception/payment_required.rb +18 -0
  169. data/lib/tilia/dav/exception/precondition_failed.rb +47 -0
  170. data/lib/tilia/dav/exception/report_not_supported.rb +21 -0
  171. data/lib/tilia/dav/exception/requested_range_not_satisfiable.rb +18 -0
  172. data/lib/tilia/dav/exception/service_unavailable.rb +18 -0
  173. data/lib/tilia/dav/exception/too_many_matches.rb +21 -0
  174. data/lib/tilia/dav/exception/unsupported_media_type.rb +18 -0
  175. data/lib/tilia/dav/file.rb +58 -0
  176. data/lib/tilia/dav/fs.rb +9 -0
  177. data/lib/tilia/dav/fs/directory.rb +119 -0
  178. data/lib/tilia/dav/fs/file.rb +69 -0
  179. data/lib/tilia/dav/fs/node.rb +57 -0
  180. data/lib/tilia/dav/fs_ext.rb +8 -0
  181. data/lib/tilia/dav/fs_ext/directory.rb +175 -0
  182. data/lib/tilia/dav/fs_ext/file.rb +118 -0
  183. data/lib/tilia/dav/i_collection.rb +65 -0
  184. data/lib/tilia/dav/i_extended_collection.rb +36 -0
  185. data/lib/tilia/dav/i_file.rb +70 -0
  186. data/lib/tilia/dav/i_move_target.rb +37 -0
  187. data/lib/tilia/dav/i_multi_get.rb +29 -0
  188. data/lib/tilia/dav/i_node.rb +33 -0
  189. data/lib/tilia/dav/i_properties.rb +39 -0
  190. data/lib/tilia/dav/i_quota.rb +19 -0
  191. data/lib/tilia/dav/locks.rb +9 -0
  192. data/lib/tilia/dav/locks/backend.rb +12 -0
  193. data/lib/tilia/dav/locks/backend/abstract_backend.rb +16 -0
  194. data/lib/tilia/dav/locks/backend/backend_interface.rb +41 -0
  195. data/lib/tilia/dav/locks/backend/file.rb +146 -0
  196. data/lib/tilia/dav/locks/backend/sequel.rb +154 -0
  197. data/lib/tilia/dav/locks/lock_info.rb +60 -0
  198. data/lib/tilia/dav/locks/plugin.rb +467 -0
  199. data/lib/tilia/dav/mk_col.rb +47 -0
  200. data/lib/tilia/dav/mount.rb +7 -0
  201. data/lib/tilia/dav/mount/plugin.rb +62 -0
  202. data/lib/tilia/dav/node.rb +36 -0
  203. data/lib/tilia/dav/partial_update.rb +8 -0
  204. data/lib/tilia/dav/partial_update/i_patch_support.rb +40 -0
  205. data/lib/tilia/dav/partial_update/plugin.rb +179 -0
  206. data/lib/tilia/dav/prop_find.rb +262 -0
  207. data/lib/tilia/dav/prop_patch.rb +278 -0
  208. data/lib/tilia/dav/property_storage.rb +8 -0
  209. data/lib/tilia/dav/property_storage/backend.rb +10 -0
  210. data/lib/tilia/dav/property_storage/backend/backend_interface.rb +69 -0
  211. data/lib/tilia/dav/property_storage/backend/sequel.rb +192 -0
  212. data/lib/tilia/dav/property_storage/plugin.rb +131 -0
  213. data/lib/tilia/dav/server.rb +1388 -0
  214. data/lib/tilia/dav/server_plugin.rb +81 -0
  215. data/lib/tilia/dav/simple_collection.rb +71 -0
  216. data/lib/tilia/dav/simple_file.rb +82 -0
  217. data/lib/tilia/dav/string_util.rb +68 -0
  218. data/lib/tilia/dav/sync.rb +8 -0
  219. data/lib/tilia/dav/sync/i_sync_collection.rb +80 -0
  220. data/lib/tilia/dav/sync/plugin.rb +225 -0
  221. data/lib/tilia/dav/temporary_file_filter_plugin.rb +248 -0
  222. data/lib/tilia/dav/tree.rb +270 -0
  223. data/lib/tilia/dav/uuid_util.rb +45 -0
  224. data/lib/tilia/dav/version.rb +9 -0
  225. data/lib/tilia/dav/xml.rb +11 -0
  226. data/lib/tilia/dav/xml/element.rb +10 -0
  227. data/lib/tilia/dav/xml/element/prop.rb +92 -0
  228. data/lib/tilia/dav/xml/element/response.rb +188 -0
  229. data/lib/tilia/dav/xml/property.rb +16 -0
  230. data/lib/tilia/dav/xml/property/complex.rb +76 -0
  231. data/lib/tilia/dav/xml/property/get_last_modified.rb +79 -0
  232. data/lib/tilia/dav/xml/property/href.rb +137 -0
  233. data/lib/tilia/dav/xml/property/lock_discovery.rb +89 -0
  234. data/lib/tilia/dav/xml/property/resource_type.rb +96 -0
  235. data/lib/tilia/dav/xml/property/supported_lock.rb +48 -0
  236. data/lib/tilia/dav/xml/property/supported_method_set.rb +101 -0
  237. data/lib/tilia/dav/xml/property/supported_report_set.rb +118 -0
  238. data/lib/tilia/dav/xml/request.rb +13 -0
  239. data/lib/tilia/dav/xml/request/lock.rb +67 -0
  240. data/lib/tilia/dav/xml/request/mk_col.rb +69 -0
  241. data/lib/tilia/dav/xml/request/prop_find.rb +70 -0
  242. data/lib/tilia/dav/xml/request/prop_patch.rb +101 -0
  243. data/lib/tilia/dav/xml/request/sync_collection_report.rb +102 -0
  244. data/lib/tilia/dav/xml/response.rb +9 -0
  245. data/lib/tilia/dav/xml/response/multi_status.rb +108 -0
  246. data/lib/tilia/dav/xml/service.rb +42 -0
  247. data/lib/tilia/dav_acl.rb +16 -0
  248. data/lib/tilia/dav_acl/abstract_principal_collection.rb +143 -0
  249. data/lib/tilia/dav_acl/exception.rb +11 -0
  250. data/lib/tilia/dav_acl/exception/ace_conflict.rb +21 -0
  251. data/lib/tilia/dav_acl/exception/need_privileges.rb +65 -0
  252. data/lib/tilia/dav_acl/exception/no_abstract.rb +21 -0
  253. data/lib/tilia/dav_acl/exception/not_recognized_principal.rb +21 -0
  254. data/lib/tilia/dav_acl/exception/not_supported_privilege.rb +21 -0
  255. data/lib/tilia/dav_acl/fs.rb +9 -0
  256. data/lib/tilia/dav_acl/fs/collection.rb +108 -0
  257. data/lib/tilia/dav_acl/fs/file.rb +87 -0
  258. data/lib/tilia/dav_acl/fs/home_collection.rb +148 -0
  259. data/lib/tilia/dav_acl/i_acl.rb +61 -0
  260. data/lib/tilia/dav_acl/i_principal.rb +63 -0
  261. data/lib/tilia/dav_acl/i_principal_collection.rb +52 -0
  262. data/lib/tilia/dav_acl/plugin.rb +1109 -0
  263. data/lib/tilia/dav_acl/principal.rb +213 -0
  264. data/lib/tilia/dav_acl/principal_backend.rb +11 -0
  265. data/lib/tilia/dav_acl/principal_backend/abstract_backend.rb +42 -0
  266. data/lib/tilia/dav_acl/principal_backend/backend_interface.rb +127 -0
  267. data/lib/tilia/dav_acl/principal_backend/create_principal_support.rb +27 -0
  268. data/lib/tilia/dav_acl/principal_backend/sequel.rb +313 -0
  269. data/lib/tilia/dav_acl/principal_collection.rb +117 -0
  270. data/lib/tilia/dav_acl/xml.rb +8 -0
  271. data/lib/tilia/dav_acl/xml/property.rb +13 -0
  272. data/lib/tilia/dav_acl/xml/property/acl.rb +222 -0
  273. data/lib/tilia/dav_acl/xml/property/acl_restrictions.rb +40 -0
  274. data/lib/tilia/dav_acl/xml/property/current_user_privilege_set.rb +125 -0
  275. data/lib/tilia/dav_acl/xml/property/principal.rb +149 -0
  276. data/lib/tilia/dav_acl/xml/property/supported_privilege_set.rb +135 -0
  277. data/lib/tilia/dav_acl/xml/request.rb +11 -0
  278. data/lib/tilia/dav_acl/xml/request/expand_property_report.rb +86 -0
  279. data/lib/tilia/dav_acl/xml/request/principal_property_search_report.rb +111 -0
  280. data/lib/tilia/dav_acl/xml/request/principal_search_property_set_report.rb +49 -0
  281. data/test/cal_dav/backend/abstract_sequel_test.rb +817 -0
  282. data/test/cal_dav/backend/abstract_test.rb +163 -0
  283. data/test/cal_dav/backend/mock.rb +169 -0
  284. data/test/cal_dav/backend/mock_scheduling.rb +84 -0
  285. data/test/cal_dav/backend/mock_sharing.rb +124 -0
  286. data/test/cal_dav/backend/mock_subscription_support.rb +123 -0
  287. data/test/cal_dav/backend/sequel_my_sql_test.rb +102 -0
  288. data/test/cal_dav/backend/sequel_sqlite_test.rb +105 -0
  289. data/test/cal_dav/calendar_home_notifications_test.rb +41 -0
  290. data/test/cal_dav/calendar_home_shared_calendars_test.rb +64 -0
  291. data/test/cal_dav/calendar_home_subscriptions_test.rb +67 -0
  292. data/test/cal_dav/calendar_home_test.rb +144 -0
  293. data/test/cal_dav/calendar_object_test.rb +317 -0
  294. data/test/cal_dav/calendar_query_v_alarm_test.rb +114 -0
  295. data/test/cal_dav/calendar_query_validator_test.rb +820 -0
  296. data/test/cal_dav/calendar_test.rb +203 -0
  297. data/test/cal_dav/expand_events_double_events_test.rb +94 -0
  298. data/test/cal_dav/expand_events_dtstar_tand_dten_dby_day_test.rb +94 -0
  299. data/test/cal_dav/expand_events_dtstar_tand_dtend_test.rb +100 -0
  300. data/test/cal_dav/expand_events_floating_time_test.rb +211 -0
  301. data/test/cal_dav/free_busy_report_test.rb +156 -0
  302. data/test/cal_dav/get_events_by_timerange_test.rb +74 -0
  303. data/test/cal_dav/ics_export_plugin_test.rb +638 -0
  304. data/test/cal_dav/issue166_test.rb +59 -0
  305. data/test/cal_dav/issue172_test.rb +139 -0
  306. data/test/cal_dav/issue203_test.rb +130 -0
  307. data/test/cal_dav/issue205_test.rb +89 -0
  308. data/test/cal_dav/issue211_test.rb +84 -0
  309. data/test/cal_dav/issue220_test.rb +94 -0
  310. data/test/cal_dav/issue228_test.rb +74 -0
  311. data/test/cal_dav/j_cal_transform_test.rb +244 -0
  312. data/test/cal_dav/notifications/collection_test.rb +67 -0
  313. data/test/cal_dav/notifications/node_test.rb +73 -0
  314. data/test/cal_dav/notifications/plugin_test.rb +144 -0
  315. data/test/cal_dav/plugin_test.rb +1049 -0
  316. data/test/cal_dav/principal/collection_test.rb +19 -0
  317. data/test/cal_dav/principal/proxy_read_test.rb +67 -0
  318. data/test/cal_dav/principal/proxy_write_test.rb +29 -0
  319. data/test/cal_dav/principal/user_test.rb +91 -0
  320. data/test/cal_dav/schedule/deliver_new_event_test.rb +81 -0
  321. data/test/cal_dav/schedule/free_busy_request_test.rb +565 -0
  322. data/test/cal_dav/schedule/i_mip/mock_plugin.rb +40 -0
  323. data/test/cal_dav/schedule/i_mip_plugin_test.rb +196 -0
  324. data/test/cal_dav/schedule/inbox_test.rb +150 -0
  325. data/test/cal_dav/schedule/outbox_post_test.rb +124 -0
  326. data/test/cal_dav/schedule/outbox_test.rb +76 -0
  327. data/test/cal_dav/schedule/plugin_basic_test.rb +39 -0
  328. data/test/cal_dav/schedule/plugin_properties_test.rb +96 -0
  329. data/test/cal_dav/schedule/plugin_properties_with_shared_calendar_test.rb +69 -0
  330. data/test/cal_dav/schedule/schedule_deliver_test.rb +605 -0
  331. data/test/cal_dav/schedule/scheduling_object_test.rb +327 -0
  332. data/test/cal_dav/shareable_calendar_test.rb +58 -0
  333. data/test/cal_dav/shared_calendar_test.rb +189 -0
  334. data/test/cal_dav/sharing_plugin_test.rb +373 -0
  335. data/test/cal_dav/subscriptions/create_subscription_test.rb +115 -0
  336. data/test/cal_dav/subscriptions/plugin_test.rb +46 -0
  337. data/test/cal_dav/subscriptions/subscription_test.rb +119 -0
  338. data/test/cal_dav/test_util.rb +164 -0
  339. data/test/cal_dav/validate_i_cal_test.rb +219 -0
  340. data/test/cal_dav/xml/notification/invite_reply_test.rb +136 -0
  341. data/test/cal_dav/xml/notification/invite_test.rb +225 -0
  342. data/test/cal_dav/xml/notification/system_status_test.rb +63 -0
  343. data/test/cal_dav/xml/property/allowed_sharing_modes_test.rb +34 -0
  344. data/test/cal_dav/xml/property/email_address_set_test.rb +35 -0
  345. data/test/cal_dav/xml/property/invite_test.rb +173 -0
  346. data/test/cal_dav/xml/property/schedule_calendar_transp_test.rb +96 -0
  347. data/test/cal_dav/xml/property/supported_calendar_component_set_test.rb +76 -0
  348. data/test/cal_dav/xml/property/supported_calendar_data_test.rb +32 -0
  349. data/test/cal_dav/xml/property/supported_collation_set_test.rb +33 -0
  350. data/test/cal_dav/xml/request/calendar_query_report_test.rb +339 -0
  351. data/test/cal_dav/xml/request/invite_reply_test.rb +68 -0
  352. data/test/cal_dav/xml/request/share_test.rb +79 -0
  353. data/test/card_dav/abstract_plugin_test.rb +24 -0
  354. data/test/card_dav/address_book_home_test.rb +128 -0
  355. data/test/card_dav/address_book_query_test.rb +303 -0
  356. data/test/card_dav/address_book_root_test.rb +26 -0
  357. data/test/card_dav/address_book_test.rb +166 -0
  358. data/test/card_dav/backend/abstract_sequel_test.rb +302 -0
  359. data/test/card_dav/backend/mock.rb +122 -0
  360. data/test/card_dav/backend/sequel_my_sql_test.rb +56 -0
  361. data/test/card_dav/backend/sequel_sqlite_test.rb +59 -0
  362. data/test/card_dav/card_test.rb +164 -0
  363. data/test/card_dav/i_directory_test.rb +22 -0
  364. data/test/card_dav/multi_get_test.rb +97 -0
  365. data/test/card_dav/plugin_test.rb +87 -0
  366. data/test/card_dav/sogo_strip_content_type_test.rb +63 -0
  367. data/test/card_dav/test_util.rb +51 -0
  368. data/test/card_dav/validate_filter_test.rb +210 -0
  369. data/test/card_dav/validate_v_card_test.rb +143 -0
  370. data/test/card_dav/vcf_export_test.rb +66 -0
  371. data/test/card_dav/xml/property/supported_address_data_test.rb +34 -0
  372. data/test/card_dav/xml/property/supported_collation_set_test.rb +34 -0
  373. data/test/card_dav/xml/request/address_book_query_report_test.rb +276 -0
  374. data/test/dav/abstract_server.rb +36 -0
  375. data/test/dav/auth/backend/abstract_basic_test.rb +74 -0
  376. data/test/dav/auth/backend/abstract_digest_test.rb +114 -0
  377. data/test/dav/auth/backend/abstract_sequel_test.rb +25 -0
  378. data/test/dav/auth/backend/apache_test.rb +60 -0
  379. data/test/dav/auth/backend/basic_call_back_test.rb +33 -0
  380. data/test/dav/auth/backend/file_test.rb +43 -0
  381. data/test/dav/auth/backend/mock.rb +73 -0
  382. data/test/dav/auth/backend/sequel_my_sql_test.rb +32 -0
  383. data/test/dav/auth/backend/sequel_sqlite_test.rb +21 -0
  384. data/test/dav/auth/plugin_test.rb +92 -0
  385. data/test/dav/basic_node_test.rb +143 -0
  386. data/test/dav/browser/guess_content_type_test.rb +44 -0
  387. data/test/dav/browser/map_get_to_prop_find_test.rb +37 -0
  388. data/test/dav/browser/plugin_test.rb +165 -0
  389. data/test/dav/browser/prop_find_all_test.rb +59 -0
  390. data/test/dav/client_mock.rb +24 -0
  391. data/test/dav/client_test.rb +231 -0
  392. data/test/dav/copy_test.rb +33 -0
  393. data/test/dav/exception/locked_test.rb +61 -0
  394. data/test/dav/exception/payment_required_test.rb +14 -0
  395. data/test/dav/exception/service_unavailable_test.rb +14 -0
  396. data/test/dav/exception/too_many_matches_test.rb +31 -0
  397. data/test/dav/exception_test.rb +24 -0
  398. data/test/dav/fs_ext/file_test.rb +72 -0
  399. data/test/dav/fs_ext/server_test.rb +251 -0
  400. data/test/dav/get_if_conditions_test.rb +299 -0
  401. data/test/dav/http_delete_test.rb +110 -0
  402. data/test/dav/http_get_test.rb +130 -0
  403. data/test/dav/http_head_test.rb +80 -0
  404. data/test/dav/http_move_test.rb +105 -0
  405. data/test/dav/http_prefer_parsing_test.rb +186 -0
  406. data/test/dav/http_put_test.rb +271 -0
  407. data/test/dav/issue33_test.rb +90 -0
  408. data/test/dav/locks/backend/abstract_test.rb +160 -0
  409. data/test/dav/locks/backend/file_test.rb +24 -0
  410. data/test/dav/locks/backend/mock.rb +82 -0
  411. data/test/dav/locks/backend/sequel_my_sql_test.rb +32 -0
  412. data/test/dav/locks/backend/sequel_test.rb +19 -0
  413. data/test/dav/locks/ms_word_test.rb +119 -0
  414. data/test/dav/locks/plugin2_test.rb +61 -0
  415. data/test/dav/locks/plugin_test.rb +896 -0
  416. data/test/dav/mock/collection.rb +113 -0
  417. data/test/dav/mock/file.rb +100 -0
  418. data/test/dav/mock/properties_collection.rb +80 -0
  419. data/test/dav/mock/streaming_file.rb +66 -0
  420. data/test/dav/mount/plugin_test.rb +48 -0
  421. data/test/dav/object_tree_test.rb +65 -0
  422. data/test/dav/partial_update/file_mock.rb +92 -0
  423. data/test/dav/partial_update/plugin_test.rb +125 -0
  424. data/test/dav/partial_update/specification_test.rb +77 -0
  425. data/test/dav/prop_find_test.rb +87 -0
  426. data/test/dav/prop_patch_test.rb +367 -0
  427. data/test/dav/property_storage/backend/abstract_sequel_test.rb +147 -0
  428. data/test/dav/property_storage/backend/mock.rb +96 -0
  429. data/test/dav/property_storage/backend/sequel_mysql_test.rb +32 -0
  430. data/test/dav/property_storage/backend/sequel_sqlite_test.rb +31 -0
  431. data/test/dav/property_storage/plugin_test.rb +90 -0
  432. data/test/dav/server_copy_move_test.rb +164 -0
  433. data/test/dav/server_events_test.rb +105 -0
  434. data/test/dav/server_mkcol_test.rb +337 -0
  435. data/test/dav/server_mock.rb +10 -0
  436. data/test/dav/server_plugin_test.rb +85 -0
  437. data/test/dav/server_precondition_test.rb +253 -0
  438. data/test/dav/server_props_infinite_depth_test.rb +144 -0
  439. data/test/dav/server_props_test.rb +182 -0
  440. data/test/dav/server_range_test.rb +262 -0
  441. data/test/dav/server_simple_test.rb +388 -0
  442. data/test/dav/server_update_properties_test.rb +93 -0
  443. data/test/dav/simple_file_test.rb +17 -0
  444. data/test/dav/string_util_test.rb +92 -0
  445. data/test/dav/sync/mock_sync_collection.rb +141 -0
  446. data/test/dav/sync/plugin_test.rb +491 -0
  447. data/test/dav/sync_token_property_test.rb +105 -0
  448. data/test/dav/temporary_file_filter_test.rb +179 -0
  449. data/test/dav/test_plugin.rb +24 -0
  450. data/test/dav/tree_test.rb +201 -0
  451. data/test/dav/uuid_util_test.rb +14 -0
  452. data/test/dav/xml/element/prop_test.rb +121 -0
  453. data/test/dav/xml/element/response_test.rb +202 -0
  454. data/test/dav/xml/property/href_test.rb +112 -0
  455. data/test/dav/xml/property/last_modified_test.rb +52 -0
  456. data/test/dav/xml/property/lock_discovery_test.rb +79 -0
  457. data/test/dav/xml/property/supported_method_set_test.rb +54 -0
  458. data/test/dav/xml/property/supported_report_set_test.rb +109 -0
  459. data/test/dav/xml/request/prop_find_test.rb +45 -0
  460. data/test/dav/xml/request/prop_patch_test.rb +47 -0
  461. data/test/dav/xml/request/sync_collection_test.rb +89 -0
  462. data/test/dav/xml/xml_tester.rb +35 -0
  463. data/test/dav_acl/acl_method_test.rb +299 -0
  464. data/test/dav_acl/allow_access_test.rb +94 -0
  465. data/test/dav_acl/block_access_test.rb +161 -0
  466. data/test/dav_acl/exception/ace_conflict_test.rb +33 -0
  467. data/test/dav_acl/exception/need_privileges_exception_test.rb +43 -0
  468. data/test/dav_acl/exception/no_abstract_test.rb +33 -0
  469. data/test/dav_acl/exception/not_recognized_principal_test.rb +33 -0
  470. data/test/dav_acl/exception/not_supported_privilege_test.rb +33 -0
  471. data/test/dav_acl/expand_properties_test.rb +265 -0
  472. data/test/dav_acl/fs/collection_test.rb +39 -0
  473. data/test/dav_acl/fs/file_test.rb +47 -0
  474. data/test/dav_acl/fs/home_collection_test.rb +82 -0
  475. data/test/dav_acl/mock_acl_node.rb +27 -0
  476. data/test/dav_acl/mock_principal.rb +27 -0
  477. data/test/dav_acl/plugin_admin_test.rb +60 -0
  478. data/test/dav_acl/plugin_properties_test.rb +346 -0
  479. data/test/dav_acl/plugin_update_properties_test.rb +82 -0
  480. data/test/dav_acl/principal_backend/abstract_sequel_test.rb +159 -0
  481. data/test/dav_acl/principal_backend/mock.rb +150 -0
  482. data/test/dav_acl/principal_backend/sequel_my_sql_test.rb +43 -0
  483. data/test/dav_acl/principal_backend/sequel_sqlite_test.rb +31 -0
  484. data/test/dav_acl/principal_collection_test.rb +44 -0
  485. data/test/dav_acl/principal_property_search_test.rb +354 -0
  486. data/test/dav_acl/principal_search_property_set_test.rb +125 -0
  487. data/test/dav_acl/principal_test.rb +181 -0
  488. data/test/dav_acl/simple_plugin_test.rb +320 -0
  489. data/test/dav_acl/xml/property/acl_restrictions_test.rb +28 -0
  490. data/test/dav_acl/xml/property/acl_test.rb +325 -0
  491. data/test/dav_acl/xml/property/current_user_privilege_set_test.rb +77 -0
  492. data/test/dav_acl/xml/property/principal_test.rb +158 -0
  493. data/test/dav_acl/xml/property/supported_privilege_set_test.rb +109 -0
  494. data/test/dav_server_test.rb +225 -0
  495. data/test/http/response_mock.rb +16 -0
  496. data/test/http/sapi_mock.rb +29 -0
  497. data/test/test_helper.rb +176 -0
  498. data/tilia-dav.gemspec +28 -0
  499. metadata +726 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5002abaed57e202e9656089d5d31ce4887f537de
4
+ data.tar.gz: 43a313a0691eae02f0e25cf178f5311d08d4fd26
5
+ SHA512:
6
+ metadata.gz: f802d45316c92505f4e6a4e09d7f9783a33edaba6edd0d32d738613fad76768fced373c7b112ab20c4025d056b66e0ade70f719748913d7ca699b8cbb57f2b7c
7
+ data.tar.gz: 14912365fc13673b7def4eed6e6773b863ded37a9432f3d4a97ea10d525df1f149c06860eb12b61c802cc1c433552e67d2df236c70eed969331fdc60f538f38c
@@ -0,0 +1,6 @@
1
+ ---
2
+ :host: localhost
3
+ :user: root
4
+ :password:
5
+ :database: tilia
6
+ :engine: MEMORY
data/.gitignore ADDED
@@ -0,0 +1,25 @@
1
+ # Gem files
2
+ /*.gem
3
+
4
+ # database connection file
5
+ /database.yml
6
+
7
+ # backup files
8
+ *~
9
+
10
+ # swap files
11
+ *.swp
12
+ *.kate-swp
13
+
14
+ # file manager files
15
+ *.directory
16
+
17
+ # coverage
18
+ /coverage
19
+
20
+ # documentation
21
+ /doc
22
+ /.yardoc
23
+
24
+ # Example server roots
25
+ /examples/*test_root
data/.rubocop.yml ADDED
@@ -0,0 +1,35 @@
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
+ Style/OptionalArguments:
30
+ Enabled: false
31
+
32
+ # ['word', 'array'] looks better when aligned with other arrays that can't use
33
+ # %w() syntax
34
+ Style/WordArray:
35
+ Enabled: false
data/.simplecov ADDED
@@ -0,0 +1,4 @@
1
+ SimpleCov.start do
2
+ add_filter "/test/"
3
+ end
4
+
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+
5
+ services:
6
+ - mysql
7
+
8
+ before_script:
9
+ - mysql -e 'create database IF NOT EXISTS tilia'
10
+ - cp -f .database.travis.yml database.yml
@@ -0,0 +1,2084 @@
1
+ ChangeLog
2
+ ======
3
+
4
+ 3.1.0-alpha2 (2015-09-05)
5
+ -------------------------
6
+
7
+ * Massive calendars and addressbooks should see a big drop in peak memory
8
+ usage.
9
+ * Fixed a privilege bug in the availability system.
10
+ * #697: Added a "tableName" member to the PropertyStorage PDO backend. (@Frzk).
11
+ * #699: PostgreSQL fix for the Locks PDO backend. (@TCKnet)
12
+ * Removed the `simplefsserver.php` example file. It's not simple enough.
13
+ * #703: PropPatch in client is not correctly encoded.
14
+ * #709: Throw exception when running into empty
15
+ `supported-calendar-component-set`.
16
+ * #711: Don't trigger deserializers for empty elements in `{DAV:}prop`. This
17
+ fixes issues when using sabre/dav as a client.
18
+ * The zip release ships with [sabre/vobject 4.0.0-alpha2][vobj],
19
+ [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
20
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
21
+
22
+
23
+ 3.1.0-alpha1 (2015-07-19)
24
+ -------------------------
25
+
26
+ * Now requires PHP 5.5
27
+ * Upgraded to vobject 4, which is a lot faster.
28
+ * Support for PHP 7.
29
+ * #690: Support for `calendar-availability`, draft 05.
30
+ [reference][calendar-availability].
31
+ * #691: Workaround for broken Windows Phone client.
32
+ * The zip release ships with [sabre/vobject 4.0.0-alpha1][vobj],
33
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
34
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
35
+
36
+
37
+ 3.0.4 (2015-09-06)
38
+ ------------------
39
+
40
+ * #703: PropPatch in client is not correctly encoded.
41
+ * #709: Throw exception when running into empty
42
+ `supported-calendar-component-set`.
43
+ * #711: Don't trigger deserializers for empty elements in `{DAV:}prop`. This
44
+ fixes issues when using sabre/dav as a client.
45
+ * #705: A `MOVE` request that gets prevented from deleting the source resource
46
+ will still remove the target resource. Now all events are triggered before
47
+ any destructive operations.
48
+ * The zip release ships with [sabre/vobject 3.4.7][vobj],
49
+ [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
50
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
51
+
52
+
53
+ 3.0.3 (2015-08-06)
54
+ ------------------
55
+
56
+ * #700: Digest Auth fails on `HEAD` requests.
57
+ * Fixed example files to no longer use now-deprecated realm argument.
58
+ * The zip release ships with [sabre/vobject 3.4.6][vobj],
59
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
60
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
61
+
62
+
63
+ 3.0.2 (2015-07-21)
64
+ ------------------
65
+
66
+ * #657: Migration script would break when coming a cross an iCalendar object
67
+ with no UID.
68
+ * #691: Workaround for broken Windows Phone client.
69
+ * Fixed a whole bunch of incorrect php docblocks.
70
+ * The zip release ships with [sabre/vobject 3.4.5][vobj],
71
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
72
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
73
+
74
+
75
+ 3.0.1 (2015-07-02)
76
+ ------------------
77
+
78
+ * #674: Postgres sql file fixes. (@davesouthey)
79
+ * #677: Resources with the name '0' would not get retrieved when using
80
+ `Depth: infinity` in a `PROPFIND` request.
81
+ * #680: Fix 'autoprefixing' of dead `{DAV:}href` properties.
82
+ * #675: NTLM support in DAV\Client. (@k42b3)
83
+ * The zip release ships with [sabre/vobject 3.4.5][vobj],
84
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
85
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
86
+
87
+
88
+ 3.0.0 (2015-06-02)
89
+ ------------------
90
+
91
+ * No changes since last beta.
92
+ * The zip release ships with [sabre/vobject 3.4.5][vobj],
93
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
94
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
95
+
96
+
97
+ 3.0.0-beta3 (2015-05-29)
98
+ ------------------------
99
+
100
+ * Fixed deserializing href properties with no value.
101
+ * Fixed deserializing `{DAV:}propstat` without a `{DAV:}prop`.
102
+ * #668: More information about vcf-export-plugin in browser plugin.
103
+ * #669: Add export button to browser plugin for address books. (@mgee)
104
+ * #670: multiget report hrefs were not decoded.
105
+ * The zip release ships with [sabre/vobject 3.4.4][vobj],
106
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
107
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
108
+
109
+
110
+ 3.0.0-beta2 (2015-05-27)
111
+ ------------------------
112
+
113
+ * A node's properties should not overwrite properties that were already set.
114
+ * Some uris were not correctly encoded in notifications.
115
+ * The zip release ships with [sabre/vobject 3.4.4][vobj],
116
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
117
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
118
+
119
+
120
+ 3.0.0-beta1 (2015-05-25)
121
+ ------------------------
122
+
123
+ * `migrate22.php` is now called `migrate30.php`.
124
+ * Using php-cs-fixer for automated coding standards enforcement and fixing.
125
+ * #660: principals could break html output.
126
+ * #662: Fixed several bugs in the `share` request parser.
127
+ * #665: Fix a bug in serialization of complex properties in the proppatch
128
+ request in the client.
129
+ * #666: expand-property report did not correctly prepend the base uri when
130
+ generating uris, this caused delegation to break.
131
+ * #659: Don't throw errors when when etag-related checks are done on
132
+ collections.
133
+ * Fully supporting the updated `Prefer` header syntax, as defined in
134
+ [rfc7240][rfc7240].
135
+ * The zip release ships with [sabre/vobject 3.4.3][vobj],
136
+ [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
137
+ [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
138
+
139
+
140
+ 3.0.0-alpha1 (2015-05-19)
141
+ -------------------------
142
+
143
+ * It's now possible to get all property information from files using the
144
+ browser plugin.
145
+ * Browser plugin will now show a 'calendar export' button when the
146
+ ics-export plugin is enabled.
147
+ * Some nodes that by default showed the current time as their last
148
+ modification time, now no longer has a last modification time.
149
+ * CardDAV namespace was missing from default namespaceMap.
150
+ * #646: Properties can now control their own HTML output in the browser plugin.
151
+ * #646: Nicer HTML output for the `{DAV:}acl` property.
152
+ * Browser plugin no longer shows a few properties that take up a lot of space,
153
+ but are likely not really interesting for most users.
154
+ * #654: Added a collection, `Sabre\DAVACL\FS\HomeCollection` for automatically
155
+ creating a private home collection per-user.
156
+ * Changed all MySQL columns from `VARCHAR` to `VARBINARY` where possible.
157
+ * Improved older migration scripts a bit to allow easier testing.
158
+ * The zip release ships with [sabre/vobject 3.4.3][vobj],
159
+ [sabre/http 4.0.0-alpha3][http], [sabre/event 2.0.2][evnt],
160
+ [sabre/uri 1.0.1][uri] and [sabre/xml 0.4.3][xml].
161
+
162
+
163
+ 2.2.0-alpha4 (2015-04-13)
164
+ -------------------------
165
+
166
+ * Complete rewrite of the XML system. We now use our own [sabre/xml][xml],
167
+ which has a much smarter XML Reader and Writer.
168
+ * BC Break: It's no longer possible to instantiate the Locks plugin without
169
+ a locks backend. I'm not sure why this ever made sense.
170
+ * Simplified the Locking system and fixed a bug related to if tokens checking
171
+ locks unrelated to the current request.
172
+ * `FSExt` Directory and File no longer do custom property storage. This
173
+ functionality is already covered pretty well by the `PropertyStorage` plugin,
174
+ so please switch.
175
+ * Renamed `Sabre\CardDAV\UserAddressBooks` to `Sabre\CardDAV\AddressBookHome`
176
+ to be more consistent with `CalendarHome` as well as the CardDAV
177
+ specification.
178
+ * `Sabre\DAV\IExtendedCollection` now receives a `Sabre\DAV\MkCol` object as
179
+ its second argument, and no longer receives seperate properties and
180
+ resourcetype arguments.
181
+ * `MKCOL` now integrates better with propertystorage plugins.
182
+ * The zip release ships with [sabre/vobject 3.4.2][vobj],
183
+ [sabre/http 4.0.0-alpha1][http], [sabre/event 2.0.1][evnt],
184
+ [sabre/uri 1.0.0][uri] and [sabre/xml 0.4.3][xml].
185
+
186
+
187
+ 2.2.0-alpha3 (2015-02-25)
188
+ -------------------------
189
+
190
+ * Contains all the changes introduced between 2.1.2 and 2.1.3.
191
+ * The zip release ships with [sabre/vobject 3.4.2][vobj],
192
+ [sabre/http 4.0.0-alpha1][http], [sabre/event 2.0.1][evnt] and
193
+ [sabre/uri 1.0.0][uri].
194
+
195
+
196
+ 2.2.0-alpha2 (2015-01-09)
197
+ -------------------------
198
+
199
+ * Renamed `Sabre\DAV\Auth\Backend\BackendInterface::requireAuth` to
200
+ `challenge`, which is a more correct and better sounding name.
201
+ * The zip release ships with [sabre/vobject 3.3.5][vobj],
202
+ [sabre/http 3.0.4][http], [sabre/event 2.0.1][evnt].
203
+
204
+
205
+ 2.2.0-alpha1 (2014-12-10)
206
+ -------------------------
207
+
208
+ * The browser plugin now has a new page with information about your sabredav
209
+ server, and shows information about every plugin that's loaded in the
210
+ system.
211
+ * #191: The Authentication system can now support multiple authentication
212
+ backends.
213
+ * Removed: all `$tableName` arguments from every PDO backend. This was already
214
+ deprecated, but has now been fully removed. All of these have been replaced
215
+ with public properties.
216
+ * Deleted several classes that were already deprecated much earlier:
217
+ * `Sabre\CalDAV\CalendarRootNode`
218
+ * `Sabre\CalDAV\UserCalendars`
219
+ * `Sabre\DAV\Exception\FileNotFound`
220
+ * `Sabre\DAV\Locks\Backend\FS`
221
+ * `Sabre\DAV\PartialUpdate\IFile`
222
+ * `Sabre\DAV\URLUtil`
223
+ * Removed: `Sabre\DAV\Client::addTrustedCertificates` and
224
+ `Sabre\DAV\Client::setVerifyPeer`.
225
+ * Removed: `Sabre\DAV\Plugin::getPlugin()` can now no longer return plugins
226
+ based on its class name.
227
+ * Removed: `Sabre\DAVACL\Plugin::getPrincipalByEmail()`.
228
+ * #560: GuessContentType plugin will now set content-type to
229
+ `application/octet-stream` if a better content-type could not be determined.
230
+ * #568: Added a `componentType` argument to `ICSExportPlugin`, allowing you to
231
+ specifically fetch `VEVENT`, `VTODO` or `VJOURNAL`.
232
+ * #582: Authentication backend interface changed to be stateless. If you
233
+ implemented your own authentication backend, make sure you upgrade your class
234
+ to the latest API!
235
+ * #582: `Sabre\DAV\Auth\Plugin::getCurrentUser()` is now deprecated. Use
236
+ `Sabre\DAV\Auth\Plugin::getCurrentPrincipal()` instead.
237
+ * #193: Fix `Sabre\DAV\FSExt\Directory::getQuotaInfo()` on windows.
238
+
239
+
240
+ 2.1.7 (2015-09-05)
241
+ ------------------
242
+
243
+ * #705: A `MOVE` request that gets prevented from deleting the source resource
244
+ will still remove the target resource. Now all events are triggered before
245
+ any destructive operations.
246
+ * The zip release ships with [sabre/vobject 3.4.7][vobj],
247
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
248
+
249
+
250
+ 2.1.6 (2015-07-21)
251
+ ------------------
252
+
253
+ * #657: Migration script would break when coming a cross an iCalendar object
254
+ with no UID.
255
+ * #691: Workaround for broken Windows Phone client.
256
+ * The zip release ships with [sabre/vobject 3.4.5][vobj],
257
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
258
+
259
+
260
+ 2.1.5 (2015-07-11)
261
+ ------------------
262
+
263
+ * #677: Resources with the name '0' would not get retrieved when using
264
+ `Depth: infinity` in a `PROPFIND` request.
265
+ * The zip release ships with [sabre/vobject 3.4.5][vobj],
266
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
267
+
268
+
269
+ 2.1.4 (2015-05-25)
270
+ ------------------
271
+
272
+ * #651: Double-encoded path in the browser plugin. Should fix a few broken
273
+ links in some setups.
274
+ * #650: Correctly cleaning up change info after deleting calendars (@ErrOrnAmE).
275
+ * #658: Updating `schedule-calendar-default-URL` does not work well, so we're
276
+ disabling it until there's a better fix.
277
+ * The zip release ships with [sabre/vobject 3.4.3][vobj],
278
+ [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
279
+
280
+
281
+ 2.1.3 (2015-02-25)
282
+ ------------------
283
+
284
+ * #586: `SCHEDULE-STATUS` should not contain a reason-phrase.
285
+ * #539: Fixed a bug related to scheduling in shared calendars.
286
+ * #595: Support for calendar-timezone in iCalendar exports.
287
+ * #581: findByUri would send empty prefixes to the principal backend (@soydeedo)
288
+ * #611: Escaping a bit more HTML output in the browser plugin. (@LukasReschke)
289
+ * #610: Don't allow discovery of arbitrary files using `..` in the browser
290
+ plugin (@LukasReschke).
291
+ * Browser plugin now shows quota properties.
292
+ * #612: PropertyStorage didn't delete properties from nodes when a node's
293
+ parents get deleted.
294
+ * #581: Fixed problems related to finding attendee information during
295
+ scheduling.
296
+ * The zip release ships with [sabre/vobject 3.4.2][vobj],
297
+ [sabre/http 3.0.4][http], and [sabre/event 2.0.1][evnt].
298
+
299
+
300
+ 2.1.2 (2014-12-10)
301
+ ------------------
302
+
303
+ * #566: Another issue related to the migration script, which would cause
304
+ scheduling to not work well for events that were already added before the
305
+ migration.
306
+ * #567: Doing freebusy requests on accounts that had 0 calendars would throw
307
+ a `E_NOTICE`.
308
+ * #572: `HEAD` requests trigger a PHP warning.
309
+ * #579: Browser plugin can throw exception for a few resourcetypes that didn't
310
+ have an icon defined.
311
+ * The zip release ships with [sabre/vobject 3.3.4][vobj],
312
+ [sabre/http 3.0.4][http], and [sabre/event 2.0.1][evnt].
313
+
314
+
315
+ 2.1.1 (2014-11-22)
316
+ ------------------
317
+
318
+ * #561: IMip Plugin didn't strip mailto: from email addresses.
319
+ * #566: Migration process had 2 problems related to adding the `uid` field
320
+ to the `calendarobjects` table.
321
+ * The zip release ships with [sabre/vobject 3.3.4][vobj],
322
+ [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
323
+
324
+
325
+ 2.1.0 (2014-11-19)
326
+ ------------------
327
+
328
+ * #541: CalDAV PDO backend didn't respect overridden PDO table names.
329
+ * #550: Scheduling invites are no longer delivered into shared calendars.
330
+ * #554: `calendar-multiget` `REPORT` did not work on inbox items.
331
+ * #555: The `calendar-timezone` property is now respected for floating times
332
+ and all-day events in the `calendar-query`, `calendar-multiget` and
333
+ `free-busy-query` REPORTs.
334
+ * #555: The `calendar-timezone` property is also respected for scheduling
335
+ free-busy requests.
336
+ * #547: CalDAV system too aggressively 'corrects' incoming iCalendar data, and
337
+ as a result doesn't return an etag for common cases.
338
+ * The zip release ships with [sabre/vobject 3.3.4][vobj],
339
+ [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
340
+
341
+
342
+ 2.1.0-alpha2 (2014-10-23)
343
+ -------------------------
344
+
345
+ * Added: calendar-user-address-set to default principal search properties
346
+ list. This should fix iOS attendee autocomplete support.
347
+ * Changed: Moved all 'notifications' functionality from `Sabre\CalDAV\Plugin`
348
+ to a new plugin: `Sabre\CalDAV\Notifications\Plugin`. If you want to use
349
+ notifications-related functionality, just add this plugin.
350
+ * Changed: Accessing the caldav inbox, outbox or notification collection no
351
+ longer triggers getCalendarsForUser() on backends.
352
+ * #533: New invites are no longer delivered to taks-only calendars.
353
+ * #538: Added `calendarObjectChange` event.
354
+ * Scheduling speedups.
355
+ * #539: added `afterResponse` event. (@joserobleda)
356
+ * Deprecated: All the "tableName" constructor arguments for all the PDO
357
+ backends are now deprecated. They still work, but will be removed in the
358
+ next major sabredav version. Every argument that is now deprecated can now
359
+ be accessed as a public property on the respective backends.
360
+ * #529: Added getCalendarObjectByUID to PDO backend, speeding up scheduling
361
+ operations on large calendars.
362
+ * The zip release ships with [sabre/vobject 3.3.3][vobj],
363
+ [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
364
+
365
+
366
+ 2.1.0-alpha1 (2014-09-23)
367
+ -------------------------
368
+
369
+ * Added: Support for [rfc6638][rfc6638], also known as CalDAV Scheduling.
370
+ * Added: Automatically converting between vCard 3, 4 and jCard using the
371
+ `Accept:` header, in CardDAV reports, and automatically converting from
372
+ jCard to vCard upon `PUT`. It's important to note that your backends _may_
373
+ now recieve both vCard 3.0 and 4.0.
374
+ * Added: #444. Collections can now opt-in to support high-speed `MOVE`.
375
+ * Changed: PropertyStorage backends now have a `move` method.
376
+ * Added: `beforeMove`, and `afterMove` events.
377
+ * Changed: A few database changes for the CalDAV PDO backend. Make sure you
378
+ run `bin/migrate21.php` to upgrade your database schema.
379
+ * Changed: CalDAV backends have a new method: `getCalendarObjectByUID`. This
380
+ method MUST be implemented by all backends, but the `AbstractBackend` has a
381
+ simple default implementation for this.
382
+ * Changed: `Sabre\CalDAV\UserCalendars` has been renamed to
383
+ `Sabre\CalDAV\CalendarHome`.
384
+ * Changed: `Sabre\CalDAV\CalendarRootNode` has been renamed to
385
+ `Sabre\CalDAV\CalendarRoot`.
386
+ * Changed: The IMipHandler has been completely removed. With CalDAV scheduling
387
+ support, it is no longer needed. It's functionality has been replaced by
388
+ `Sabre\CalDAV\Schedule\IMipPlugin`, which can now send emails for clients
389
+ other than iCal.
390
+ * Removed: `Sabre\DAV\ObjectTree` and `Sabre\DAV\Tree\FileSystem`. All this
391
+ functionality has been merged into `Sabre\DAV\Tree`.
392
+ * Changed: PrincipalBackend now has a findByUri method.
393
+ * Changed: `PrincipalBackend::searchPrincipals` has a new optional `test`
394
+ argument.
395
+ * Added: Support for the `{http://calendarserver.org/ns/}email-address-set`
396
+ property.
397
+ * #460: PropertyStorage must move properties during `MOVE` requests.
398
+ * Changed: Restructured the zip distribution to be a little bit more lean
399
+ and consistent.
400
+ * #524: Full support for the `test="anyof"` attribute in principal-search
401
+ `REPORT`.
402
+ * #472: Always returning lock tokens in the lockdiscovery property.
403
+ * Directory entries in the Browser plugin are sorted by type and name.
404
+ (@aklomp)
405
+ * #486: It's now possible to return additional properties when an 'allprop'
406
+ PROPFIND request is being done. (@aklomp)
407
+ * Changed: Now return HTTP errors when an addressbook-query REPORT is done
408
+ on a uri that's not a vcard. This should help with debugging this common
409
+ mistake.
410
+ * Changed: `PUT` requests with a `Content-Range` header now emit a 400 status
411
+ instead of 501, as per RFC7231.
412
+ * Added: Browser plugin can now display the contents of the
413
+ `{DAV:}supported-privilege-set` property.
414
+ * Added: Now reporting `CALDAV:max-resource-size`, but we're not actively
415
+ restricting it yet.
416
+ * Changed: CalDAV plugin is now responsible for reporting
417
+ `CALDAV:supported-collation-set` and `CALDAV:supported-calendar-data`
418
+ properties.
419
+ * Added: Now reporting `CARDDAV:max-resource-size`, but we're not actively
420
+ restricting it yet.
421
+ * Added: Support for `CARDDAV:supported-collation-set`.
422
+ * Changed: CardDAV plugin is now responsible for reporting
423
+ `CARDDAV:supported-address-data`. This functionality has been removed from
424
+ the CardDAV PDO backend.
425
+ * When a REPORT is not supported, we now emit HTTP error 415, instead of 403.
426
+ * #348: `HEAD` requests now work wherever `GET` also works.
427
+ * Changed: Lower priority for the iMip plugins `schedule` event listener.
428
+ * Added: #523 Custom CalDAV backends can now mark any calendar as read-only.
429
+ * The zip release ships with [sabre/vobject 3.3.3][vobj],
430
+ [sabre/http 3.0.0][http], and [sabre/event 2.0.0][evnt].
431
+
432
+
433
+ 2.0.9 (2015-09-04)
434
+ ------------------
435
+
436
+ * #705: A `MOVE` request that gets prevented from deleting the source resource
437
+ will still remove the target resource. Now all events are triggered before
438
+ any destructive operations.
439
+ * The zip release ships with [sabre/vobject 3.4.6][vobj],
440
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
441
+
442
+
443
+
444
+ 2.0.8 (2015-07-11)
445
+ ------------------
446
+
447
+ * #677: Resources with the name '0' would not get retrieved when using
448
+ `Depth: infinity` in a `PROPFIND` request.
449
+ * The zip release ships with [sabre/vobject 3.3.5][vobj],
450
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
451
+
452
+
453
+ 2.0.7 (2015-05-25)
454
+ ------------------
455
+
456
+ * #650: Correctly cleaning up change info after deleting calendars (@ErrOrnAmE).
457
+ * The zip release ships with [sabre/vobject 3.3.4][vobj],
458
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
459
+
460
+
461
+ 2.0.6 (2014-12-10)
462
+ ------------------
463
+
464
+ * Added `Sabre\CalDAV\CalendarRoot` as an alias for
465
+ `Sabre\CalDAV\CalendarRootNode`. The latter is going to be deprecated in 2.1,
466
+ so this makes it slightly easier to write code that works in both branches.
467
+ * #497: Making sure we're initializing the sync-token field with a value after
468
+ migration.
469
+ * The zip release ships with [sabre/vobject 3.3.4][vobj],
470
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
471
+
472
+
473
+ 2.0.5 (2014-10-14)
474
+ ------------------
475
+
476
+ * #514: CalDAV PDO backend didn't work when overriding the 'calendar changes'
477
+ database table name.
478
+ * #515: 304 status code was not being sent when checking preconditions.
479
+ * The zip release ships with [sabre/vobject 3.3.3][vobj],
480
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
481
+
482
+
483
+ 2.0.4 (2014-08-27)
484
+ ------------------
485
+
486
+ * #483: typo in calendars creation for PostgreSQL.
487
+ * #487: Locks are now automatically removed after a node has been deleted.
488
+ * #496: Improve CalDAV and CardDAV sync when there is no webdav-sync support.
489
+ * Added: Automatically mapping internal sync-tokens to getctag.
490
+ * The zip release ships with [sabre/vobject 3.3.1][vobj],
491
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
492
+
493
+
494
+ 2.0.3 (2014-07-14)
495
+ ------------------
496
+
497
+ * #474: Fixed PropertyStorage `pathFilter()`.
498
+ * #476: CSP policy incorrect, causing stylesheets to not load in the browser
499
+ plugin.
500
+ * #475: Href properties in the browser plugin sometimes included a backslash.
501
+ * #478: `TooMuchMatches` exception never worked. This was fixed, and we also
502
+ took this opportunity to rename it to `TooManyMatches`.
503
+ * The zip release ships with [sabre/vobject 3.2.4][vobj],
504
+ [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
505
+
506
+
507
+ 2.0.2 (2014-06-12)
508
+ ------------------
509
+
510
+ * #470: Fixed compatibility with PHP < 5.4.14.
511
+ * #467: Fixed a problem in `examples/calendarserver.php`.
512
+ * #466: All the postgresql sample files have been updated.
513
+ * Fixed: An error would be thrown if a client did a propfind on a node the
514
+ user didn't have access to.
515
+ * Removed: Old and broken example code from the `examples/` directory.
516
+ * The zip release ships with [sabre/vobject 3.2.3][vobj],
517
+ [sabre/http 2.0.3][http], and [sabre/event 1.0.1][evnt].
518
+
519
+
520
+ 2.0.1 (2014-05-28)
521
+ ------------------
522
+
523
+ * #459: PROPFIND requests on Files with no Depth header would return a fatal
524
+ error.
525
+ * #464: A PROPFIND allprops request should not return properties with status
526
+ 404.
527
+ * The zip release ships with [sabre/vobject 3.2.2][vobj],
528
+ [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
529
+
530
+
531
+ 2.0.0 (2014-05-22)
532
+ ------------------
533
+
534
+ * The zip release ships with [sabre/vobject 3.2.2][vobj],
535
+ [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
536
+ * Fixed: #456: Issue in sqlite migration script.
537
+ * Updated: MySQL database schema optimized by using more efficient column types.
538
+ * Cleaned up browser design.
539
+
540
+
541
+ 2.0.0-beta1 (2014-05-15)
542
+ -------------------------
543
+
544
+ * The zip release ships with [sabre/vobject 3.2.2][vobj],
545
+ [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
546
+ * BC Break: Property updating and fetching got refactored. Read the [migration
547
+ document][mi20] for more information. This allows for creation of a generic
548
+ property storage, and other property-related functionality that was not
549
+ possible before.
550
+ * BC Break: Removed `propertyUpdate`, `beforeGetProperties` and
551
+ `afterGetProperties` events.
552
+ * Fixed: #413: Memory optimizations for the CardDAV PDO backend.
553
+ * Updated: Brand new browser plugin with more debugging features and a design
554
+ that is slightly less painful.
555
+ * Added: Support for the `{DAV:}supported-method-set` property server-wide.
556
+ * Making it easier for implementors to override how the CardDAV addressbook
557
+ home is located.
558
+ * Fixed: Issue #422 Preconditions were not being set on PUT on non-existant
559
+ files. Not really a chance for data-loss, but incorrect nevertheless.
560
+ * Fixed: Issue #428: Etag check with `If:` fails if the target is a collection.
561
+ * Fixed: Issues #430, #431, #433: Locks plugin didn't not properly release
562
+ filesystem based locks.
563
+ * Fixed: #443. Support for creating new calendar subscriptions for OS X 10.9.2
564
+ and up.
565
+ * Removed: `Sabre\DAV\Server::NODE_*` constants.
566
+ * Moved all precondition checking into a central place, instead of having to
567
+ think about it on a per-method basis.
568
+ * jCal transformation for calendar-query REPORT now works again.
569
+ * Switched to PSR-4
570
+ * Fixed: #175. Returning ETag header upon a failed `If-Match` or
571
+ `If-None-Match` check.
572
+ * Removed: `lib/Sabre/autoload.php`. Use `vendor/autoload.php` instead.
573
+ * Removed: all the rfc documentation from the sabre/dav source. This made the
574
+ package needlessly larger.
575
+ * Updated: Issue #439. Lots of updates in PATCH support. The
576
+ Sabre_DAV_PartialUpdate_IFile interface is now deprecated and will be
577
+ removed in a future version.
578
+ * Added: `Sabre\DAV\Exception\LengthRequired`.
579
+
580
+ 1.9.0-alpha2 (2014-01-14)
581
+ -------------------------
582
+
583
+ * The zip release ships with sabre/vobject 3.1.3, sabre/http 2.0.1, and
584
+ sabre/event 1.0.0.
585
+ * Added: Browser can now inspect any node, if ?sabreaction=browser is appended.
586
+ * Fixed: Issue #178. Support for multiple items in the Timeout header.
587
+ * Fixed: Issue #382. Stricter checking if calendar-query is allowed to run.
588
+ * Added: Depth: Infinity support for PROPFIND request. Thanks Thomas Müller and
589
+ Markus Goetz.
590
+
591
+
592
+ 1.9.0-alpha1 (2013-11-07)
593
+ -------------------------
594
+
595
+ * The zip release ships with sabre/vobject 3.1.3, sabre/http 2.0.0alpha5, and
596
+ sabre/event 1.0.0.
597
+ * BC Break: The CardDAV and CalDAV BackendInterface each have a new method:
598
+ getMultipleCards and getMultipleCalendarObjects. The Abstract and PDO backends
599
+ have default implementations, but if you implement that interface directly,
600
+ this method is now required.
601
+ * BC Break: XML property classes now receive an extra argument in their
602
+ unserialize method ($propertyMap). This allows for recursively parsing
603
+ properties, if needed.
604
+ * BC Break: Now using sabre/event for event emitting/subscription. For plugin
605
+ authors this means Server::subscribeEvent is now Server::on, and
606
+ Server::broadcastEvent is now Server::emit.
607
+ * BC Break: Almost all core functionality moved into a CorePlugin.
608
+ * BC Break: Most events triggered by the server got an overhaul.
609
+ * Changed: Sabre\HTTP now moved into a dedicated sabre/http package.
610
+ * Added: Support for WebDAV-sync (rfc6578).
611
+ * Added: Support for caldav-subscriptions, which is an easy way for caldav
612
+ clients to manage a list of subscriptions on the server.
613
+ * Added: Support for emitting and receiving jCal instead of iCalendar for
614
+ CalDAV.
615
+ * Added: BasicCallback authenticaton backend, for creating simple authentication
616
+ systems without having to define any classes.
617
+ * Added: A $transactionType property on the server class. This can be used for
618
+ logging and performance measuring purposes.
619
+ * Fixed: If event handlers modify the request body from a PUT request, an ETag
620
+ is no longer sent back.
621
+ * Added: Sabre\DAV\IMultiGet to optimize requests that retrieve information
622
+ about lists of resources.
623
+ * Added: MultiGet support to default CalDAV and CardDAV backends, speeding up
624
+ the multiget and sync reports quite a bit!
625
+ * Added: ICSExportPlugin can now generate jCal, filter on time-ranges and expand
626
+ recurrences.
627
+ * Fixed: Read-only access to calendars still allows the sharee to modify basic
628
+ calendar properties, such as the displayname and color.
629
+ * Changed: The default supportedPrivilegeSet has changed. Most privileges are no
630
+ longer marked as abstract.
631
+ * Changed: More elegant ACL management for CalendarObject and Card nodes.
632
+ * Added: Browser plugin now marks a carddav directory as type Directory, and a
633
+ shared calendar as 'Shared'.
634
+ * Added: When debugExceptions is turned on, all previous exceptions are also
635
+ traversed.
636
+ * Removed: Got rid of the Version classes for CalDAV, CardDAV, HTTP, and DAVACL.
637
+ Now that there's no separate packages anymore, this makes a bit more sense.
638
+ * Added: Generalized the multistatus response parser a bit more, for better
639
+ re-use.
640
+ * Added: Sabre\DAV\Client now has support for complex properties for PROPPATCH.
641
+ (Issue #299).
642
+ * Added: Sabre\DAV\Client has support for gzip and deflate encoding.
643
+ * Added: Sabre\DAV\Client now has support for sending objects as streams.
644
+ * Added: Deserializer for {DAV:}current-user-privilege-set.
645
+ * Added: Addressbooks or backends can now specify custom acl rules when creating
646
+ cards.
647
+ * Added: The ability for plugins to validate custom tokens in If: headers.
648
+ * Changed: Completely refactored the Lock plugin to deal with the new If: header
649
+ system.
650
+ * Added: Checking preconditions for MOVE, COPY, DELETE and PROPPATCH methods.
651
+ * Added: has() method on DAV\Property\SupportedReportSet.
652
+ * Added: If header now gets checked (with ETag) all the time. Before the dealing
653
+ with the If-header was a responsibility of the Locking plugin.
654
+ * Fixed: Outbox access for delegates.
655
+ * Added: Issue 333: It's now possible to override the calendar-home in the
656
+ CalDAV plugin.
657
+ * Added: A negotiateContentType to HTTP\Request. A convenience method.
658
+ * Fixed: Issue 349: Denying copying or moving a resource into it's own subtree.
659
+ * Fixed: SabreDAV catches every exception again.
660
+ * Added: Issue #358, adding a component=vevent parameter to the content-types
661
+ for calendar objects, if the caldav backend provides this info.
662
+
663
+
664
+ 1.8.12-stable (2015-01-21)
665
+ --------------------------
666
+
667
+ * The zip release ships with sabre/vobject 2.1.7.
668
+ * #568: Support empty usernames and passwords in basic auth.
669
+
670
+
671
+ 1.8.11 (2014-12-10)
672
+ -------------------
673
+
674
+ * The zip release ships with sabre/vobject 2.1.6.
675
+ * Updated: MySQL database schema optimized by using more efficient column types.
676
+ * #516: The DAV client will now only redirect to HTTP and HTTPS urls.
677
+
678
+
679
+ 1.8.10 (2014-05-15)
680
+ -------------------
681
+
682
+ * The zip release ships with sabre/vobject 2.1.4.
683
+ * includes changes from version 1.7.12.
684
+
685
+
686
+ 1.8.9 (2014-02-26)
687
+ ------------------
688
+
689
+ * The zip release ships with sabre/vobject 2.1.3.
690
+ * includes changes from version 1.7.11.
691
+
692
+
693
+ 1.8.8 (2014-02-09)
694
+ ------------------
695
+
696
+ * includes changes from version 1.7.10.
697
+ * The zip release ships with sabre/vobject 2.1.3.
698
+
699
+ 1.8.7 (2013-10-02)
700
+ ------------------
701
+
702
+ * the zip release ships with sabre/vobject 2.1.3.
703
+ * includes changes from version 1.7.9.
704
+
705
+
706
+ 1.8.6 (2013-06-18)
707
+ ------------------
708
+
709
+ * The zip release ships with sabre/vobject 2.1.0.
710
+ * Includes changes from version 1.7.8.
711
+
712
+
713
+ 1.8.5 (2013-04-11)
714
+ ------------------
715
+
716
+ * The zip release ships with sabre/vobject 2.0.7.
717
+ * Includes changes from version 1.7.7.
718
+
719
+
720
+ 1.8.4 (2013-04-08)
721
+ ------------------
722
+
723
+ * The zip release ships with sabre/vobject 2.0.7.
724
+ * Includes changes from version 1.7.6.
725
+
726
+
727
+ 1.8.3 (2013-03-01)
728
+ ------------------
729
+
730
+ * The zip release ships with sabre/vobject 2.0.6.
731
+ * Includes changes from version 1.7.5.
732
+ * Fixed: organizer email-address for shared calendars is now prefixed with
733
+ mailto:, as it should.
734
+
735
+
736
+ 1.8.2 (2013-01-19)
737
+ ------------------
738
+
739
+ * The zip release ships with sabre/vobject 2.0.5.
740
+ * Includes changes from version 1.7.4.
741
+
742
+
743
+ 1.8.1 (2012-12-01)
744
+ ------------------
745
+
746
+ * The zip release ships with sabre/vobject 2.0.5.
747
+ * Includes changes from version 1.7.3.
748
+ * Fixed: Typo in 1.7 migration script caused it to fail.
749
+
750
+
751
+ 1.8.0 (2012-11-08)
752
+ ------------------
753
+
754
+ * The zip release ships with sabre/vobject 2.0.5.
755
+ * BC Break: Moved the entire codebase to PHP namespaces.
756
+ * BC Break: Every backend package (CalDAV, CardDAV, Auth, Locks, Principals) now
757
+ has consistent naming conventions. There's a BackendInterface, and an
758
+ AbstractBackend class.
759
+ * BC Break: Changed a bunch of constructor signatures in the CalDAV package, to
760
+ reduce dependencies on the ACL package.
761
+ * BC Break: Sabre_CalDAV_ISharedCalendar now also has a getShares method, so
762
+ sharees can figure out who is also on a shared calendar.
763
+ * Added: Sabre_DAVACL_IPrincipalCollection interface, to advertise support for
764
+ principal-property-search on any node.
765
+ * Added: Simple console script to fire up a fileserver in the current directory
766
+ using PHP 5.4's built-in webserver.
767
+ * Added: Sharee's can now also read out the list of invites for a shared
768
+ calendar.
769
+ * Added: The Proxy principal classes now both implement an interface, for
770
+ greater flexiblity.
771
+
772
+
773
+ 1.7.13 (2014-07-28)
774
+ -------------------
775
+
776
+ * The zip release ships with sabre/vobject 2.1.4.
777
+ * Changed: Removed phing and went with a custom build script for now.
778
+
779
+
780
+ 1.7.12 (2014-05-15)
781
+ -------------------
782
+
783
+ * The zip release ships with sabre/vobject 2.1.4.
784
+ * Updated: Issue #439. Lots of updates in PATCH support. The
785
+ Sabre_DAV_PartialUpdate_IFile interface is now deprecated and will be removed
786
+ in a future version.
787
+ * Fixed: Restoring old setting after changing libxml_disable_entity_loader.
788
+ * Fixed: Issue #422: Preconditions were not being set on PUT on non-existant
789
+ files. Not really a chance for data-loss, but incorrect nevertheless.
790
+ * Fixed: Issue #427: Now checking preconditions on DELETE requests.
791
+ * Fixed: Issue #428: Etag check with If: fails if the target is a collection.
792
+ * Fixed: Issue #393: PATCH request with missing end-range was handled
793
+ incorrectly.
794
+ * Added: Sabre_DAV_Exception_LengthRequired to omit 411 errors.
795
+
796
+
797
+ 1.7.11 (2014-02-26)
798
+ -------------------
799
+
800
+ * The zip release ships with sabre/vobject 2.1.3.
801
+ * Fixed: Issue #407: large downloads failed.
802
+ * Fixed: Issue #414: XXE security problem on older PHP versions.
803
+
804
+
805
+ 1.7.10 (2014-02-09)
806
+ -------------------
807
+
808
+ * Fixed: Issue #374: Don't urlescape colon (:) when it's not required.
809
+ * Fixed: Potential security vulnerability in the http client.
810
+
811
+
812
+ 1.7.9 (2013-10-02)
813
+ ------------------
814
+
815
+ * The zip release ships with sabre/vobject 2.1.3.
816
+ * Fixed: Issue #365. Incorrect output when principal urls have spaces in them.
817
+ * Added: Issue #367: Automatically adding a UID to vcards that don't have them.
818
+
819
+
820
+ 1.7.8 (2013-06-17)
821
+ ------------------
822
+
823
+ * The zip release ships with sabre/vobject 2.1.0.
824
+ * Changed: Sabre\DAV\Client::verifyPeer is now a protected property (instead of
825
+ private).
826
+ * Fixed: Text was incorrectly escaped in the Href and HrefList properties,
827
+ disallowing urls with ampersands (&) in them.
828
+ * Added: deserializer for Sabre\DAVACL\Property\CurrentUserPrivilegeSet.
829
+ * Fixed: Issue 335: Client only deserializes properties with status 200.
830
+ * Fixed: Issue 341: Escaping xml in 423 Locked error responses.
831
+ * Added: Issue 339: beforeGetPropertiesForPath event.
832
+
833
+
834
+ 1.7.7 (2013-04-11)
835
+ ------------------
836
+
837
+ * The zip release ships with sabre/vobject 2.0.7.
838
+ * Fixed: Assets in the browser plugins were not being served on windows
839
+ machines.
840
+
841
+
842
+ 1.7.6 (2013-04-08)
843
+ ------------------
844
+
845
+ * The zip release ships with sabre/vobject 2.0.7.
846
+ * Fixed: vcardurl in database schema can now hold 255 characters instead of 80
847
+ (which is often way to small).
848
+ * Fixed: The browser plugin potentially allowed people to open any arbitrary
849
+ file on windows servers (CVE-2013-1939).
850
+
851
+
852
+ 1.7.5 (2013-03-01)
853
+ ------------------
854
+
855
+ * The zip release ships with sabre/vobject 2.0.6.
856
+ * Change: No longer advertising support for 4.0 vcards. iOS and OS X address
857
+ book don't handle this well, and just advertising 3.0 support seems like the
858
+ most logical course of action.
859
+ * Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against it,
860
+ don't use this..).
861
+
862
+
863
+ 1.7.4 (2013-01-19)
864
+ ------------------
865
+
866
+ * The zip release ships with sabre/vobject 2.0.5.
867
+ * Changed: To be compatibile with MS Office 2011 for Mac, a workaround was
868
+ removed that was added to support old versions of Windows XP (pre-SP3).
869
+ Indeed! We needed a crazy workaround to work with one MS product in the past,
870
+ and we can't keep that workaround to be compatible with another MS product.
871
+ * Fixed: expand-properties REPORT had incorrect values for the href element.
872
+ * Fixed: Range requests now work for non-seekable streams. (Thanks Alfred
873
+ Klomp).
874
+ * Fixed: Changed serialization of {DAV:}getlastmodified and {DAV:}supportedlock
875
+ to improve compatiblity with MS Office 2011 for Mac.
876
+ * Changed: reverted the automatic translation of 'DAV:' xml namespaces to
877
+ 'urn:DAV' when parsing files. Issues were reported with libxml 2.6.32, on a
878
+ relatively recent debian release, so we'll wait till 2015 to take this one out
879
+ again.
880
+ * Added: Sabre_DAV_Exception_ServiceUnavailable, for emitting 503's.
881
+
882
+
883
+ 1.7.3 (2012-12-01)
884
+ ------------------
885
+
886
+ * The zip release ships with sabre/vobject 2.0.5.
887
+ * Fixed: Removing double slashes from getPropertiesForPath.
888
+ * Change: Marked a few more properties in the CardDAV as protected, instead of
889
+ private.
890
+ * Fixed: SharingPlugin now plays nicer with other plugins with similar
891
+ functionality.
892
+ * Fixed: Issue 174. Sending back HTTP/1.0 for requests with this version.
893
+
894
+
895
+ 1.7.2 (2012-11-08)
896
+ ------------------
897
+
898
+ * The zip release ships with sabre/vobject 2.0.5.
899
+ * Added: ACL plugin advertises support for 'calendarserver-principal-
900
+ property-search'.
901
+ * Fixed: [#153] Allowing for relative http principals in iMip requests.
902
+ * Added: Support for cs:first-name and cs:last-name properties in sharing
903
+ invites.
904
+ * Fixed: Made a bunch of properties protected, where they were private before.
905
+ * Added: Some non-standard properties for sharing to improve compatibility.
906
+ * Fixed: some bugfixes in postgres sql script.
907
+ * Fixed: When requesting some properties using PROPFIND, they could show up as
908
+ both '200 Ok' and '403 Forbidden'.
909
+ * Fixed: calendar-proxy principals were not checked for deeper principal
910
+ membership than 1 level.
911
+ * Fixed: setGroupMemberSet argument now correctly receives relative principal
912
+ urls, instead of the absolute ones.
913
+ * Fixed: Server class will filter out any bonus properties if any extra were
914
+ returned. This means the implementor of the IProperty class can be a bit
915
+ lazier when implementing. Note: bug numbers after this line refer to Google
916
+ Code tickets. We're using github now.
917
+
918
+
919
+ 1.7.1 (2012-10-07)
920
+ ------------------
921
+
922
+ * Fixed: include path problem in the migration script.
923
+
924
+
925
+ 1.7.0 (2012-10-06)
926
+ ------------------
927
+
928
+ * BC Break: The calendarobjects database table has a bunch of new fields, and a
929
+ migration script is required to ensure everything will keep working. Read the
930
+ wiki for more details.
931
+ * BC Break: The ICalendar interface now has a new method: calendarQuery.
932
+ * BC Break: In this version a number of classes have been deleted, that have
933
+ been previously deprecated. Namely: - Sabre_DAV_Directory (now:
934
+ Sabre_DAV_Collection) - Sabre_DAV_SimpleDirectory (now:
935
+ Sabre_DAV_SimpleCollection)
936
+ * BC Break: Sabre_CalDAV_Schedule_IMip::sendMessage now has an extra argument.
937
+ If you extended this class, you should fix this method. It's only used for
938
+ informational purposes.
939
+ * BC Break: The DAV: namespace is no longer converted to urn:DAV. This was a
940
+ workaround for a bug in older PHP versions (pre-5.3).
941
+ * Removed: Sabre.includes.php was deprecated, and is now removed.
942
+ * Removed: Sabre_CalDAV_Server was deprecated, and is now removed. Please use
943
+ Sabre_DAV_Server and check the examples in the examples/ directory.
944
+ * Changed: The Sabre_VObject library now spawned into it's own project! The
945
+ VObject library is still included in the SabreDAV zip package.
946
+ * Added: Experimental interfaces to allow implementation of caldav-sharing. Note
947
+ that no implementation is provided yet, just the api hooks.
948
+ * Added: Free-busy reporting compliant with the caldav-scheduling standard. This
949
+ allows iCal and other clients to fetch other users' free-busy data.
950
+ * Added: Experimental NotificationSupport interface to add caldav notifications.
951
+ * Added: VCF Export plugin. If enabled, it can generate an export of an entire
952
+ addressbook.
953
+ * Added: Support for PATCH using a SabreDAV format, to live-patch files.
954
+ * Added: Support for Prefer: return-minimal and Brief: t headers for PROPFIND
955
+ and PROPPATCH requests.
956
+ * Changed: Responsibility for dealing with the calendar-query is now moved from
957
+ the CalDAV plugin to the CalDAV backends. This allows for heavy optimizations.
958
+ * Changed: The CalDAV PDO backend is now a lot faster for common calendar
959
+ queries.
960
+ * Changed: We are now using the composer autoloader.
961
+ * Changed: The CalDAV backend now all implement an interface.
962
+ * Changed: Instead of Sabre_DAV_Property, Sabre_DAV_PropertyInterface is now the
963
+ basis of every property class.
964
+ * Update: Caching results for principal lookups. This should cut down queries
965
+ and performance for a number of heavy requests.
966
+ * Update: ObjectTree caches lookups much more aggresively, which will help
967
+ especially speeding up a bunch of REPORT queries.
968
+ * Added: Support for the schedule-calendar-transp property.
969
+ * Fixed: Marking both the text/calendar and text/x-vcard as UTF-8 encoded.
970
+ * Fixed: Workaround for the SOGO connector, as it doesn't understand receiving
971
+ "text/x-vcard; charset=utf-8" for a contenttype.
972
+ * Added: Sabre_DAV_Client now throws more specific exceptions in cases where we
973
+ already has an exception class.
974
+ * Added: Sabre_DAV_PartialUpdate. This plugin allows you to use the PATCH method
975
+ to update parts of a file.
976
+ * Added: Tons of timezone name mappings for Microsoft Exchange.
977
+ * Added: Support for an 'exception' event in the server class.
978
+ * Fixed: Uploaded VCards without a UID are now rejected. (thanks Dominik!)
979
+ * Fixed: Rejecting calendar objects if they are not in the
980
+ supported-calendar-component list. (thanks Armin!)
981
+ * Fixed: Issue 219: serialize() now reorders correctly.
982
+ * Fixed: Sabre_DAV_XMLUtil no longer returns empty $dom->childNodes if there is
983
+ whitespace in $dom.
984
+ * Fixed: Returning 409 Conflict instead of 500 when an attempt is made to create
985
+ a file as a child of something that's not a collection.
986
+ * Fixed: Issue 237: xml-encoding values in SabreDAV error responses.
987
+ * Fixed: Returning 403, instead of 501 when an unknown REPORT is requested.
988
+ * Fixed: Postfixing slash on {DAV:}owner properties.
989
+ * Fixed: Several embarrassing spelling mistakes in docblocks.
990
+
991
+
992
+ 1.6.10 (2013-06-17)
993
+ -------------------
994
+
995
+ * Fixed: Text was incorrectly escaped in the Href and HrefList properties,
996
+ disallowing urls with ampersands (&) in them.
997
+ * Fixed: Issue 341: Escaping xml in 423 Locked error responses.
998
+
999
+
1000
+ 1.6.9 (2013-04-11)
1001
+ ------------------
1002
+
1003
+ * Fixed: Assets in the browser plugins were not being served on windows
1004
+ machines.
1005
+
1006
+
1007
+ 1.6.8 (2013-04-08)
1008
+ ------------------
1009
+
1010
+ * Fixed: vcardurl in database schema can now hold 255 characters instead of 80
1011
+ (which is often way to small).
1012
+ * Fixed: The browser plugin potentially allowed people to open any arbitrary
1013
+ file on windows servers. (CVE-2013-1939).
1014
+
1015
+
1016
+ 1.6.7 (2013-03-01)
1017
+ ------------------
1018
+
1019
+ * Change: No longer advertising support for 4.0 vcards. iOS and OS X address
1020
+ book don't handle this well, and just advertising 3.0 support seems like the
1021
+ most logical course of action.
1022
+ * Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against it,
1023
+ don't use this..).
1024
+
1025
+
1026
+ 1.6.6 (2013-01-19)
1027
+ ------------------
1028
+
1029
+ * Fixed: Backported a fix for broken XML serialization in error responses.
1030
+ (Thanks @DeepDiver1975!)
1031
+
1032
+
1033
+ 1.6.5 (2012-10-04)
1034
+ ------------------
1035
+
1036
+ * Fixed: Workaround for line-ending bug OS X 10.8 addressbook has.
1037
+ * Added: Ability to allow users to set SSL certificates for the Client class.
1038
+ (Thanks schiesbn!).
1039
+ * Fixed: Directory indexes with lots of nodes should be a lot faster.
1040
+ * Fixed: Issue 235: E_NOTICE thrown when doing a propfind request with
1041
+ Sabre_DAV_Client, and no valid properties are returned.
1042
+ * Fixed: Issue with filtering on alarms in tasks.
1043
+
1044
+
1045
+ 1.6.4 (2012-08-02)
1046
+ ------------------
1047
+
1048
+ * Fixed: Issue 220: Calendar-query filters may fail when filtering on alarms, if
1049
+ an overridden event has it's alarm removed.
1050
+ * Fixed: Compatibility for OS/X 10.8 iCal in the IMipHandler.
1051
+ * Fixed: Issue 222: beforeWriteContent shouldn't be called for lock requests.
1052
+ * Fixed: Problem with POST requests to the outbox if mailto: was not lower
1053
+ cased.
1054
+ * Fixed: Yearly recurrence rule expansion on leap-days no behaves correctly.
1055
+ * Fixed: Correctly checking if recurring, all-day events with no dtstart fall in
1056
+ a timerange if the start of the time-range exceeds the start of the instance
1057
+ of an event, but not the end.
1058
+ * Fixed: All-day recurring events wouldn't match if an occurence ended exactly
1059
+ on the start of a time-range.
1060
+ * Fixed: HTTP basic auth did not correctly deal with passwords containing colons
1061
+ on some servers.
1062
+ * Fixed: Issue 228: DTEND is now non-inclusive for all-day events in the
1063
+ calendar-query REPORT and free-busy calculations.
1064
+
1065
+
1066
+ 1.6.3 (2012-06-12)
1067
+ ------------------
1068
+
1069
+ * Added: It's now possible to specify in Sabre_DAV_Client which type of
1070
+ authentication is to be used.
1071
+ * Fixed: Issue 206: Sabre_DAV_Client PUT requests are fixed.
1072
+ * Fixed: Issue 205: Parsing an iCalendar 0-second date interval.
1073
+ * Fixed: Issue 112: Stronger validation of iCalendar objects. Now making sure
1074
+ every iCalendar object only contains 1 component, and disallowing vcards,
1075
+ forcing every component to have a UID.
1076
+ * Fixed: Basic validation for vcards in the CardDAV plugin.
1077
+ * Fixed: Issue 213: Workaround for an Evolution bug, that prevented it from
1078
+ updating events.
1079
+ * Fixed: Issue 211: A time-limit query on a non-relative alarm trigger in a
1080
+ recurring event could result in an endless loop.
1081
+ * Fixed: All uri fields are now a maximum of 200 characters. The Bynari outlook
1082
+ plugin used much longer strings so this should improve compatibility.
1083
+ * Fixed: Added a workaround for a bug in KDE 4.8.2 contact syncing. See
1084
+ https://bugs.kde.org/show_bug.cgi?id=300047
1085
+ * Fixed: Issue 217: Sabre_DAV_Tree_FileSystem was pretty broken.
1086
+
1087
+
1088
+ 1.6.2 (2012-04-16)
1089
+ ------------------
1090
+
1091
+ * Fixed: Sabre_VObject_Node::$parent should have been public.
1092
+ * Fixed: Recurrence rules of events are now taken into consideration when doing
1093
+ time-range queries on alarms.
1094
+ * Fixed: Added a workaround for the fact that php's DateInterval cannot parse
1095
+ weeks and days at the same time.
1096
+ * Added: Sabre_DAV_Server::$exposeVersion, allowing you to hide SabreDAV's
1097
+ version number from various outputs.
1098
+ * Fixed: DTSTART values would be incorrect when expanding events.
1099
+ * Fixed: DTSTART and DTEND would be incorrect for expansion of WEEKLY BYDAY
1100
+ recurrences.
1101
+ * Fixed: Issue 203: A problem with overridden events hitting the exact date and
1102
+ time of a subsequent event in the recurrence set.
1103
+ * Fixed: There was a problem with recurrence rules, for example the 5th tuesday
1104
+ of the month, if this day did not exist.
1105
+ * Added: New HTTP status codes from draft-nottingham-http-new-status-04.
1106
+
1107
+
1108
+ 1.6.1 (2012-03-05)
1109
+ ------------------
1110
+
1111
+ * Added: createFile and put() can now return an ETag.
1112
+ * Added: Sending back an ETag on for operations on CardDAV backends. This should
1113
+ help with OS X 10.6 Addressbook compatibility.
1114
+ * Fixed: Fixed a bug where an infinite loop could occur in the recurrence
1115
+ iterator if the recurrence was YEARLY, with a BYMONTH rule, and either BYDAY
1116
+ or BYMONTHDAY match the first day of the month.
1117
+ * Fixed: Events that are excluded using EXDATE are still counted in the COUNT=
1118
+ parameter in the RRULE property.
1119
+ * Added: Support for time-range filters on VALARM components.
1120
+ * Fixed: Correctly filtering all-day events.
1121
+ * Fixed: Sending back correct mimetypes from the browser plugin (thanks
1122
+ Jürgen).
1123
+ * Fixed: Issue 195: Sabre_CardDAV pear package had an incorrect dependency.
1124
+ * Fixed: Calendardata would be destroyed when performing a MOVE request.
1125
+
1126
+
1127
+ 1.6.0 (2012-02-22)
1128
+ ------------------
1129
+
1130
+ * BC Break: Now requires PHP 5.3
1131
+ * BC Break: Any node that implemented Sabre_DAVACL_IACL must now also implement
1132
+ the getSupportedPrivilegeSet method. See website for details.
1133
+ * BC Break: Moved functions from Sabre_CalDAV_XMLUtil to
1134
+ Sabre_VObject_DateTimeParser.
1135
+ * BC Break: The Sabre_DAVACL_IPrincipalCollection now has two new methods:
1136
+ 'searchPrincipals' and 'updatePrincipal'.
1137
+ * BC Break: Sabre_DAV_ILockable is removed and all related per-node locking
1138
+ functionality.
1139
+ * BC Break: Sabre_DAV_Exception_FileNotFound is now deprecated in favor of
1140
+ Sabre_DAV_Exception_NotFound. The former will be removed in a later version.
1141
+ * BC Break: Removed Sabre_CalDAV_ICalendarUtil, use Sabre_VObject instead.
1142
+ * BC Break: Sabre_CalDAV_Server is now deprecated, check out the documentation
1143
+ on how to setup a caldav server with just Sabre_DAV_Server.
1144
+ * BC Break: Default Principals PDO backend now needs a new field in the
1145
+ 'principals' table. See the website for details.
1146
+ * Added: Ability to create new calendars and addressbooks from within the
1147
+ browser plugin.
1148
+ * Added: Browser plugin: icons for various nodes.
1149
+ * Added: Support for FREEBUSY reports!
1150
+ * Added: Support for creating principals with admin-level privileges.
1151
+ * Added: Possibility to let server send out invitation emails on behalf of
1152
+ CalDAV client, using Sabre_CalDAV_Schedule_IMip.
1153
+ * Changed: beforeCreateFile event now passes data argument by reference.
1154
+ * Changed: The 'propertyMap' property from Sabre_VObject_Reader, must now be
1155
+ specified in Sabre_VObject_Property::$classMap.
1156
+ * Added: Ability for plugins to tell the ACL plugin which principal plugins are
1157
+ searchable.
1158
+ * Added: [DAVACL] Per-node overriding of supported privileges. This allows for
1159
+ custom privileges where needed.
1160
+ * Added: [DAVACL] Public 'principalSearch' method on the DAVACL plugin, which
1161
+ allows for easy searching for principals, based on their properties.
1162
+ * Added: Sabre_VObject_Component::getComponents() to return a list of only
1163
+ components and not properties.
1164
+ * Added: An includes.php file in every sub-package (CalDAV, CardDAV, DAV,
1165
+ DAVACL, HTTP, VObject) as an alternative to the autoloader. This often works
1166
+ much faster.
1167
+ * Added: Support for the 'Me card', which allows Addressbook.app users specify
1168
+ which vcard is their own.
1169
+ * Added: Support for updating principal properties in the DAVACL principal
1170
+ backends.
1171
+ * Changed: Major refactoring in the calendar-query REPORT code. Should make
1172
+ things more flexible and correct.
1173
+ * Changed: The calendar-proxy-[read|write] principals will now only appear in
1174
+ the tree, if they actually exist in the Principal backend. This should reduce
1175
+ some problems people have been having with this.
1176
+ * Changed: Sabre_VObject_Element_* classes are now renamed to
1177
+ Sabre_VObject_Property. Old classes are retained for backwards compatibility,
1178
+ but this will be removed in the future.
1179
+ * Added: Sabre_VObject_FreeBusyGenerator to generate free-busy reports based on
1180
+ lists of events.
1181
+ * Added: Sabre_VObject_RecurrenceIterator to find all the dates and times for
1182
+ recurring events.
1183
+ * Fixed: Issue 97: Correctly handling RRULE for the calendar-query REPORT.
1184
+ * Fixed: Issue 154: Encoding of VObject parameters with no value was incorrect.
1185
+ * Added: Support for {DAV:}acl-restrictions property from RFC3744.
1186
+ * Added: The contentlength for calendar objects can now be supplied by a CalDAV
1187
+ backend, allowing for more optimizations.
1188
+ * Fixed: Much faster implementation of Sabre_DAV_URLUtil::encodePath.
1189
+ * Fixed: {DAV:}getcontentlength may now be not specified.
1190
+ * Fixed: Issue 66: Using rawurldecode instead of urldecode to decode paths from
1191
+ clients. This means that + will now be treated as a literal rather than a
1192
+ space, and this should improve compatibility with the Windows built-in client.
1193
+ * Added: Sabre_DAV_Exception_PaymentRequired exception, to emit HTTP 402 status
1194
+ codes.
1195
+ * Added: Some mysql unique constraints to example files.
1196
+ * Fixed: Correctly formatting HTTP dates.
1197
+ * Fixed: Issue 94: Sending back Last-Modified header for 304 responses.
1198
+ * Added: Sabre_VObject_Component_VEvent, Sabre_VObject_Component_VJournal,
1199
+ Sabre_VObject_Component_VTodo and Sabre_VObject_Component_VCalendar.
1200
+ * Changed: Properties are now also automatically mapped to their appropriate
1201
+ classes, if they are created using the add() or __set() methods.
1202
+ * Changed: Cloning VObject objects now clones the entire tree, rather than just
1203
+ the default shallow copy.
1204
+ * Added: Support for recurrence expansion in the CALDAV:calendar-multiget and
1205
+ CALDAV:calendar-query REPORTS.
1206
+ * Changed: CalDAV PDO backend now sorts calendars based on the internal
1207
+ 'calendarorder' field.
1208
+ * Added: Issue 181: Carddav backends may no optionally not supply the carddata
1209
+ in getCards, if etag and size are specified. This may speed up certain
1210
+ requests.
1211
+ * Added: More arguments to beforeWriteContent and beforeCreateFile (see
1212
+ WritingPlugins wiki document).
1213
+ * Added: Hook for iCalendar validation. This allows us to validate iCalendar
1214
+ objects when they're uploaded. At the moment we're just validating syntax.
1215
+ * Added: VObject now support Windows Timezone names correctly (thanks mrpace2).
1216
+ * Added: If a timezonename could not be detected, we fall back on the default
1217
+ PHP timezone.
1218
+ * Added: Now a Composer package (thanks willdurand).
1219
+ * Fixed: Support for \N as a newline character in the VObject reader.
1220
+ * Added: afterWriteContent, afterCreateFile and afterUnbind events.
1221
+ * Added: Postgresql example files. Not part of the unittests though, so use at
1222
+ your own risk.
1223
+ * Fixed: Issue 182: Removed backticks from sql queries, so it will work with
1224
+ Postgres.
1225
+
1226
+
1227
+ 1.5.9 (2012-04-16)
1228
+ ------------------
1229
+
1230
+ * Fixed: Issue with parsing timezone identifiers that were surrounded by quotes.
1231
+ (Fixes emClient compatibility).
1232
+
1233
+
1234
+ 1.5.8 (2012-02-22)
1235
+ ------------------
1236
+
1237
+ * Fixed: Issue 95: Another timezone parsing issue, this time in calendar-query.
1238
+
1239
+
1240
+ 1.5.7 (2012-02-19)
1241
+ ------------------
1242
+
1243
+ * Fixed: VObject properties are now always encoded before components.
1244
+ * Fixed: Sabre_DAVACL had issues with multiple levels of privilege aggregration.
1245
+ * Changed: Added 'GuessContentType' plugin to fileserver.php example.
1246
+ * Fixed: The Browser plugin will now trigger the correct events when creating
1247
+ files.
1248
+ * Fixed: The ICSExportPlugin now considers ACL's.
1249
+ * Added: Made it optional to supply carddata from an Addressbook backend when
1250
+ requesting getCards. This can make some operations much faster, and could
1251
+ result in much lower memory use.
1252
+ * Fixed: Issue 187: Sabre_DAV_UUIDUtil was missing from includes file.
1253
+ * Fixed: Issue 191: beforeUnlock was triggered twice.
1254
+
1255
+
1256
+ 1.5.6 (2012-01-07)
1257
+ ------------------
1258
+
1259
+ * Fixed: Issue 174: VObject could break UTF-8 characters.
1260
+ * Fixed: pear package installation issues.
1261
+
1262
+
1263
+ 1.5.5 (2011-12-16)
1264
+ ------------------
1265
+
1266
+ * Fixed: CalDAV time-range filter workaround for recurring events.
1267
+ * Fixed: Bug in Sabre_DAV_Locks_Backend_File that didn't allow multiple files to
1268
+ be locked at the same time.
1269
+
1270
+
1271
+ 1.5.4 (2011-10-28)
1272
+ ------------------
1273
+
1274
+ * Fixed: GuessContentType plugin now supports mixed case file extensions.
1275
+ * Fixed: DATE-TIME encoding was wrong in VObject. (we used 'DATETIME').
1276
+ * Changed: Sending back HTTP 204 after a PUT request on an existing resource
1277
+ instead of HTTP 200. This should fix Evolution CardDAV client compatibility.
1278
+ * Fixed: Issue 95: Parsing X-LIC-LOCATION if it's available.
1279
+ * Added: All VObject elements now have a reference to their parent node.
1280
+
1281
+
1282
+ 1.5.3 (2011-09-28)
1283
+ ------------------
1284
+
1285
+ * Fixed: Sabre_DAV_Collection was missing from the includes file.
1286
+ * Fixed: Issue 152. iOS 1.4.2 apparantly requires HTTP/1.1 200 OK to be in
1287
+ uppercase.
1288
+ * Fixed: Issue 153: Support for files with mixed newline styles in
1289
+ Sabre_VObject.
1290
+ * Fixed: Issue 159: Automatically converting any vcard and icalendardata to
1291
+ UTF-8.
1292
+ * Added: Sabre_DAV_SimpleFile class for easy static file creation.
1293
+ * Added: Issue 158: Support for the CARDDAV:supported-address-data property.
1294
+
1295
+
1296
+ 1.5.2 (2011-09-21)
1297
+ ------------------
1298
+
1299
+ * Fixed: carddata and calendardata MySQL fields are now of type 'mediumblob'.
1300
+ 'TEXT' was too small sometimes to hold all the data.
1301
+ * Fixed: {DAV:}supported-report-set is now correctly reporting the reports for
1302
+ IAddressBook.
1303
+ * Added: Sabre_VObject_Property::add() to add duplicate parameters to
1304
+ properties.
1305
+ * Added: Issue 151: Sabre_CalDAV_ICalendar and Sabre_CalDAV_ICalendarObject
1306
+ interfaces.
1307
+ * Fixed: Issue 140: Not returning 201 Created if an event cancelled the creation
1308
+ of a file.
1309
+ * Fixed: Issue 150: Faster URLUtil::encodePath() implementation.
1310
+ * Fixed: Issue 144: Browser plugin could interfere with
1311
+ TemporaryFileFilterPlugin if it was loaded first.
1312
+ * Added: It's not possible to specify more 'alternate uris' in principal
1313
+ backends.
1314
+
1315
+
1316
+ 1.5.1 (2011-08-24)
1317
+ ------------------
1318
+
1319
+ * Fixed: Issue 137. Hiding action interface in HTML browser for non-collections.
1320
+ * Fixed: addressbook-query is now correctly returned from the
1321
+ {DAV:}supported-report-set property.
1322
+ * Fixed: Issue 142: Bugs in groupwareserver.php example.
1323
+ * Fixed: Issue 139: Rejecting PUT requests with Content-Range.
1324
+
1325
+
1326
+ 1.5.0 (2011-08-12)
1327
+ ------------------
1328
+
1329
+ * Added: CardDAV support.
1330
+ * Added: An experimental WebDAV client.
1331
+ * Added: MIME-Directory grouping support in the VObject library. This is very
1332
+ useful for people attempting to parse vcards.
1333
+ * BC Break: Adding parameters with the VObject libraries now overwrites the
1334
+ previous parameter, rather than just add it. This makes more sense for 99% of
1335
+ the cases.
1336
+ * BC Break: lib/Sabre.autoload.php is now removed in favor of
1337
+ lib/Sabre/autoload.php.
1338
+ * Deprecated: Sabre_DAV_Directory is now deprecated and will be removed in a
1339
+ future version. Use Sabre_DAV_Collection instead.
1340
+ * Deprecated: Sabre_DAV_SimpleDirectory is now deprecated and will be removed in
1341
+ a future version. Use Sabre_DAV_SimpleCollection instead.
1342
+ * Fixed: Problem with overriding tablenames for the CalDAV backend.
1343
+ * Added: Clark-notation parser to XML utility.
1344
+ * Added: unset() support to VObject components.
1345
+ * Fixed: Refactored CalDAV property fetching to be faster and simpler.
1346
+ * Added: Central string-matcher for CalDAV and CardDAV plugins.
1347
+ * Added: i;unicode-casemap support
1348
+ * Fixed: VObject bug: wouldn't parse parameters if they weren't specified in
1349
+ uppercase.
1350
+ * Fixed: VObject bug: Parameters now behave more like Properties.
1351
+ * Fixed: VObject bug: Parameters with no value are now correctly parsed.
1352
+ * Changed: If calendars don't specify which components they allow, 'all'
1353
+ components are assumed (e.g.: VEVENT, VTODO, VJOURNAL).
1354
+ * Changed: Browser plugin now uses POST variable 'sabreAction' instead of
1355
+ 'action' to reduce the chance of collisions.
1356
+
1357
+
1358
+ 1.4.4 (2011-07-07)
1359
+ ------------------
1360
+
1361
+ * Fixed: Issue 131: Custom CalDAV backends could break in certain cases.
1362
+ * Added: The option to override the default tablename all PDO backends use.
1363
+ (Issue 60).
1364
+ * Fixed: Issue 124: 'File' authentication backend now takes realm into
1365
+ consideration.
1366
+ * Fixed: Sabre_DAV_Property_HrefList now properly deserializes. This allows
1367
+ users to update the {DAV:}group-member-set property.
1368
+ * Added: Helper functions for DateTime-values in Sabre_VObject package.
1369
+ * Added: VObject library can now automatically map iCalendar properties to
1370
+ custom classes.
1371
+
1372
+
1373
+ 1.4.3 (2011-04-25)
1374
+ ------------------
1375
+
1376
+ * Fixed: Issue 123: Added workaround for Windows 7 UNLOCK bug.
1377
+ * Fixed: datatype of lastmodified field in mysql.calendars.sql. Please change
1378
+ the DATETIME field to an INT to ensure this field will work correctly.
1379
+ * Change: Sabre_DAV_Property_Principal is now renamed to
1380
+ Sabre_DAVACL_Property_Principal.
1381
+ * Added: API level support for ACL HTTP method.
1382
+ * Fixed: Bug in serializing {DAV:}acl property.
1383
+ * Added: deserializer for {DAV:}resourcetype property.
1384
+ * Added: deserializer for {DAV:}acl property.
1385
+ * Added: deserializer for {DAV:}principal property.
1386
+
1387
+
1388
+ 1.4.2-beta (2011-04-01)
1389
+ -----------------------
1390
+
1391
+ * Added: It's not possible to disable listing of nodes that are denied read
1392
+ access by ACL.
1393
+ * Fixed: Changed a few properties in CalDAV classes from private to protected.
1394
+ * Fixed: Issue 119: Terrible things could happen when relying on guessBaseUri,
1395
+ the server was running on the root of the domain and a user tried to access a
1396
+ file ending in .php. This is a slight BC break.
1397
+ * Fixed: Issue 118: Lock tokens in If headers without a uri should be treated as
1398
+ the request uri, not 'all relevant uri's.
1399
+ * Fixed: Issue 120: PDO backend was incorrectly fetching too much locks in cases
1400
+ where there were similar named locked files in a directory.
1401
+
1402
+
1403
+ 1.4.1-beta (2011-02-26)
1404
+ -----------------------
1405
+
1406
+ * Fixed: Sabre_DAV_Locks_Backend_PDO returned too many locks.
1407
+ * Fixed: Sabre_HTTP_Request::getHeader didn't return Content-Type when running
1408
+ on apache, so a few workarounds were added.
1409
+ * Change: Slightly changed CalDAV Backend API's, to allow for heavy
1410
+ optimizations. This is non-bc breaking.
1411
+
1412
+
1413
+ 1.4.0-beta (2011-02-12)
1414
+ -----------------------
1415
+
1416
+ * Added: Partly RFC3744 ACL support.
1417
+ * Added: Calendar-delegation (caldav-proxy) support.
1418
+ * BC break: In order to fix Issue 99, a new argument had to be added to
1419
+ Sabre_DAV_Locks_Backend_*::getLocks classes. Consult the classes for details.
1420
+ * Deprecated: Sabre_DAV_Locks_Backend_FS is now deprecated and will be removed
1421
+ in a later version. Use PDO or the new File class instead.
1422
+ * Deprecated: The Sabre_CalDAV_ICalendarUtil class is now marked deprecated, and
1423
+ will be removed in a future version. Please use Sabre_VObject instead.
1424
+ * Removed: All principal-related functionality has been removed from the
1425
+ Sabre_DAV_Auth_Plugin, and moved to the Sabre_DAVACL_Plugin.
1426
+ * Added: VObject library, for easy vcard/icalendar parsing using a natural
1427
+ interface.
1428
+ * Added: Ability to automatically generate full .ics feeds off calendars. To
1429
+ use: Add the Sabre_CalDAV_ICSExportPlugin, and add ?export to your calendar
1430
+ url.
1431
+ * Added: Plugins can now specify a pluginname, for easy access using
1432
+ Sabre_DAV_Server::getPlugin().
1433
+ * Added: beforeGetProperties event.
1434
+ * Added: updateProperties event.
1435
+ * Added: Principal listings and calendar-access can now be done privately,
1436
+ disallowing users from accessing or modifying other users' data.
1437
+ * Added: You can now pass arrays to the Sabre_DAV_Server constructor. If it's an
1438
+ array with node-objects, a Root collection will automatically be created, and
1439
+ the nodes are used as top-level children.
1440
+ * Added: The principal base uri is now customizable. It used to be hardcoded to
1441
+ 'principals/[user]'.
1442
+ * Added: getSupportedReportSet method in ServerPlugin class. This allows you to
1443
+ easily specify which reports you're implementing.
1444
+ * Added: A '..' link to the HTML browser.
1445
+ * Fixed: Issue 99: Locks on child elements were ignored when their parent nodes
1446
+ were deleted.
1447
+ * Fixed: Issue 90: lockdiscovery property and LOCK response now include a
1448
+ {DAV}lockroot element.
1449
+ * Fixed: Issue 96: support for 'default' collation in CalDAV text-match filters.
1450
+ * Fixed: Issue 102: Ensuring that copy and move with identical source and
1451
+ destination uri's fails.
1452
+ * Fixed: Issue 105: Supporting MKCALENDAR with no body.
1453
+ * Fixed: Issue 109: Small fixes in Sabre_HTTP_Util.
1454
+ * Fixed: Issue 111: Properly catching the ownername in a lock (if it's a string)
1455
+ * Fixed: Sabre_DAV_ObjectTree::nodeExist always returned false for the root
1456
+ node.
1457
+ * Added: Global way to easily supply new resourcetypes for certain node classes.
1458
+ * Fixed: Issue 59: Allowing the user to override the authentication realm in
1459
+ Sabre_CalDAV_Server.
1460
+ * Update: Issue 97: Looser time-range checking if there's a recurrence rule in
1461
+ an event. This fixes 'missing recurring events'.
1462
+
1463
+
1464
+ 1.3.0 (2010-10-14)
1465
+ ------------------
1466
+
1467
+ * Added: childExists method to Sabre_DAV_ICollection. This is an api break, so
1468
+ if you implement Sabre_DAV_ICollection directly, add the method.
1469
+ * Changed: Almost all HTTP method implementations now take a uri argument,
1470
+ including events. This allows for internal rerouting of certain calls. If you
1471
+ have custom plugins, make sure they use this argument. If they don't, they
1472
+ will likely still work, but it might get in the way of future changes.
1473
+ * Changed: All getETag methods MUST now surround the etag with double-quotes.
1474
+ This was a mistake made in all previous SabreDAV versions. If you don't do
1475
+ this, any If-Match, If-None-Match and If: headers using Etags will work
1476
+ incorrectly. (Issue 85).
1477
+ * Added: Sabre_DAV_Auth_Backend_AbstractBasic class, which can be used to easily
1478
+ implement basic authentication.
1479
+ * Removed: Sabre_DAV_PermissionDenied class. Use Sabre_DAV_Forbidden instead.
1480
+ * Removed: Sabre_DAV_IDirectory interface, use Sabre_DAV_ICollection instead.
1481
+ * Added: Browser plugin now uses {DAV:}displayname if this property is
1482
+ available.
1483
+ * Added: Cache layer in the ObjectTree.
1484
+ * Added: Tree classes now have a delete and getChildren method.
1485
+ * Fixed: If-Modified-Since and If-Unmodified-Since would be incorrect if the
1486
+ date is an exact match.
1487
+ * Fixed: Support for multiple ETags in If-Match and If-None-Match headers.
1488
+ * Fixed: Improved baseUrl handling.
1489
+ * Fixed: Issue 67: Non-seekable stream support in ::put()/::get().
1490
+ * Fixed: Issue 65: Invalid dates are now ignored.
1491
+ * Updated: Refactoring in Sabre_CalDAV to make everything a bit more ledgable.
1492
+ * Fixed: Issue 88, Issue 89: Fixed compatibility for running SabreDAV on
1493
+ Windows.
1494
+ * Fixed: Issue 86: Fixed Content-Range top-boundary from 'file size' to 'file
1495
+ size'-1.
1496
+
1497
+
1498
+ 1.2.5 (2010-08-18)
1499
+ ------------------
1500
+
1501
+ * Fixed: Issue 73: guessBaseUrl fails for some servers.
1502
+ * Fixed: Issue 67: SabreDAV works better with non-seekable streams.
1503
+ * Fixed: If-Modified-Since and If-Unmodified-Since would be incorrect if
1504
+ the date is an exact match.
1505
+
1506
+
1507
+ 1.2.4 (2010-07-13)
1508
+ ------------------
1509
+
1510
+ * Fixed: Issue 62: Guessing baseUrl fails when url contains a query-string.
1511
+ * Added: Apache configuration sample for CGI/FastCGI setups.
1512
+ * Fixed: Issue 64: Only returning calendar-data when it was actually requested.
1513
+
1514
+
1515
+ 1.2.3 (2010-06-26)
1516
+ ------------------
1517
+
1518
+ * Fixed: Issue 57: Supporting quotes around etags in If-Match and If-None-Match
1519
+
1520
+
1521
+ 1.2.2 (2010-06-21)
1522
+ ------------------
1523
+
1524
+ * Updated: SabreDAV now attempts to guess the BaseURI if it's not set.
1525
+ * Updated: Better compatibility with BitKinex
1526
+ * Fixed: Issue 56: Incorrect behaviour for If-None-Match headers and GET
1527
+ requests.
1528
+ * Fixed: Issue with certain encoded paths in Browser Plugin.
1529
+
1530
+
1531
+ 1.2.1 (2010-06-07)
1532
+ ------------------
1533
+
1534
+ * Fixed: Issue 50, patch by Mattijs Hoitink.
1535
+ * Fixed: Issue 51, Adding windows 7 lockfiles to TemporaryFileFilter.
1536
+ * Fixed: Issue 38, Allowing custom filters to be added to TemporaryFileFilter.
1537
+ * Fixed: Issue 53, ETags in the If: header were always failing. This behaviour
1538
+ is now corrected.
1539
+ * Added: Apache Authentication backend, in case authentication through .htaccess
1540
+ is desired.
1541
+ * Updated: Small improvements to example files.
1542
+
1543
+
1544
+ 1.2.0 (2010-05-24)
1545
+ ------------------
1546
+
1547
+ * Fixed: Browser plugin now displays international characters.
1548
+ * Changed: More properties in CalDAV classes are now protected instead of
1549
+ private.
1550
+
1551
+
1552
+ 1.2.0beta3 (2010-05-14)
1553
+ -----------------------
1554
+
1555
+ * Fixed: Custom properties were not properly sent back for allprops requests.
1556
+ * Fixed: Issue 49, incorrect parsing of PROPPATCH, affecting Office 2007.
1557
+ * Changed: Removed CalDAV items from includes.php, and added a few missing ones.
1558
+
1559
+
1560
+ 1.2.0beta2 (2010-05-04)
1561
+ -----------------------
1562
+
1563
+ * Fixed: Issue 46: Fatal error for some non-existent nodes.
1564
+ * Updated: some example sql to include email address.
1565
+ * Added: 208 and 508 statuscodes from RFC5842.
1566
+ * Added: Apache2 configuration examples
1567
+
1568
+
1569
+ 1.2.0beta1 (2010-04-28)
1570
+ -----------------------
1571
+
1572
+ * Fixed: redundant namespace declaration in resourcetypes.
1573
+ * Fixed: 2 locking bugs triggered by litmus when no Sabre_DAV_ILockable
1574
+ interface is used.
1575
+ * Changed: using http://sabredav.org/ns for all custom xml properties.
1576
+ * Added: email address property to principals.
1577
+ * Updated: CalendarObject validation.
1578
+
1579
+
1580
+ 1.2.0alpha4 (2010-04-24)
1581
+ ------------------------
1582
+
1583
+ * Added: Support for If-Range, If-Match, If-None-Match, If-Modified-Since,
1584
+ If-Unmodified-Since.
1585
+ * Changed: Brand new build system. Functionality is split up between Sabre,
1586
+ Sabre_HTTP, Sabre_DAV and Sabre_CalDAV packages. In addition to that a new
1587
+ non-pear package will be created with all this functionality combined.
1588
+ * Changed: Autoloader moved to Sabre/autoload.php.
1589
+ * Changed: The Allow: header is now more accurate, with appropriate HTTP methods
1590
+ per uri.
1591
+ * Changed: Now throwing back Sabre_DAV_Exception_MethodNotAllowed on a few
1592
+ places where Sabre_DAV_Exception_NotImplemented was used.
1593
+
1594
+
1595
+ 1.2.0alpha3 (2010-04-20)
1596
+ ------------------------
1597
+
1598
+ * Update: Complete rewrite of property updating. Now easier to use and atomic.
1599
+ * Fixed: Issue 16, automatically adding trailing / to baseUri.
1600
+ * Added: text/plain is used for .txt files in GuessContentType plugin.
1601
+ * Added: support for principal-property-search and principal-search-property-set
1602
+ reports.
1603
+ * Added: Issue 31: Hiding exception information by default. Can be turned on
1604
+ with the Sabre_DAV_Server::$debugExceptions property.
1605
+
1606
+
1607
+ 1.2.0alpha2 (2010-04-08)
1608
+ ------------------------
1609
+
1610
+ * Added: Calendars are now private and can only be read by the owner.
1611
+ * Fixed: double namespace declaration in multistatus responses.
1612
+ * Added: MySQL database dumps. MySQL is now also supported next to SQLite.
1613
+ * Added: expand-properties REPORT from RFC 3253.
1614
+ * Added: Sabre_DAV_Property_IHref interface for properties exposing urls.
1615
+ * Added: Issue 25: Throwing error on broken Finder behaviour.
1616
+ * Changed: Authentication backend is now aware of current user.
1617
+
1618
+
1619
+ 1.2.0alpha1 (2010-03-31)
1620
+ ------------------------
1621
+
1622
+ * Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded special
1623
+ characters.
1624
+ * Fixed: Issue 34: Incorrect Lock-Token response header for LOCK. Fixes Office
1625
+ 2010 compatibility.
1626
+ * Added: Issue 35: SabreDAV version to header to OPTIONS response to ease
1627
+ debugging.
1628
+ * Fixed: Issue 36: Incorrect variable name, throwing error in some requests.
1629
+ * Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
1630
+ * Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
1631
+ * Fixed: Issue 39 & Issue 40: Basename fails on non-utf-8 locales.
1632
+ * Added: More unittests.
1633
+ * Added: SabreDAV version to all error responses.
1634
+ * Added: URLUtil class for decoding urls.
1635
+ * Changed: Now using pear.sabredav.org pear channel.
1636
+ * Changed: Sabre_DAV_Server::getCopyAndMoveInfo is now a public method.
1637
+
1638
+
1639
+ 1.1.2-alpha (2010-03-18)
1640
+ ------------------------
1641
+
1642
+ * Added: RFC5397 - current-user-principal support.
1643
+ * Fixed: Issue 27: encoding entities in property responses.
1644
+ * Added: naturalselection script now allows the user to specify a 'minimum
1645
+ number of bytes' for deletion. This should reduce load due to less crawling
1646
+ * Added: Full support for the calendar-query report.
1647
+ * Added: More unittests.
1648
+ * Added: Support for complex property deserialization through the static
1649
+ ::unserialize() method.
1650
+ * Added: Support for modifying calendar-component-set
1651
+ * Fixed: Issue 29: Added TIMEOUT_INFINITE constant
1652
+
1653
+
1654
+ 1.1.1-alpha (2010-03-11)
1655
+ ------------------------
1656
+
1657
+ * Added: RFC5689 - Extended MKCOL support.
1658
+ * Fixed: Evolution support for CalDAV.
1659
+ * Fixed: PDO-locks backend was pretty much completely broken. This is 100%
1660
+ unittested now.
1661
+ * Added: support for ctags.
1662
+ * Fixed: Comma's between HTTP methods in 'Allow' method.
1663
+ * Changed: default argument for Sabre_DAV_Locks_Backend_FS. This means a
1664
+ datadirectory must always be specified from now on.
1665
+ * Changed: Moved Sabre_DAV_Server::parseProps to
1666
+ Sabre_DAV_XMLUtil::parseProperties.
1667
+ * Changed: Sabre_DAV_IDirectory is now Sabre_DAV_ICollection.
1668
+ * Changed: Sabre_DAV_Exception_PermissionDenied is now
1669
+ Sabre_DAV_Exception_Forbidden.
1670
+ * Changed: Sabre_CalDAV_ICalendarCollection is removed.
1671
+ * Added: Sabre_DAV_IExtendedCollection.
1672
+ * Added: Many more unittests.
1673
+ * Added: support for calendar-timezone property.
1674
+
1675
+
1676
+ 1.1.0-alpha (2010-03-01)
1677
+ ------------------------
1678
+
1679
+ * Note: This version is forked from version 1.0.5, so release dates may be out
1680
+ of order.
1681
+ * Added: CalDAV - RFC 4791
1682
+ * Removed: Sabre_PHP_Exception. PHP has a built-in ErrorException for this.
1683
+ * Added: PDO authentication backend.
1684
+ * Added: Example sql for auth, caldav, locks for sqlite.
1685
+ * Added: Sabre_DAV_Browser_GuessContentType plugin
1686
+ * Changed: Authentication plugin refactored, making it possible to implement
1687
+ non-digest authentication.
1688
+ * Fixed: Better error display in browser plugin.
1689
+ * Added: Support for {DAV:}supported-report-set
1690
+ * Added: XML utility class with helper functions for the WebDAV protocol.
1691
+ * Added: Tons of unittests
1692
+ * Added: PrincipalCollection and Principal classes
1693
+ * Added: Sabre_DAV_Server::getProperties for easy property retrieval
1694
+ * Changed: {DAV:}resourceType defaults to 0
1695
+ * Changed: Any non-null resourceType now gets a / appended to the href value.
1696
+ Before this was just for {DAV:}collection's, but this is now also the case for
1697
+ for example {DAV:}principal.
1698
+ * Changed: The Href property class can now optionally create non-relative uri's.
1699
+ * Changed: Sabre_HTTP_Response now returns false if headers are already sent and
1700
+ header-methods are called.
1701
+ * Fixed: Issue 19: HEAD requests on Collections
1702
+ * Fixed: Issue 21: Typo in Sabre_DAV_Property_Response
1703
+ * Fixed: Issue 18: Doesn't work with Evolution Contacts
1704
+
1705
+
1706
+ 1.0.15 (2010-05-28)
1707
+ -------------------
1708
+
1709
+ * Added: Issue 31: Hiding exception information by default. Can be turned on
1710
+ with the Sabre_DAV_Server::$debugExceptions property.
1711
+ * Added: Moved autoload from lib/ to lib/Sabre/autoload.php. This is also the
1712
+ case in the upcoming 1.2.0, so it will improve future compatibility.
1713
+
1714
+
1715
+ 1.0.14 (2010-04-15)
1716
+ -------------------
1717
+
1718
+ * Fixed: double namespace declaration in multistatus responses.
1719
+
1720
+
1721
+ 1.0.13 (2010-03-30)
1722
+ -------------------
1723
+
1724
+ * Fixed: Issue 40: Last references to basename/dirname
1725
+
1726
+
1727
+ 1.0.12 (2010-03-30)
1728
+ -------------------
1729
+
1730
+ * Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
1731
+ * Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded special
1732
+ characters.
1733
+ * Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
1734
+ * Fixed: Issue 39: Basename fails on non-utf-8 locales.
1735
+ * Added: More unittests.
1736
+ * Added: SabreDAV version to all error responses.
1737
+ * Added: URLUtil class for decoding urls.
1738
+ * Updated: Now using pear.sabredav.org pear channel.
1739
+
1740
+
1741
+ 1.0.11 (2010-03-23)
1742
+ -------------------
1743
+
1744
+ * Non-public release. This release is identical to 1.0.10, but it is used to
1745
+ test releasing packages to pear.sabredav.org.
1746
+
1747
+
1748
+ 1.0.10 (2010-03-22)
1749
+ -------------------
1750
+
1751
+ * Fixed: Issue 34: Invalid Lock-Token header response.
1752
+ * Added: Issue 35: Addign SabreDAV version to HTTP OPTIONS responses.
1753
+
1754
+
1755
+ 1.0.9 (2010-03-19)
1756
+ ------------------
1757
+
1758
+ * Fixed: Issue 27: Entities not being encoded in PROPFIND responses.
1759
+ * Fixed: Issue 29: Added missing TIMEOUT_INFINITE constant.
1760
+
1761
+
1762
+ 1.0.8 (2010-03-03)
1763
+ ------------------
1764
+
1765
+ * Fixed: Issue 21: typos causing errors
1766
+ * Fixed: Issue 23: Comma's between methods in Allow header.
1767
+ * Added: Sabre_DAV_ICollection interface, to aid in future compatibility.
1768
+ * Added: Sabre_DAV_Exception_Forbidden exception. This will replace
1769
+ Sabre_DAV_Exception_PermissionDenied in the future, and can already be used to
1770
+ ensure future compatibility.
1771
+
1772
+
1773
+ 1.0.7 (2010-02-24)
1774
+ ------------------
1775
+
1776
+ * Fixed: Issue 19 regression for MS Office
1777
+
1778
+
1779
+ 1.0.6 (2010-02-23)
1780
+ ------------------
1781
+
1782
+ * Fixed: Issue 19: HEAD requests on Collections
1783
+
1784
+
1785
+ 1.0.5 (2010-01-22)
1786
+ ------------------
1787
+
1788
+ * Fixed: Fatal error when a malformed url was used for unlocking, in conjuction
1789
+ with Sabre.autoload.php due to a incorrect filename.
1790
+ * Fixed: Improved unittests and build system
1791
+
1792
+
1793
+ 1.0.4 (2010-01-11)
1794
+ ------------------
1795
+
1796
+ * Fixed: needed 2 different releases. One for googlecode and one for pearfarm.
1797
+ This is to retain the old method to install SabreDAV until pearfarm becomes
1798
+ the standard installation method.
1799
+
1800
+
1801
+ 1.0.3 (2010-01-11)
1802
+ ------------------
1803
+
1804
+ * Added: RFC4709 support (davmount)
1805
+ * Added: 6 unittests
1806
+ * Added: naturalselection. A tool to keep cache directories below a specified
1807
+ theshold.
1808
+ * Changed: Now using pearfarm.org channel server.
1809
+
1810
+
1811
+ 1.0.1 (2009-12-22)
1812
+ ------------------
1813
+
1814
+ * Fixed: Issue 15: typos in examples
1815
+ * Fixed: Minor pear installation issues
1816
+
1817
+
1818
+ 1.0.0 (2009-11-02)
1819
+ ------------------
1820
+
1821
+ * Added: SimpleDirectory class. This class allows creating static directory
1822
+ structures with ease.
1823
+ * Changed: Custom complex properties and exceptions now get an instance of
1824
+ Sabre_DAV_Server as their first argument in serialize()
1825
+ * Changed: Href complex property now prepends server's baseUri
1826
+ * Changed: delete before an overwriting copy/move is now handles by server class
1827
+ instead of tree classes
1828
+ * Changed: events must now explicitly return false to stop execution. Before,
1829
+ execution would be stopped by anything loosely evaluating to false.
1830
+ * Changed: the getPropertiesForPath method now takes a different set of
1831
+ arguments, and returns a different response. This allows plugin developers to
1832
+ return statuses for properties other than 200 and 404. The hrefs are now also
1833
+ always calculated relative to the baseUri, and not the uri of the request.
1834
+ * Changed: generatePropFindResponse is renamed to generateMultiStatus, and now
1835
+ takes a list of properties similar to the response of getPropertiesForPath.
1836
+ This was also needed to improve flexibility for plugin development.
1837
+ * Changed: Auth plugins are no longer included. They were not yet stable
1838
+ quality, so they will probably be reintroduced in a later version.
1839
+ * Changed: PROPPATCH also used generateMultiStatus now.
1840
+ * Removed: unknownProperties event. This is replaced by the afterGetProperties
1841
+ event, which should provide more flexibility.
1842
+ * Fixed: Only calling getSize() on IFile instances in httpHead()
1843
+ * Added: beforeBind event. This is invoked upon file or directory creation
1844
+ * Added: beforeWriteContent event, this is invoked by PUT and LOCK on an
1845
+ existing resource.
1846
+ * Added: beforeUnbind event. This is invoked right before deletion of any
1847
+ resource.
1848
+ * Added: afterGetProperties event. This event can be used to make modifications
1849
+ to property responses.
1850
+ * Added: beforeLock and beforeUnlock events.
1851
+ * Added: afterBind event.
1852
+ * Fixed: Copy and Move could fail in the root directory. This is now fixed.
1853
+ * Added: Plugins can now be retrieved by their classname. This is useful for
1854
+ inter-plugin communication.
1855
+ * Added: The Auth backend can now return usernames and user-id's.
1856
+ * Added: The Auth backend got a getUsers method
1857
+ * Added: Sabre_DAV_FSExt_Directory now returns quota info
1858
+
1859
+
1860
+ 0.12.1-beta (2009-09-11)
1861
+ ------------------------
1862
+
1863
+ * Fixed: UNLOCK bug. Unlock didn't work at all
1864
+
1865
+
1866
+ 0.12-beta (2009-09-10)
1867
+ ----------------------
1868
+
1869
+ * Updated: Browser plugin now shows multiple {DAV:}resourcetype values if
1870
+ available.
1871
+ * Added: Experimental PDO backend for Locks Manager
1872
+ * Fixed: Sending Content-Length: 0 for every empty response. This improves NGinx
1873
+ compatibility.
1874
+ * Fixed: Last modification time is reported in UTC timezone. This improves
1875
+ Finder compatibility.
1876
+
1877
+
1878
+ 0.11-beta (2009-08-11)
1879
+ ----------------------
1880
+
1881
+ * Updated: Now in Beta
1882
+ * Updated: Pear package no longer includes docs/ directory. These just contained
1883
+ rfc's, which are publicly available. This reduces the package from ~800k to
1884
+ ~60k
1885
+ * Added: generatePropfindResponse now takes a baseUri argument
1886
+ * Added: ResourceType property can now contain multiple resourcetypes.
1887
+ * Fixed: Issue 13.
1888
+
1889
+
1890
+ 0.10-alpha (2009-08-03)
1891
+ -----------------------
1892
+
1893
+ * Added: Plugin to automatically map GET requests to non-files to PROPFIND
1894
+ (Sabre_DAV_Browser_MapGetToPropFind). This should allow easier debugging of
1895
+ complicated WebDAV setups.
1896
+ * Added: Sabre_DAV_Property_Href class. For future use.
1897
+ * Added: Ability to choose to use auth-int, auth or both for HTTP Digest
1898
+ authentication. (Issue 11)
1899
+ * Changed: Made more methods in Sabre_DAV_Server public.
1900
+ * Fixed: TemporaryFileFilter plugin now intercepts HTTP LOCK requests to
1901
+ non-existent files. (Issue 12)
1902
+ * Added: Central list of defined xml namespace prefixes. This can reduce
1903
+ Bandwidth and legibility for xml bodies with user-defined namespaces.
1904
+ * Added: now a PEAR-compatible package again, thanks to Michael Gauthier
1905
+ * Changed: moved default copy and move logic from ObjectTree to Tree class
1906
+
1907
+ 0.9a-alpha (2009-07-21)
1908
+ ----------------------
1909
+
1910
+ * Fixed: Broken release
1911
+
1912
+ 0.9-alpha (2009-07-21)
1913
+ ----------------------
1914
+
1915
+ * Changed: Major refactoring, removed most of the logic from the Tree objects.
1916
+ The Server class now directly works with the INode, IFile and IDirectory
1917
+ objects. If you created your own Tree objects, this will most likely break in
1918
+ this release.
1919
+ * Changed: Moved all the Locking logic from the Tree and Server classes into a
1920
+ separate plugin.
1921
+ * Changed: TemporaryFileFilter is now a plugin.
1922
+ * Added: Comes with an autoloader script. This can be used instead of the
1923
+ includer script, and is preferred by some people.
1924
+ * Added: AWS Authentication class.
1925
+ * Added: simpleserversetup.py script. This will quickly get a fileserver up and
1926
+ running.
1927
+ * Added: When subscribing to events, it is now possible to supply a priority.
1928
+ This is for example needed to ensure that the Authentication Plugin is used
1929
+ before any other Plugin.
1930
+ * Added: 22 new tests.
1931
+ * Added: Users-manager plugin for .htdigest files. Experimental and subject to
1932
+ change.
1933
+ * Added: RFC 2324 HTTP 418 status code
1934
+ * Fixed: Exclusive locks could in some cases be picked up as shared locks
1935
+ * Fixed: Digest auth for non-apache servers had a bug (still not actually tested
1936
+ this well).
1937
+
1938
+
1939
+ 0.8-alpha (2009-05-30)
1940
+ ----------------------
1941
+
1942
+ * Changed: Renamed all exceptions! This is a compatibility break. Every
1943
+ Exception now follows Sabre_DAV_Exception_FileNotFound convention instead of
1944
+ Sabre_DAV_FileNotFoundException.
1945
+ * Added: Browser plugin now allows uploading and creating directories straight
1946
+ from the browser.
1947
+ * Added: 12 more unittests
1948
+ * Fixed: Locking bug, which became prevalent on Windows Vista.
1949
+ * Fixed: Netdrive support
1950
+ * Fixed: TemporaryFileFilter filtered out too many files. Fixed some of the
1951
+ regexes.
1952
+ * Fixed: Added README and ChangeLog to package
1953
+
1954
+
1955
+ 0.7-alpha (2009-03-29)
1956
+ ----------------------
1957
+
1958
+ * Added: System to return complex properties from PROPFIND.
1959
+ * Added: support for {DAV:}supportedlock.
1960
+ * Added: support for {DAV:}lockdiscovery.
1961
+ * Added: 6 new tests.
1962
+ * Added: New plugin system.
1963
+ * Added: Simple HTML directory plugin, for browser access.
1964
+ * Added: Server class now sends back standard pre-condition error xml bodies.
1965
+ This was new since RFC4918.
1966
+ * Added: Sabre_DAV_Tree_Aggregrate, which can 'host' multiple Tree objects into
1967
+ one.
1968
+ * Added: simple basis for HTTP REPORT method. This method is not used yet, but
1969
+ can be used by plugins to add reports.
1970
+ * Changed: ->getSize is only called for files, no longer for collections. r303
1971
+ * Changed: Sabre_DAV_FilterTree is now Sabre_DAV_Tree_Filter
1972
+ * Changed: Sabre_DAV_TemporaryFileFilter is now called
1973
+ Sabre_DAV_Tree_TemporaryFileFilter.
1974
+ * Changed: removed functions (get(/set)HTTPRequest(/Response)) from Server
1975
+ class, and using a public property instead.
1976
+ * Fixed: bug related to parsing proppatch and propfind requests. Didn't show up
1977
+ in most clients, but it needed fixing regardless. (r255)
1978
+ * Fixed: auth-int is now properly supported within HTTP Digest.
1979
+ * Fixed: Using application/xml for a mimetype vs. text/xml as per RFC4918 sec
1980
+ 8.2.
1981
+ * Fixed: TemporaryFileFilter now lets through GET's if they actually exist on
1982
+ the backend. (r274)
1983
+ * FIxed: Some methods didn't get passed through in the FilterTree (r283).
1984
+ * Fixed: LockManager is now slightly more complex, Tree classes slightly less.
1985
+ (r287)
1986
+
1987
+
1988
+ 0.6-alpha (2009-02-16)
1989
+ ----------------------
1990
+
1991
+ * Added: Now uses streams for files, instead of strings. This means it won't
1992
+ require to hold entire files in memory, which can be an issue if you're
1993
+ dealing with big files. Note that this breaks compatibility for put() and
1994
+ createFile methods.
1995
+ * Added: HTTP Digest Authentication helper class.
1996
+ * Added: Support for HTTP Range header
1997
+ * Added: Support for ETags within If: headers
1998
+ * Added: The API can now return ETags and override the default Content-Type
1999
+ * Added: starting with basic framework for unittesting, using PHPUnit.
2000
+ * Added: 49 unittests.
2001
+ * Added: Abstraction for the HTTP request.
2002
+ * Updated: Using Clark Notation for tags in properties. This means tags are
2003
+ serialized as {namespace}tagName instead of namespace#tagName
2004
+ * Fixed: HTTP_BasicAuth class now works as expected.
2005
+ * Fixed: DAV_Server uses / for a default baseUrl.
2006
+ * Fixed: Last modification date is no longer ignored in PROPFIND.
2007
+ * Fixed: PROPFIND now sends back information about the requestUri even when
2008
+ "Depth: 1" is specified.
2009
+
2010
+
2011
+ 0.5-alpha (2009-01-14)
2012
+ ----------------------
2013
+
2014
+ * Added: Added a very simple example for implementing a mapping to PHP file
2015
+ streams. This should allow easy implementation of for example a WebDAV to FTP
2016
+ proxy.
2017
+ * Added: HTTP Basic Authentication helper class.
2018
+ * Added: Sabre_HTTP_Response class. This centralizes HTTP operations and will be
2019
+ a start towards the creating of a testing framework.
2020
+ * Updated: Backwards compatibility break: all require_once() statements are
2021
+ removed from all the files. It is now recommended to use autoloading of
2022
+ classes, or just including lib/Sabre.includes.php. This fix was made to allow
2023
+ easier integration into applications not using this standard inclusion model.
2024
+ * Updated: Better in-file documentation.
2025
+ * Updated: Sabre_DAV_Tree can now work with Sabre_DAV_LockManager.
2026
+ * Updated: Fixes a shared-lock bug.
2027
+ * Updated: Removed ?> from the bottom of each php file.
2028
+ * Updated: Split up some operations from Sabre_DAV_Server to
2029
+ Sabre_HTTP_Response.
2030
+ * Fixed: examples are now actually included in the pear package.
2031
+
2032
+
2033
+ 0.4-alpha (2008-11-05)
2034
+ ----------------------
2035
+
2036
+ * Passes all litmus tests!
2037
+ * Added: more examples
2038
+ * Added: Custom property support
2039
+ * Added: Shared lock support
2040
+ * Added: Depth support to locks
2041
+ * Added: Locking on unmapped urls (non-existent nodes)
2042
+ * Fixed: Advertising as WebDAV class 3 support
2043
+
2044
+
2045
+ 0.3-alpha (2008-06-29)
2046
+ ----------------------
2047
+
2048
+ * Fully working in MS Windows clients.
2049
+ * Added: temporary file filter: support for smultron files.
2050
+ * Added: Phing build scripts
2051
+ * Added: PEAR package
2052
+ * Fixed: MOVE bug identified using finder.
2053
+ * Fixed: Using gzuncompress instead of gzdecode in the temporary file filter.
2054
+ This seems more common.
2055
+
2056
+
2057
+ 0.2-alpha (2008-05-27)
2058
+ ----------------------
2059
+
2060
+ * Somewhat working in Windows clients
2061
+ * Added: Working PROPPATCH method (doesn't support custom properties yet)
2062
+ * Added: Temporary filename handling system
2063
+ * Added: Sabre_DAV_IQuota to return quota information
2064
+ * Added: PROPFIND now reads the request body and only supplies the requested
2065
+ properties
2066
+
2067
+
2068
+ 0.1-alpha (2008-04-04)
2069
+ ----------------------
2070
+
2071
+ * First release!
2072
+ * Passes litmus: basic, http and copymove test.
2073
+ * Fully working in Finder and DavFSv2 Project started: 2007-12-13
2074
+
2075
+
2076
+ [vobj]: http://sabre.io/vobject/
2077
+ [evnt]: http://sabre.io/event/
2078
+ [http]: http://sabre.io/http/
2079
+ [uri]: http://sabre.io/uri/
2080
+ [xml]: http://sabre.io/xml/
2081
+ [mi20]: http://sabre.io/dav/upgrade/1.8-to-2.0/
2082
+ [rfc6638]: http://tools.ietf.org/html/rfc6638 "CalDAV Scheduling"
2083
+ [rfc7240]: http://tools.ietf.org/html/rfc7240
2084
+ [calendar-availability]: https://tools.ietf.org/html/draft-daboo-calendar-availability-05