X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit-ng%2Fserver%2Fcaldav_reports.c;fp=webcit-ng%2Fserver%2Fcaldav_reports.c;h=374d50ee5f754842dadd2fadce83e81e40641a8b;hp=646b40893660f4fbc2a0ba12d4441ca4be9ed514;hb=0b83ae50f5442c82dc8fb11ad3322d90383e34d5;hpb=473c0f696929fd377c125443fd92b1df65ddbc61 diff --git a/webcit-ng/server/caldav_reports.c b/webcit-ng/server/caldav_reports.c index 646b40893..374d50ee5 100644 --- a/webcit-ng/server/caldav_reports.c +++ b/webcit-ng/server/caldav_reports.c @@ -82,13 +82,12 @@ void caldav_xml_start(void *data, const char *el, const char **attr) { char newfilter[SIZ]; int a = 0; int len = snprintf(newfilter, SIZ, "%d|", crp->comp_filter_nesting_level - crp->filter_nest - 1); - len += snprintf(&newfilter[len], SIZ-len, "%s", &el[CALDAVLEN]); // filter name without the namespace + len += snprintf(&newfilter[len], SIZ-len, "%s", &el[CALDAVLEN]); // filter name without the namespace while (attr[a]) { len += snprintf(&newfilter[len], SIZ-len, "|%s", attr[a++]); // now save the attributes } array_append(crp->filters, newfilter); } - } @@ -263,11 +262,10 @@ void caldav_report_one_item(struct http_transaction *h, struct ctdlsession *c, S // Returns nonzero if the supplied icalcomponent occurs within the specified time range int caldav_time_range_filter_matches(icalcomponent *cal, char *start_str, char *end_str) { - struct icaltimetype start = icaltime_from_string(start_str); - syslog(LOG_DEBUG, " search start: \033[36m%-16s\033[0m (%s)", icaltime_as_ical_string_r(start), icaltime_get_tzid(start)); + // syslog(LOG_DEBUG, "caldav_time_range_filter_matches() comparing:\n\033[35m%s\033[0m", icalcomponent_as_ical_string(cal)); - struct icaltimetype end = icaltime_from_string(end_str); - syslog(LOG_DEBUG, " search end: \033[36m%-16s\033[0m (%s)", icaltime_as_ical_string_r(end), icaltime_get_tzid(end)); + // NOTE TO ME: + // Recurrence info is available at this level. We can handle it here. // IMPLEMENTATION NOTE: // ical_ctdl_is_overlap() works because icaltime_compare() is really smart. @@ -282,6 +280,12 @@ int caldav_time_range_filter_matches(icalcomponent *cal, char *start_str, char * icaltimetype dte = icalcomponent_get_dtend(cal); syslog(LOG_DEBUG, "component end: \033[36m%-16s\033[0m (%s)", icaltime_as_ical_string_r(dte), icaltime_get_tzid(dte)); + struct icaltimetype start = icaltime_from_string(start_str); + syslog(LOG_DEBUG, " search start: \033[36m%-16s\033[0m (%s)", icaltime_as_ical_string_r(start), icaltime_get_tzid(start)); + + struct icaltimetype end = icaltime_from_string(end_str); + syslog(LOG_DEBUG, " search end: \033[36m%-16s\033[0m (%s)", icaltime_as_ical_string_r(end), icaltime_get_tzid(end)); + return(ical_ctdl_is_overlap(dts, dte, start, end)); // We have a convenience function for this. } @@ -290,8 +294,8 @@ int caldav_time_range_filter_matches(icalcomponent *cal, char *start_str, char * // Returns zero if the calendar item was disqualified by a filter, nonzero if the calendar item still qualifies. int caldav_apply_filters(void *cal, Array *filters, int apply_at_level) { - int f = 0; // filter number iterator - int qual = 1; // 0 for disqualify, 1 for qualify + int f = 0; // filter number iterator + int qual = 1; // 0 for disqualify, 1 for qualify int previous_level = -1; int disregard_further_comp_filters = 0;