From: Art Cancro Date: Sat, 28 Dec 2002 05:12:06 +0000 (+0000) Subject: * Yet another attempt at making ical_dezonify() send outgoing calendar items X-Git-Tag: v7.86~6065 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=4180f65d04e2e7ebf461c805af0002a489e93b82 * Yet another attempt at making ical_dezonify() send outgoing calendar items in UTC format. (This one will probably work -- the timestamps have the "Z" after them which signifies UTC instead of local time.) --- diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 171f2ede9..08c6c3bf2 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,9 @@ $Log$ + Revision 601.98 2002/12/28 05:12:06 ajc + * Yet another attempt at making ical_dezonify() send outgoing calendar items + in UTC format. (This one will probably work -- the timestamps have the + "Z" after them which signifies UTC instead of local time.) + Revision 601.97 2002/12/27 04:40:40 ajc * Another attempt at fixing timezones :( @@ -4332,4 +4337,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import - diff --git a/citadel/ical_dezonify.c b/citadel/ical_dezonify.c index 9297350c2..f7ead4e3d 100644 --- a/citadel/ical_dezonify.c +++ b/citadel/ical_dezonify.c @@ -2,7 +2,7 @@ * $Id$ * * Function to go through an ical component set and convert all non-UTC - * DTSTART and DTEND properties to UTC. It also strips out any VTIMEZONE + * date/time properties to UTC. It also strips out any VTIMEZONE * subcomponents afterwards, because they're irrelevant. * */ @@ -26,11 +26,12 @@ #include #include "ical_dezonify.h" + /* * Back end function for ical_dezonify() * * We supply this with the master component, the relevant component, - * and the property (which will be a DTSTART of DTEND) + * and the property (which will be a DTSTART, DTEND, etc.) * which we want to convert to UTC. */ void ical_dezonify_backend(icalcomponent *cal, @@ -65,30 +66,37 @@ void ical_dezonify_backend(icalcomponent *cal, else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { TheTime = icalproperty_get_dtend(prop); } + else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { + TheTime = icalproperty_get_due(prop); + } + else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { + TheTime = icalproperty_get_exdate(prop); + } else { return; } - /* Remove the property from the component. */ - icalcomponent_remove_property(rcal, prop); - icalproperty_free(prop); - /* Do the conversion. */ icaltimezone_convert_time(&TheTime, t, icaltimezone_get_utc_timezone() ); + TheTime.is_utc = 1; + icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); /* Now add the converted property back in. */ if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { - prop = icalproperty_new_dtstart(TheTime); - icalcomponent_add_property(rcal, prop); + icalproperty_set_dtstart(prop, TheTime); } else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { - prop = icalproperty_new_dtend(TheTime); - icalcomponent_add_property(rcal, prop); + icalproperty_set_dtend(prop, TheTime); + } + else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { + icalproperty_set_due(prop, TheTime); + } + else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { + icalproperty_set_exdate(prop, TheTime); } - } @@ -125,6 +133,8 @@ void ical_dezonify_recur(icalcomponent *cal, icalcomponent *rcal) { if ( (icalproperty_isa(p) == ICAL_DTSTART_PROPERTY) || (icalproperty_isa(p) == ICAL_DTEND_PROPERTY) + || (icalproperty_isa(p) == ICAL_DUE_PROPERTY) + || (icalproperty_isa(p) == ICAL_EXDATE_PROPERTY) ) { ical_dezonify_backend(cal, rcal, p); } @@ -150,7 +160,7 @@ void ical_dezonify(icalcomponent *cal) { icalcomponent_free(vt); } - lprintf(9, "dezonify:\n%s\n", icalcomponent_as_ical_string(cal)); } + #endif /* HAVE_ICAL_H */ diff --git a/citadel/serv_calendar.c b/citadel/serv_calendar.c index c58502bbe..018d25821 100644 --- a/citadel/serv_calendar.c +++ b/citadel/serv_calendar.c @@ -1046,8 +1046,6 @@ void ical_create_room(void) */ void ical_send_out_invitations(icalcomponent *cal) { icalcomponent *the_request = NULL; - icaltimezone *utc_timezone = NULL; - icalcomponent *utc_component = NULL; char *serialized_request = NULL; char *request_message_text = NULL; struct CtdlMessage *msg = NULL; @@ -1129,28 +1127,7 @@ void ical_send_out_invitations(icalcomponent *cal) { /* Set the method to REQUEST */ icalcomponent_set_method(encaps, ICAL_METHOD_REQUEST); - /* Insert a VTIMEZONE subcomponent telling the dumbass calendar agent - * at the other end about UTC. This is necessary because some calendar - * agents assume that an unqualified time is UTC while others assume - * it is local. - */ - utc_timezone = icaltimezone_get_utc_timezone(); - if (utc_timezone == NULL) { - lprintf(9, "%s:%d: utc_timezone is null\n",__FILE__,__LINE__); - } - else { - utc_component = icaltimezone_get_component(utc_timezone); - } - if (utc_component == NULL) { - lprintf(9, "%s:%d: utc_component is null\n",__FILE__,__LINE__); - } - else { - icalcomponent_add_component(encaps, utc_component); - } - - /* Now make sure all of the DTSTART and DTEND properties are - * labelled as UTC. (FIXME do this) - */ + /* Now make sure all of the DTSTART and DTEND properties are UTC. */ ical_dezonify(the_request); /* Here we go: put the VEVENT into the VCALENDAR. We now no longer