]> code.citadel.org Git - citadel.git/blobdiff - citadel/ical_dezonify.c
Added a global system config item for the default time
[citadel.git] / citadel / ical_dezonify.c
index 318a2ef631d5c2d7d4356755e823e8c5be51da83..ec5d868687947016b479c73f68d0f46e70b7a7c9 100644 (file)
 #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()
  *
@@ -79,6 +111,7 @@ void ical_dezonify_backend(icalcomponent *cal,
                return;
        }
 
+       lprintf(CTDL_DEBUG, "                * Was: %s\n", icaltime_as_ical_string(TheTime));
        if (TheTime.is_utc) {
                lprintf(CTDL_DEBUG, "                * This property is ALREADY UTC.\n");
        }
@@ -86,17 +119,24 @@ void ical_dezonify_backend(icalcomponent *cal,
                /* Do the conversion. */
                if (t != NULL) {
                        lprintf(CTDL_DEBUG, "                * Timezone prop found.  Converting to UTC.\n");
-                       icaltimezone_convert_time(&TheTime,
-                                               t,
-                                               icaltimezone_get_utc_timezone()
-                       );
-                       TheTime.is_utc = 1;
                }
                else {
-                       lprintf(CTDL_DEBUG, "                * Not UTC but no tzid found; WTF??\n");
+                       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;
        }
+
        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) {