X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fcalendar%2Fserv_calendar.c;h=02153287fd3996f8d19310e84ab945846f6b7124;hb=8179fa6e60da83d53435ed943d15a3eddb3a0d5f;hp=6c7071d4e55d33aa4b9080f3beff3964814a60a0;hpb=c55a6857b24843d83a0fd43a9613f77852ffadc6;p=citadel.git diff --git a/citadel/modules/calendar/serv_calendar.c b/citadel/modules/calendar/serv_calendar.c index 6c7071d4e..02153287f 100644 --- a/citadel/modules/calendar/serv_calendar.c +++ b/citadel/modules/calendar/serv_calendar.c @@ -17,19 +17,15 @@ #define PRODID "-//Citadel//NONSGML Citadel Calendar//EN" #include "ctdl_module.h" - #include - #include "msgbase.h" #include "internet_addressing.h" #include "serv_calendar.h" #include "room_ops.h" #include "euidindex.h" -#include "ical_dezonify.h" +#include "default_timezone.h" #include "config.h" - - struct ical_respond_data { char desired_partnum[SIZ]; icalcomponent *cal; @@ -45,7 +41,7 @@ icalcomponent *icalcomponent_new_citadel_vcalendar(void) { encaps = icalcomponent_new_vcalendar(); if (encaps == NULL) { - syslog(LOG_CRIT, "ERROR: could not allocate component!\n"); + syslog(LOG_ERR, "calendar: could not allocate component"); return NULL; } @@ -84,8 +80,6 @@ icalcomponent *ical_encapsulate_subcomponent(icalcomponent *subcomp) { } - - /* * Write a calendar object into the specified user's calendar room. * If the supplied user is NULL, this function writes the calendar object @@ -190,13 +184,13 @@ void ical_send_a_reply(icalcomponent *request, char *action) { strcpy(summary_string, "Calendar item"); if (request == NULL) { - syslog(LOG_ERR, "ERROR: trying to reply to NULL event?\n"); + syslog(LOG_ERR, "calendar: trying to reply to NULL event"); return; } the_reply = icalcomponent_new_clone(request); if (the_reply == NULL) { - syslog(LOG_ERR, "ERROR: cannot clone request\n"); + syslog(LOG_ERR, "calendar: cannot clone request"); return; } @@ -313,7 +307,6 @@ void ical_send_a_reply(icalcomponent *request, char *action) { } - /* * Callback function for mime parser that hunts for calendar content types * and turns them into calendar objects. If something is found, it is placed @@ -573,8 +566,6 @@ STARTOVER: } - - /* * Handle an incoming RSVP (object with method==ICAL_METHOD_REPLY) for a * calendar event. The object has already been deserialized for us; all @@ -598,13 +589,13 @@ int ical_update_my_calendar_with_reply(icalcomponent *cal) { /* Figure out just what event it is we're dealing with */ strcpy(uid, "--==<< InVaLiD uId >>==--"); ical_learn_uid_of_reply(uid, cal); - syslog(LOG_DEBUG, "UID of event being replied to is <%s>\n", uid); + syslog(LOG_DEBUG, "calendar: UID of event being replied to is <%s>", uid); strcpy(hold_rm, CC->room.QRname); /* save current room */ if (CtdlGetRoom(&CC->room, USERCALENDARROOM) != 0) { CtdlGetRoom(&CC->room, hold_rm); - syslog(LOG_CRIT, "cannot get user calendar room\n"); + syslog(LOG_ERR, "calendar: cannot get user calendar room"); return(2); } @@ -618,7 +609,7 @@ int ical_update_my_calendar_with_reply(icalcomponent *cal) { CtdlGetRoom(&CC->room, hold_rm); /* return to saved room */ - syslog(LOG_DEBUG, "msgnum_being_replaced == %ld\n", msgnum_being_replaced); + syslog(LOG_DEBUG, "calendar: msgnum_being_replaced == %ld", msgnum_being_replaced); if (msgnum_being_replaced == 0) { return(1); /* no calendar event found */ } @@ -644,7 +635,7 @@ int ical_update_my_calendar_with_reply(icalcomponent *cal) { original_event = oec.c; if (original_event == NULL) { - syslog(LOG_ERR, "ERROR: Original_component is NULL.\n"); + syslog(LOG_ERR, "calendar: original_component is NULL"); return(2); } @@ -847,7 +838,7 @@ int ical_ctdl_is_overlap( return(1); } - /* syslog(LOG_DEBUG, "Comparing t1start %d:%d t1end %d:%d t2start %d:%d t2end %d:%d \n", + /* syslog(LOG_DEBUG, "Comparing t1start %d:%d t1end %d:%d t2start %d:%d t2end %d:%d", t1start.hour, t1start.minute, t1end.hour, t1end.minute, t2start.hour, t2start.minute, t2end.hour, t2end.minute); */ @@ -856,16 +847,17 @@ int ical_ctdl_is_overlap( /* If event 1 ends before event 2 starts, we're in the clear. */ if (icaltime_compare(t1end, t2start) <= 0) return(0); - /* syslog(LOG_DEBUG, "first passed\n"); */ + /* syslog(LOG_DEBUG, "calendar: first passed"); */ /* If event 2 ends before event 1 starts, we're also ok. */ if (icaltime_compare(t2end, t1start) <= 0) return(0); - /* syslog(LOG_DEBUG, "second passed\n"); */ + /* syslog(LOG_DEBUG, "calendar: second passed"); */ /* Otherwise, they overlap. */ return(1); } + /* * Phase 6 of "hunt for conflicts" * called by ical_conflicts_phase5() @@ -917,7 +909,6 @@ int ical_conflicts_phase6(struct icaltimetype t1start, } - /* * Phase 5 of "hunt for conflicts" * Called by ical_conflicts_phase4() @@ -1032,8 +1023,6 @@ void ical_conflicts_phase5(struct icaltimetype t1start, } - - /* * Phase 4 of "hunt for conflicts" * Called by ical_hunt_for_conflicts_backend() @@ -1135,7 +1124,6 @@ void ical_conflicts_phase4(icalcomponent *proposed_event, } - /* * Phase 3 of "hunt for conflicts" * Called by ical_hunt_for_conflicts() @@ -1166,7 +1154,6 @@ void ical_hunt_for_conflicts_backend(long msgnum, void *data) { } - /* * Phase 2 of "hunt for conflicts" operation. * At this point we have a calendar object which represents the VEVENT that @@ -1200,7 +1187,6 @@ void ical_hunt_for_conflicts(icalcomponent *cal) { } - /* * Hunt for conflicts (Phase 1 -- retrieve the object and call Phase 2) */ @@ -1238,7 +1224,6 @@ void ical_conflicts(long msgnum, char *partnum) { } - /* * Look for busy time in a VEVENT and add it to the supplied VFREEBUSY. * @@ -1378,7 +1363,6 @@ void ical_add_to_freebusy(icalcomponent *fb, icalcomponent *top_level_cal) { } - /* * Backend for ical_freebusy() * @@ -1413,7 +1397,6 @@ void ical_freebusy_backend(long msgnum, void *data) { } - /* * Grab another user's free/busy times */ @@ -1439,7 +1422,7 @@ void ical_freebusy(char *who) { if (found_user != 0) { strcpy(buf, who); recp = validate_recipients(buf, NULL, 0); - syslog(LOG_DEBUG, "Trying <%s>\n", buf); + syslog(LOG_DEBUG, "calendar: trying <%s>", buf); if (recp != NULL) { if (recp->num_local == 1) { found_user = CtdlGetUser(&usbuf, recp->recp_local); @@ -1453,7 +1436,7 @@ void ical_freebusy(char *who) { */ if (found_user != 0) { snprintf(buf, sizeof buf, "%s@%s", who, CtdlGetConfigStr("c_fqdn")); - syslog(LOG_DEBUG, "Trying <%s>\n", buf); + syslog(LOG_DEBUG, "calendar: trying <%s>", buf); recp = validate_recipients(buf, NULL, 0); if (recp != NULL) { if (recp->num_local == 1) { @@ -1476,7 +1459,7 @@ void ical_freebusy(char *who) { if ( (!strcasecmp(type, "localhost")) || (!strcasecmp(type, "directory")) ) { snprintf(buf, sizeof buf, "%s@%s", who, host); - syslog(LOG_DEBUG, "Trying <%s>\n", buf); + syslog(LOG_DEBUG, "calendar: trying <%s>", buf); recp = validate_recipients(buf, NULL, 0); if (recp != NULL) { if (recp->num_local == 1) { @@ -1505,11 +1488,10 @@ void ical_freebusy(char *who) { } /* Create a VFREEBUSY subcomponent */ - syslog(LOG_DEBUG, "Creating VFREEBUSY component\n"); + syslog(LOG_DEBUG, "calendar: creating VFREEBUSY component"); fb = icalcomponent_new_vfreebusy(); if (fb == NULL) { - cprintf("%d Internal error: cannot allocate memory.\n", - ERROR + INTERNAL_ERROR); + cprintf("%d Internal error: cannot allocate memory.\n", ERROR + INTERNAL_ERROR); CtdlGetRoom(&CC->room, hold_rm); return; } @@ -1532,7 +1514,7 @@ void ical_freebusy(char *who) { icalcomponent_add_property(fb, icalproperty_new_organizer(buf)); /* Add busy time from events */ - syslog(LOG_DEBUG, "Adding busy time from events\n"); + syslog(LOG_DEBUG, "calendar: adding busy time from events"); CtdlForEachMessage(MSGS_ALL, 0, NULL, NULL, NULL, ical_freebusy_backend, (void *)fb ); /* If values for DTSTART and DTEND are still not present, set them @@ -1546,7 +1528,7 @@ void ical_freebusy(char *who) { } /* Put the freebusy component into the calendar component */ - syslog(LOG_DEBUG, "Encapsulating\n"); + syslog(LOG_DEBUG, "calendar: encapsulating"); encaps = ical_encapsulate_subcomponent(fb); if (encaps == NULL) { icalcomponent_free(fb); @@ -1557,11 +1539,11 @@ void ical_freebusy(char *who) { } /* Set the method to PUBLISH */ - syslog(LOG_DEBUG, "Setting method\n"); + syslog(LOG_DEBUG, "calendar: setting method"); icalcomponent_set_method(encaps, ICAL_METHOD_PUBLISH); /* Serialize it */ - syslog(LOG_DEBUG, "Serializing\n"); + syslog(LOG_DEBUG, "calendar: serializing"); serialized_request = icalcomponent_as_ical_string_r(encaps); icalcomponent_free(encaps); /* Don't need this anymore. */ @@ -1577,7 +1559,6 @@ void ical_freebusy(char *who) { } - /* * Backend for ical_getics() * @@ -1651,7 +1632,6 @@ void ical_getics_backend(long msgnum, void *data) { } - /* * Retrieve all of the calendar items in the current room, and output them * as a single icalendar object. @@ -1669,7 +1649,7 @@ void ical_getics(void) encaps = icalcomponent_new_vcalendar(); if (encaps == NULL) { - syslog(LOG_ALERT, "ERROR: could not allocate component!\n"); + syslog(LOG_ERR, "calendar: could not allocate component!"); cprintf("%d Could not allocate memory\n", ERROR+INTERNAL_ERROR); return; } @@ -1795,7 +1775,7 @@ void ical_putics(void) HashPos = GetNewHashPos(tzidlist, 0); while (GetNextHashPos(tzidlist, HashPos, &len, &Key, &Value)) { - syslog(LOG_DEBUG, "Attaching timezone '%s'\n", (char*) Value); + syslog(LOG_DEBUG, "calendar: attaching timezone '%s'", (char*) Value); icaltimezone *t = NULL; /* First look for a timezone attached to the original calendar */ @@ -1860,10 +1840,8 @@ void cmd_ical(char *argbuf) } if (!strcasecmp(subcmd, "sgi")) { - CIT_ICAL->server_generated_invitations = - (extract_int(argbuf, 1) ? 1 : 0) ; - cprintf("%d %d\n", - CIT_OK, CIT_ICAL->server_generated_invitations); + CIT_ICAL->server_generated_invitations = (extract_int(argbuf, 1) ? 1 : 0) ; + cprintf("%d %d\n", CIT_OK, CIT_ICAL->server_generated_invitations); return; } @@ -1906,7 +1884,6 @@ void cmd_ical(char *argbuf) } - /* * We don't know if the calendar room exists so we just create it at login */ @@ -1920,7 +1897,7 @@ void ical_CtdlCreateRoom(void) /* Set expiration policy to manual; otherwise objects will be lost! */ if (CtdlGetRoomLock(&qr, USERCALENDARROOM)) { - syslog(LOG_CRIT, "Couldn't get the user calendar room!\n"); + syslog(LOG_ERR, "calendar: couldn't get the user calendar room"); return; } qr.QRep.expire_mode = EXPIRE_MANUAL; @@ -1937,7 +1914,7 @@ void ical_CtdlCreateRoom(void) /* Set expiration policy to manual; otherwise objects will be lost! */ if (CtdlGetRoomLock(&qr, USERTASKSROOM)) { - syslog(LOG_CRIT, "Couldn't get the user calendar room!\n"); + syslog(LOG_ERR, "calendar: couldn't get the user calendar room!"); return; } qr.QRep.expire_mode = EXPIRE_MANUAL; @@ -1954,7 +1931,7 @@ void ical_CtdlCreateRoom(void) /* Set expiration policy to manual; otherwise objects will be lost! */ if (CtdlGetRoomLock(&qr, USERNOTESROOM)) { - syslog(LOG_CRIT, "Couldn't get the user calendar room!\n"); + syslog(LOG_ERR, "calendar: couldn't get the user calendar room!"); return; } qr.QRep.expire_mode = EXPIRE_MANUAL; @@ -2003,11 +1980,10 @@ void ical_send_out_invitations(icalcomponent *top_level_cal, icalcomponent *cal) const char *tzidc = NULL; if (cal == NULL) { - syslog(LOG_ERR, "ERROR: trying to reply to NULL event?\n"); + syslog(LOG_ERR, "calendar: trying to reply to NULL event?"); return; } - /* If this is a VCALENDAR component, look for a VEVENT subcomponent. */ if (icalcomponent_isa(cal) == ICAL_VCALENDAR_COMPONENT) { ical_send_out_invitations(top_level_cal, @@ -2021,7 +1997,7 @@ void ical_send_out_invitations(icalcomponent *top_level_cal, icalcomponent *cal) /* Clone the event */ the_request = icalcomponent_new_clone(cal); if (the_request == NULL) { - syslog(LOG_ERR, "ERROR: cannot clone calendar object\n"); + syslog(LOG_ERR, "calendar: cannot clone calendar object"); return; } @@ -2055,7 +2031,7 @@ void ical_send_out_invitations(icalcomponent *top_level_cal, icalcomponent *cal) } } - syslog(LOG_DEBUG, "<%d> attendees: <%s>\n", num_attendees, attendees_string); + syslog(LOG_DEBUG, "calendar: <%d> attendees: <%s>", num_attendees, attendees_string); /* If there are no attendees, there are no invitations to send, so... * don't bother putting one together! Punch out, Maverick! @@ -2068,7 +2044,7 @@ void ical_send_out_invitations(icalcomponent *top_level_cal, icalcomponent *cal) /* Encapsulate the VEVENT component into a complete VCALENDAR */ encaps = icalcomponent_new_vcalendar(); if (encaps == NULL) { - syslog(LOG_ALERT, "ERROR: could not allocate component!\n"); + syslog(LOG_ERR, "calendar: could not allocate component!"); icalcomponent_free(the_request); return; } @@ -2145,8 +2121,7 @@ void ical_send_out_invitations(icalcomponent *top_level_cal, icalcomponent *cal) attached_zones[num_zones_attached++] = z; } - icalproperty_set_parameter(p, - icalparameter_new_tzid(icaltimezone_get_tzid(z)) + icalproperty_set_parameter(p, icalparameter_new_tzid(icaltimezone_get_tzid(z)) ); } } @@ -2220,7 +2195,7 @@ void ical_saving_vevent(icalcomponent *top_level_cal, icalcomponent *cal) { icalproperty *organizer = NULL; char organizer_string[SIZ]; - syslog(LOG_DEBUG, "ical_saving_vevent() has been called!\n"); + syslog(LOG_DEBUG, "calendar: ical_saving_vevent() has been called"); /* Don't send out invitations unless the client wants us to. */ if (CIT_ICAL->server_generated_invitations == 0) { @@ -2269,7 +2244,6 @@ void ical_saving_vevent(icalcomponent *top_level_cal, icalcomponent *cal) { } - /* * Back end for ical_obj_beforesave() * This hunts for the UID of the calendar event (becomes Citadel msg EUID), @@ -2332,7 +2306,7 @@ void ical_obj_beforesave_backend(char *name, char *filename, char *partnum, pch = icalproperty_get_comment(p); if (!IsEmptyStr(pch)) { CM_SetField(msg, eExclusiveID, pch, strlen(pch)); - syslog(LOG_DEBUG, "Saving calendar UID <%s>\n", pch); + syslog(LOG_DEBUG, "calendar: saving calendar UID <%s>", pch); } } @@ -2369,8 +2343,6 @@ void ical_obj_beforesave_backend(char *name, char *filename, char *partnum, } - - /* * See if we need to prevent the object from being saved (we don't allow * MIME types other than text/calendar in "calendar" or "tasks" rooms). @@ -2389,7 +2361,7 @@ int ical_obj_beforesave(struct CtdlMessage *msg, recptypes *recp) /* It must be an RFC822 message! */ if (msg->cm_format_type != 4) { - syslog(LOG_DEBUG, "Rejecting non-RFC822 message\n"); + syslog(LOG_DEBUG, "calendar: rejecting non-RFC822 message"); return(1); /* You tried to save a non-RFC822 message! */ } @@ -2482,6 +2454,7 @@ void ical_session_startup(void) { memset(CIT_ICAL, 0, sizeof(struct cit_ical)); } + void ical_session_shutdown(void) { free(CIT_ICAL); } @@ -2490,9 +2463,7 @@ void ical_session_shutdown(void) { /* * Back end for ical_fixed_output() */ -void ical_fixed_output_backend(icalcomponent *cal, - int recursion_level -) { +void ical_fixed_output_backend(icalcomponent *cal, int recursion_level) { icalcomponent *c; icalproperty *p; char buf[256]; @@ -2537,7 +2508,6 @@ void ical_fixed_output_backend(icalcomponent *cal, } - /* * Function to output iCalendar data as plain text. Nobody uses MSG0 * anymore, so really this is just so we expose the vCard data to the full @@ -2563,12 +2533,11 @@ void ical_fixed_output(char *ptr, int len) { } - -void serv_calendar_destroy(void) -{ +void serv_calendar_destroy(void) { icaltimezone_free_builtin_timezones(); } + /* * Register this module with the Citadel server. */ @@ -2592,14 +2561,14 @@ CTDL_MODULE_INIT(calendar) CtdlRegisterMessageHook(ical_obj_beforesave, EVT_BEFORESAVE); CtdlRegisterMessageHook(ical_obj_aftersave, EVT_AFTERSAVE); CtdlRegisterSessionHook(ical_CtdlCreateRoom, EVT_LOGIN, PRIO_LOGIN + 1); - CtdlRegisterProtoHook(cmd_ical, "ICAL", "Citadel iCal commands"); + CtdlRegisterProtoHook(cmd_ical, "ICAL", "Citadel iCalendar commands"); CtdlRegisterSessionHook(ical_session_startup, EVT_START, PRIO_START + 1); CtdlRegisterSessionHook(ical_session_shutdown, EVT_STOP, PRIO_STOP + 80); CtdlRegisterFixedOutputHook("text/calendar", ical_fixed_output); CtdlRegisterFixedOutputHook("application/ics", ical_fixed_output); CtdlRegisterCleanupHook(serv_calendar_destroy); } - + /* return our module name for the log */ return "calendar"; }