#include "sysdep.h"
+#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <limits.h>
#include "support.h"
#include "config.h"
-#ifdef HAVE_ICAL_H
+#ifdef CITADEL_WITH_CALENDAR_SERVICE
#include <ical.h>
#include "ical_dezonify.h"
+/*
+ * Figure out which time zone needs to be used for timestamps that are
+ * not UTC and do not have a time zone specified.
+ *
+ * FIXME - most sites are not in New York :)
+ */
+icaltimezone *get_default_icaltimezone(void) {
+
+ icaltimezone *zone = NULL;
+
+/*
+ This doesn't even belong here.
+ I'm just keeping it here until I put it somewhere permanent.
+
+ icalarray *zones;
+ int i;
+ zones = icaltimezone_get_builtin_timezones();
+ for (i = 0; i < zones->num_elements; i++) {
+ lprintf(CTDL_DEBUG, "%s\n", icaltimezone_get_location(icalarray_element_at(zones, i)));
+ }
+ */
+
+ if (!zone) {
+ zone = icaltimezone_get_builtin_timezone(config.c_default_cal_zone);
+ }
+ if (!zone) {
+ zone = icaltimezone_get_utc_timezone();
+ }
+ return zone;
+}
+
+
/*
* Back end function for ical_dezonify()
*
return;
}
- /* Do the conversion. */
- if (t != NULL) {
+ lprintf(CTDL_DEBUG, " * Was: %s\n", icaltime_as_ical_string(TheTime));
+ if (TheTime.is_utc) {
+ lprintf(CTDL_DEBUG, " * This property is ALREADY UTC.\n");
+ }
+ else {
+ /* Do the conversion. */
+ if (t != NULL) {
+ lprintf(CTDL_DEBUG, " * Timezone prop found. Converting to UTC.\n");
+ }
+ else {
+ lprintf(CTDL_DEBUG, " * Converting default timezone to UTC.\n");
+ }
+
+ if (t == NULL) {
+ t = get_default_icaltimezone();
+ }
+
icaltimezone_convert_time(&TheTime,
t,
icaltimezone_get_utc_timezone()
);
+ TheTime.is_utc = 1;
}
- TheTime.is_utc = 1;
+
icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER);
+ lprintf(CTDL_DEBUG, " * Now: %s\n", icaltime_as_ical_string(TheTime));
/* Now add the converted property back in. */
if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) {
void ical_dezonify(icalcomponent *cal) {
icalcomponent *vt = NULL;
+ lprintf(CTDL_DEBUG, "ical_dezonify() started\n");
+
/* Convert all times to UTC */
ical_dezonify_recur(cal, cal);
icalcomponent_free(vt);
}
+ lprintf(CTDL_DEBUG, "ical_dezonify() completed\n");
}
-#endif /* HAVE_ICAL_H */
+#endif /* CITADEL_WITH_CALENDAR_SERVICE */