Summary | Recurring events can be created with broken recurrence end dates |
Queue | Kronolith |
Queue Version | FRAMEWORK_5_2 |
Type | Bug |
State | Resolved |
Priority | 2. Medium |
Owners | mrubinsk (at) horde (dot) org |
Requester | wahnes (at) uni-koeln (dot) de |
Created | 12/14/2017 (2798 days ago) |
Due | |
Updated | 02/21/2018 (2729 days ago) |
Assigned | |
Resolved | 02/21/2018 (2729 days ago) |
Github Issue Link | |
Github Pull Request | |
Milestone | |
Patch | No |
commit 1c0f8f1064e6787c1cf827b90e73b75798b455b8
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date: Wed, 21 Feb 2018 14:39:15 -0500
[mjr] Prevent creation of corrupt recurrence end dates (
Bug #14752).M doc/CHANGES
M package.xml
https://github.com/horde/kronolith/commit/1c0f8f1064e6787c1cf827b90e73b75798b455b8
commit f115c47c94ea7af56b65ae25baf223702de45b60
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date: Wed, 21 Feb 2018 14:39:15 -0500
[mjr] Prevent creation of corrupt recurrence end dates (
Bug #14752).M doc/changelog.yml
https://github.com/horde/kronolith/commit/f115c47c94ea7af56b65ae25baf223702de45b60
commit 7ec2375d655e451c1f9bdf7244a669482e4e3f72
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date: Wed, 21 Feb 2018 14:33:57 -0500
Bug: 14752Catch empty recur_end values when they are expected.M lib/Event.php
https://github.com/horde/kronolith/commit/7ec2375d655e451c1f9bdf7244a669482e4e3f72
commit e6ea61127d1717e701aabf3f9d3f8713cbe3db2b
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date: Wed, 21 Feb 2018 14:39:41 -0500
[mjr] Prevent creation of corrupt recurrence end dates (
Bug #14752).M docs/changelog.yml
https://github.com/horde/kronolith/commit/e6ea61127d1717e701aabf3f9d3f8713cbe3db2b
commit b56267eb6e7b75964014769426fed129bc71357e
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date: Wed, 21 Feb 2018 14:34:31 -0500
Bug: 14752Catch empty recur_end values when they are expected.M lib/Event.php
https://github.com/horde/kronolith/commit/b56267eb6e7b75964014769426fed129bc71357e
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ Recurring events can be created with broken recurrence end dates
Queue ⇒ Kronolith
Milestone ⇒
Patch ⇒ No
New Attachment: kronolith-problem-recurring-event-with-no-end-date.png
State ⇒ Unconfirmed
an erroneous record of that event is saved to the database if one
clicks the "Stop at" radio button, does not enter any date but clicks
on "Save". Upon clicking the Save button, an endless spinner appears.
The same happens if one reloads the calendar page and tries to open
the event in order to delete it. The erroneous event can only be
corrected by editing it directly in the database.
Attached is a screenshot of an example event that causes this problem.
The data given there would be saved to the database as follows:
mysql> select * from kronolith_events where event_title='Go for a hike' \G
*************************** 1. row ***************************
event_id: RFyNlomOsDS3mAHc8CQ75Or
event_uid:
20171214151839.j3DC241MiJzgf5Ma60GXF1J@foo.example.org
calendar_id: mmuster2
event_creator_id: mmuster2
event_description: asdf
event_location: Somewhere over the rainbow
event_status: 2
event_attendees: a:0:{}
event_keywords: NULL
event_exceptions:
event_title: Go for a hike
event_recurtype: 1
event_recurinterval: 1
event_recurdays: NULL
event_recurenddate: 0000-00-00 00:00:00
event_recurcount: NULL
event_start: 2018-02-14 00:00:00
event_end: 2018-02-22 00:00:00
event_alarm: 0
event_modified: 1513261119
event_private: 0
event_allday: 1
event_alarm_methods: a:0:{}
event_url:
event_baseid:
event_exceptionoriginaldate: NULL
event_resources: a:0:{}
event_timezone:
Please note how the "event_recurenddate" column contains an invalid
date, i.e. the date (if you consider "0000-00-00" to be a date) would
be way before the event_start date.
Under some circumstances (I could not find out what those are exactly)
a calendar with these kind of broken events also causes the CalDAV
sync to fail. The CalDAV client would receive a HTTP "200" response
instead of a normal "207" response (which would then contain
individual "200" responses within the XML code in the response body,
but not in the HTTP header).