On Tue, Dec 16, 2014 at 10:46:59AM +0100, Benedikt Spranger wrote: > > > trying to push a event started befor 1900 results in a database > > > error and therefor in a 500 response to the client.
> The underlaying database refuses to accept "18961224" as date while > "19011224" works out pretty well. My "works for me" changes "18961224" > or "19011224" into "18961224T000000Z" or "19011224T000000Z" which both > are accepted as dates. Reading around a bit, rfc2445 says in 4.6.1 that the VEVENT component is used for anniversaries with a DATE value type for the DTSTART property instead of the default DATE-TIME. So "18961224" is indeed a valid value for DTSTART. The postgres dtstart field is of type TIMESTAMP WITH TIME ZONE, which neither "18961224" nor "19011224" conforms to. I'm unable to deduce from the postgres documentation why the two are processed differently. Now "18961224T000000Z" would make for a valid TIMESTAMP WITH TIME ZONE, but I'm not sure this conversion leads to correct results in CalDAV terms: - the DTSTART property generated from it will likely be DATE-TIME instead of just DATE; I wonder if that changes the way clients display the event - I worry that depending on the local timezone offset relative to UTC, clients might display the event on the preceding day, instead of "floating" independent on timezone. Am I worrying too much about things already solved elsewhere in DAViCal? Why is postgres throwing errors, is that a new behaviour, how is "19011224" interpreted w.r.t. the concerns raised above when written to a TIMESTAMP WITH TIME ZONE field? Perhaps other people can chime in here... Florian > > > > A workaround patch is attached. > > Why is it a workaround, what would be the proper solution? > Better: It is a "works for me". It may wash your windows, > mend your fences, mow your lawn... > > > > diff --git a/inc/caldav-PUT-functions.php > > > b/inc/caldav-PUT-functions.php index a1c9e3d..3f1b7d4 100644 > > > --- a/inc/caldav-PUT-functions.php > > > +++ b/inc/caldav-PUT-functions.php > > > @@ -1278,12 +1278,16 @@ function write_resource( DAVResource > > > $resource, $caldav_data, DAVResource $colle if ( $first->GetType() > > > == 'VTODO' ) $due = $first->GetPValue('DUE'); > > > $calitem_params[':due'] = $due; $dtstart = > > > $first->GetPValue('DTSTART'); > > > - if ( empty($dtstart) ) $dtstart = $due; > > > + if ( empty($dtstart) ) $dtstart = $due; > > > + if (preg_match("/^[0-9][0-9][0-9][0-9][01][0-9][0-3][0-9]$/", > > > $dtstart)) > > > + $dtstart = $dtstart . "T000000Z"; > > > $calitem_params[':dtstart'] = $dtstart; > > > > > > $dtend = $first->GetPValue('DTEND'); > > > if ( isset($dtend) && $dtend != '' ) { > > > dbg_error_log( 'PUT', ' DTEND: "%s", DTSTART: "%s", DURATION: > > > "%s"', $dtend, $dtstart, $first->GetPValue('DURATION') ); > > > + if (preg_match("/^[0-9][0-9][0-9][0-9][01][0-9][0-3][0-9]$/", > > > $dtend)) > > > + $dtend = $dtend . "T000000Z"; > > > $calitem_params[':dtend'] = $dtend; > > > $dtend = ':dtend'; > > > } -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org