X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fical_subst.c;fp=webcit%2Fical_subst.c;h=adb923882994665fdf53883134a02ebc672ccf77;hb=5d2d3f4eea91c74af93c735bff7ad9955b466181;hp=11bf3d4a3eb4b8c33f6f748161a8104d1a1a806b;hpb=9f8e0bd23ce7dde31156b634f3a66bf234b11927;p=citadel.git diff --git a/webcit/ical_subst.c b/webcit/ical_subst.c index 11bf3d4a3..adb923882 100644 --- a/webcit/ical_subst.c +++ b/webcit/ical_subst.c @@ -1,4 +1,3 @@ - /* * Copyright (c) 1996-2012 by the citadel.org team * @@ -24,7 +23,8 @@ CtxType CTX_ICALTIME = CTX_NONE; CtxType CTX_ICALATTENDEE = CTX_NONE; CtxType CTX_ICALCONFLICT = CTX_NONE; -void tmplput_ICalItem(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ICalItem(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; @@ -33,32 +33,36 @@ void tmplput_ICalItem(StrBuf * Target, WCTemplputParams * TP) { Kind = (icalproperty_kind) GetTemplateTokenNumber(Target, TP, 0, ICAL_ANY_PROPERTY); p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { - str = icalproperty_get_comment(p); + str = icalproperty_get_comment (p); StrBufAppendTemplateStr(Target, TP, str, 1); } } -void tmplput_CtxICalProperty(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_CtxICalProperty(StrBuf *Target, WCTemplputParams *TP) +{ icalproperty *p = (icalproperty *) CTX(CTX_ICALPROPERTY); const char *str; - str = icalproperty_get_comment(p); + str = icalproperty_get_comment (p); StrBufAppendTemplateStr(Target, TP, str, 0); } -int ReleaseIcalSubCtx(StrBuf * Target, WCTemplputParams * TP) { +int ReleaseIcalSubCtx(StrBuf *Target, WCTemplputParams *TP) +{ WCTemplputParams *TPP = TP; UnStackContext(TP); free(TPP); return 0; } -int cond_ICalIsA(StrBuf * Target, WCTemplputParams * TP) { +int cond_ICalIsA(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalcomponent_kind c = GetTemplateTokenNumber(Target, TP, 2, ICAL_NO_COMPONENT); return icalcomponent_isa(cal) == c; } -int cond_ICalHaveItem(StrBuf * Target, WCTemplputParams * TP) { +int cond_ICalHaveItem(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; @@ -67,18 +71,24 @@ int cond_ICalHaveItem(StrBuf * Target, WCTemplputParams * TP) { p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { WCTemplputParams *DynamicTP; - - DynamicTP = (WCTemplputParams *) malloc(sizeof(WCTemplputParams)); - StackDynamicContext(TP, - DynamicTP, - p, CTX_ICALPROPERTY, 0, TP->Tokens, ReleaseIcalSubCtx, TP->Tokens->Params[1]->lvalue); + + DynamicTP = (WCTemplputParams*) malloc(sizeof(WCTemplputParams)); + StackDynamicContext (TP, + DynamicTP, + p, + CTX_ICALPROPERTY, + 0, + TP->Tokens, + ReleaseIcalSubCtx, + TP->Tokens->Params[1]->lvalue); return 1; } return 0; } -int ReleaseIcalTimeCtx(StrBuf * Target, WCTemplputParams * TP) { +int ReleaseIcalTimeCtx(StrBuf *Target, WCTemplputParams *TP) +{ WCTemplputParams *TPP = TP; UnStackContext(TP); @@ -86,7 +96,8 @@ int ReleaseIcalTimeCtx(StrBuf * Target, WCTemplputParams * TP) { return 0; } -int cond_ICalHaveTimeItem(StrBuf * Target, WCTemplputParams * TP) { +int cond_ICalHaveTimeItem(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; @@ -98,10 +109,12 @@ int cond_ICalHaveTimeItem(StrBuf * Target, WCTemplputParams * TP) { struct icaltimetype tt; WCTemplputParams *DynamicTP; - DynamicTP = (WCTemplputParams *) malloc(sizeof(WCTemplputParams) + sizeof(struct icaltimetype)); + DynamicTP = (WCTemplputParams*) malloc(sizeof(WCTemplputParams) + + sizeof(struct icaltimetype)); t = (struct icaltimetype *) &DynamicTP[1]; memset(&tt, 0, sizeof(struct icaltimetype)); - switch (Kind) { + switch (Kind) + { case ICAL_DTSTART_PROPERTY: tt = icalproperty_get_dtstart(p); break; @@ -113,8 +126,14 @@ int cond_ICalHaveTimeItem(StrBuf * Target, WCTemplputParams * TP) { } memcpy(t, &tt, sizeof(struct icaltimetype)); - StackDynamicContext(TP, - DynamicTP, t, CTX_ICALTIME, 0, TP->Tokens, ReleaseIcalTimeCtx, TP->Tokens->Params[1]->lvalue); + StackDynamicContext (TP, + DynamicTP, + t, + CTX_ICALTIME, + 0, + TP->Tokens, + ReleaseIcalTimeCtx, + TP->Tokens->Params[1]->lvalue); return 1; } @@ -122,12 +141,14 @@ int cond_ICalHaveTimeItem(StrBuf * Target, WCTemplputParams * TP) { } -int cond_ICalTimeIsDate(StrBuf * Target, WCTemplputParams * TP) { +int cond_ICalTimeIsDate(StrBuf *Target, WCTemplputParams *TP) +{ struct icaltimetype *t = (struct icaltimetype *) CTX(CTX_ICALTIME); return t->is_date; } -void tmplput_ICalTime_Date(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ICalTime_Date(StrBuf *Target, WCTemplputParams *TP) +{ struct tm d_tm; long len; char buf[256]; @@ -140,18 +161,20 @@ void tmplput_ICalTime_Date(StrBuf * Target, WCTemplputParams * TP) { len = wc_strftime(buf, sizeof(buf), "%x", &d_tm); StrBufAppendBufPlain(Target, buf, len, 0); } -void tmplput_ICalTime_Time(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ICalTime_Time(StrBuf *Target, WCTemplputParams *TP) +{ long len; char buf[256]; struct icaltimetype *t = (struct icaltimetype *) CTX(CTX_ICALTIME); - time_t tt; + time_t tt; tt = icaltime_as_timet(*t); len = webcit_fmt_date(buf, sizeof(buf), tt, DATEFMT_FULL); StrBufAppendBufPlain(Target, buf, len, 0); } -void tmplput_ICalDate(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ICalDate(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; @@ -170,7 +193,8 @@ void tmplput_ICalDate(StrBuf * Target, WCTemplputParams * TP) { } } -void tmplput_CtxICalPropertyDate(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_CtxICalPropertyDate(StrBuf *Target, WCTemplputParams *TP) +{ icalproperty *p = (icalproperty *) CTX(CTX_ICALPROPERTY); struct icaltimetype t; time_t tt; @@ -185,14 +209,15 @@ void tmplput_CtxICalPropertyDate(StrBuf * Target, WCTemplputParams * TP) { -void render_MIME_ICS_TPL(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundCharset) { +void render_MIME_ICS_TPL(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) +{ wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); icalproperty_method the_method = ICAL_METHOD_NONE; icalproperty *method = NULL; icalcomponent *cal = NULL; icalcomponent *c = NULL; - WCTemplputParams SubTP; - WCTemplputParams SuperTP; + WCTemplputParams SubTP; + WCTemplputParams SuperTP; static int divcount = 0; @@ -208,31 +233,41 @@ void render_MIME_ICS_TPL(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundC return; } - putlbstr("divname", ++divcount); + putlbstr("divname", ++divcount); putbstr("cal_partnum", NewStrBufDup(Mime->PartNum)); putlbstr("msgnum", Mime->msgnum); - memset(&SubTP, 0, sizeof(WCTemplputParams)); - memset(&SuperTP, 0, sizeof(WCTemplputParams)); + memset(&SubTP, 0, sizeof(WCTemplputParams)); + memset(&SuperTP, 0, sizeof(WCTemplputParams)); /*//ical_dezonify(cal); */ /* If the component has subcomponents, recurse through them. */ c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); - c = (c != NULL) ? c : cal; + c = (c != NULL) ? c : cal; method = icalcomponent_get_first_property(cal, ICAL_METHOD_PROPERTY); if (method != NULL) { the_method = icalproperty_get_method(method); } - StackContext(TP, &SuperTP, &the_method, CTX_ICALMETHOD, 0, TP->Tokens); - - StackContext(&SuperTP, &SubTP, c, CTX_ICAL, 0, SuperTP.Tokens); + StackContext (TP, + &SuperTP, + &the_method, + CTX_ICALMETHOD, + 0, + TP->Tokens); + + StackContext (&SuperTP, + &SubTP, + c, + CTX_ICAL, + 0, + SuperTP.Tokens); FlushStrBuf(Mime->Data); -/// DoTemplate(HKEY("ical_attachment_display"), Mime->Data, &SubTP); +/// DoTemplate(HKEY("ical_attachment_display"), Mime->Data, &SubTP); DoTemplate(HKEY("ical_edit"), Mime->Data, &SubTP); /*/ cal_process_object(Mime->Data, cal, 0, Mime->msgnum, ChrPtr(Mime->PartNum)); */ @@ -240,25 +275,35 @@ void render_MIME_ICS_TPL(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundC /* Free the memory we obtained from libical's constructor */ StrBufPlain(Mime->ContentType, HKEY("text/html")); StrBufAppendPrintf(WC->trailing_javascript, - "eventEditAllDay(); \n" - "RecurrenceShowHide(); \n" "EnableOrDisableCheckButton(); \n"); + "eventEditAllDay(); \n" + "RecurrenceShowHide(); \n" + "EnableOrDisableCheckButton(); \n" + ); UnStackContext(&SuperTP); UnStackContext(&SubTP); icalcomponent_free(cal); } -void CreateIcalComponendKindLookup(void) { +void CreateIcalComponendKindLookup(void) +{ int i = 0; - IcalComponentMap = NewHash(1, NULL); + IcalComponentMap = NewHash (1, NULL); while (icalproperty_kind_map[i].NameLen != 0) { - RegisterNS(icalproperty_kind_map[i].Name, - icalproperty_kind_map[i].NameLen, 0, 10, tmplput_ICalItem, NULL, CTX_ICAL); - Put(IcalComponentMap, - icalproperty_kind_map[i].Name, - icalproperty_kind_map[i].NameLen, &icalproperty_kind_map[i], reference_free_handler); - - + RegisterNS(icalproperty_kind_map[i].Name, + icalproperty_kind_map[i].NameLen, + 0, + 10, + tmplput_ICalItem, + NULL, + CTX_ICAL); + Put(IcalComponentMap, + icalproperty_kind_map[i].Name, + icalproperty_kind_map[i].NameLen, + &icalproperty_kind_map[i], + reference_free_handler); + + i++; } } @@ -266,7 +311,8 @@ void CreateIcalComponendKindLookup(void) { -int cond_ICalIsMethod(StrBuf * Target, WCTemplputParams * TP) { +int cond_ICalIsMethod(StrBuf *Target, WCTemplputParams *TP) +{ icalproperty_method *the_method = (icalproperty_method *) CTX(CTX_ICALMETHOD); icalproperty_method which_method; @@ -275,20 +321,23 @@ int cond_ICalIsMethod(StrBuf * Target, WCTemplputParams * TP) { } -typedef struct CalendarConflict { +typedef struct CalendarConflict +{ long is_update; long existing_msgnum; StrBuf *conflict_event_uid; StrBuf *conflict_event_summary; -} CalendarConflict; -void DeleteConflict(void *vConflict) { +}CalendarConflict; +void DeleteConflict(void *vConflict) +{ CalendarConflict *c = (CalendarConflict *) vConflict; FreeStrBuf(&c->conflict_event_uid); FreeStrBuf(&c->conflict_event_summary); free(c); } -HashList *iterate_FindConflict(StrBuf * Target, WCTemplputParams * TP) { +HashList *iterate_FindConflict(StrBuf *Target, WCTemplputParams *TP) +{ StrBuf *Line; HashList *Conflicts = NULL; CalendarConflict *Conflict; @@ -298,13 +347,16 @@ HashList *iterate_FindConflict(StrBuf * Target, WCTemplputParams * TP) { Line = NewStrBuf(); StrBuf_ServGetln(Line); - if (GetServerStatus(Line, NULL) == 1) { + if (GetServerStatus(Line, NULL) == 1) + { const char *Pos = NULL; int Done = 0; int n = 0; Conflicts = NewHash(1, Flathash); - while (!Done && (StrBuf_ServGetln(Line) >= 0)) - if ((StrLength(Line) == 3) && !strcmp(ChrPtr(Line), "000")) { + while(!Done && (StrBuf_ServGetln(Line) >= 0) ) + if ( (StrLength(Line)==3) && + !strcmp(ChrPtr(Line), "000")) + { Done = 1; } else { @@ -330,40 +382,47 @@ HashList *iterate_FindConflict(StrBuf * Target, WCTemplputParams * TP) { -void tmplput_ConflictEventMsgID(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ConflictEventMsgID(StrBuf *Target, WCTemplputParams *TP) +{ CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); char buf[sizeof(long) * 16]; snprintf(buf, sizeof(buf), "%ld", C->existing_msgnum); StrBufAppendTemplateStr(Target, TP, buf, 0); } -void tmplput_ConflictEUID(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ConflictEUID(StrBuf *Target, WCTemplputParams *TP) +{ CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); - + StrBufAppendTemplate(Target, TP, C->conflict_event_uid, 0); } -void tmplput_ConflictSummary(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_ConflictSummary(StrBuf *Target, WCTemplputParams *TP) +{ CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); StrBufAppendTemplate(Target, TP, C->conflict_event_summary, 0); } -int cond_ConflictIsUpdate(StrBuf * Target, WCTemplputParams * TP) { +int cond_ConflictIsUpdate(StrBuf *Target, WCTemplputParams *TP) +{ CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); return C->is_update; } -typedef struct CalAttendee { +typedef struct CalAttendee +{ StrBuf *AttendeeStr; icalparameter_partstat partstat; } CalAttendee; -void DeleteAtt(void *vAtt) { - CalAttendee *att = (CalAttendee *) vAtt; +void DeleteAtt(void *vAtt) +{ + CalAttendee *att = (CalAttendee*) vAtt; FreeStrBuf(&att->AttendeeStr); free(vAtt); } -HashList *iterate_get_ical_attendees(StrBuf * Target, WCTemplputParams * TP) { +HashList *iterate_get_ical_attendees(StrBuf *Target, WCTemplputParams *TP) +{ icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalparameter *partstat_param; icalproperty *p; @@ -373,18 +432,22 @@ HashList *iterate_get_ical_attendees(StrBuf * Target, WCTemplputParams * TP) { int n = 0; /* If the component has attendees, iterate through them. */ - for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY); - (p != NULL); p = icalcomponent_get_next_property(cal, ICAL_ATTENDEE_PROPERTY)) { + for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY); + (p != NULL); + p = icalcomponent_get_next_property(cal, ICAL_ATTENDEE_PROPERTY)) { ch = icalproperty_get_attendee(p); if ((ch != NULL) && !strncasecmp(ch, "MAILTO:", 7)) { - Att = (CalAttendee *) malloc(sizeof(CalAttendee)); + Att = (CalAttendee*) malloc(sizeof(CalAttendee)); /** screen name or email address */ Att->AttendeeStr = NewStrBufPlain(ch + 7, -1); StrBufTrim(Att->AttendeeStr); /** participant status */ - partstat_param = icalproperty_get_first_parameter(p, ICAL_PARTSTAT_PARAMETER); + partstat_param = icalproperty_get_first_parameter( + p, + ICAL_PARTSTAT_PARAMETER + ); if (partstat_param == NULL) { Att->partstat = ICAL_PARTSTAT_X; } @@ -400,43 +463,46 @@ HashList *iterate_get_ical_attendees(StrBuf * Target, WCTemplputParams * TP) { return Attendees; } -void tmplput_ICalAttendee(StrBuf * Target, WCTemplputParams * TP) { - CalAttendee *Att = (CalAttendee *) CTX(CTX_ICALATTENDEE); +void tmplput_ICalAttendee(StrBuf *Target, WCTemplputParams *TP) +{ + CalAttendee *Att = (CalAttendee*) CTX(CTX_ICALATTENDEE); StrBufAppendTemplate(Target, TP, Att->AttendeeStr, 0); } -int cond_ICalAttendeeState(StrBuf * Target, WCTemplputParams * TP) { - CalAttendee *Att = (CalAttendee *) CTX(CTX_ICALATTENDEE); +int cond_ICalAttendeeState(StrBuf *Target, WCTemplputParams *TP) +{ + CalAttendee *Att = (CalAttendee*) CTX(CTX_ICALATTENDEE); icalparameter_partstat which_partstat; which_partstat = GetTemplateTokenNumber(Target, TP, 2, ICAL_PARTSTAT_X); return Att->partstat == which_partstat; } - /* If the component has subcomponents, recurse through them. * / - for (c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); - (c != 0); - c = icalcomponent_get_next_component(cal, ICAL_ANY_COMPONENT)) { - // Recursively process subcomponent - cal_process_object(Target, c, recursion_level+1, msgnum, cal_partnum); - } - */ + for (c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); + (c != 0); + c = icalcomponent_get_next_component(cal, ICAL_ANY_COMPONENT)) { + // Recursively process subcomponent + cal_process_object(Target, c, recursion_level+1, msgnum, cal_partnum); + } + */ -void InitModule_ICAL_SUBST(void) { +void +InitModule_ICAL_SUBST +(void) +{ RegisterCTX(CTX_ICAL); - /* RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS_TPL, 1, 501); RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS_TPL, 1, 500); */ - CreateIcalComponendKindLookup(); - RegisterConditional("COND:ICAL:PROPERTY", 1, cond_ICalHaveItem, CTX_ICAL); - RegisterConditional("COND:ICAL:IS:A", 1, cond_ICalIsA, CTX_ICAL); + CreateIcalComponendKindLookup (); + RegisterConditional("COND:ICAL:PROPERTY", 1, cond_ICalHaveItem, CTX_ICAL); + RegisterConditional("COND:ICAL:IS:A", 1, cond_ICalIsA, CTX_ICAL); - RegisterIterator("ICAL:CONFLICT", 0, NULL, iterate_FindConflict, - NULL, DeleteHash, CTX_MIME_ATACH, CTX_ICALCONFLICT, IT_NOFLAG); + RegisterIterator("ICAL:CONFLICT", 0, NULL, iterate_FindConflict, + NULL, DeleteHash, CTX_MIME_ATACH, CTX_ICALCONFLICT, IT_NOFLAG); RegisterNamespace("ICAL:CONFLICT:MSGID", 0, 1, tmplput_ConflictEventMsgID, NULL, CTX_ICALCONFLICT); RegisterNamespace("ICAL:CONFLICT:EUID", 0, 1, tmplput_ConflictEUID, NULL, CTX_ICALCONFLICT); RegisterNamespace("ICAL:CONFLICT:SUMMARY", 0, 1, tmplput_ConflictSummary, NULL, CTX_ICALCONFLICT); @@ -444,10 +510,10 @@ void InitModule_ICAL_SUBST(void) { RegisterCTX(CTX_ICALATTENDEE); - RegisterIterator("ICAL:ATTENDEES", 0, NULL, iterate_get_ical_attendees, - NULL, DeleteHash, CTX_ICALATTENDEE, CTX_ICAL, IT_NOFLAG); + RegisterIterator("ICAL:ATTENDEES", 0, NULL, iterate_get_ical_attendees, + NULL, DeleteHash, CTX_ICALATTENDEE, CTX_ICAL, IT_NOFLAG); RegisterNamespace("ICAL:ATTENDEE", 1, 2, tmplput_ICalAttendee, NULL, CTX_ICALATTENDEE); - RegisterConditional("COND:ICAL:ATTENDEE", 1, cond_ICalAttendeeState, CTX_ICALATTENDEE); + RegisterConditional("COND:ICAL:ATTENDEE", 1, cond_ICalAttendeeState, CTX_ICALATTENDEE); RegisterCTX(CTX_ICALPROPERTY); RegisterNamespace("ICAL:ITEM", 1, 2, tmplput_ICalItem, NULL, CTX_ICAL); @@ -455,16 +521,19 @@ void InitModule_ICAL_SUBST(void) { RegisterNamespace("ICAL:PROPERTY:DATE", 0, 1, tmplput_CtxICalPropertyDate, NULL, CTX_ICALPROPERTY); RegisterCTX(CTX_ICALMETHOD); - RegisterConditional("COND:ICAL:METHOD", 1, cond_ICalIsMethod, CTX_ICALMETHOD); + RegisterConditional("COND:ICAL:METHOD", 1, cond_ICalIsMethod, CTX_ICALMETHOD); RegisterCTX(CTX_ICALTIME); - RegisterConditional("COND:ICAL:DT:PROPERTY", 1, cond_ICalHaveTimeItem, CTX_ICAL); - RegisterConditional("COND:ICAL:DT:ISDATE", 0, cond_ICalTimeIsDate, CTX_ICALTIME); + RegisterConditional("COND:ICAL:DT:PROPERTY", 1, cond_ICalHaveTimeItem, CTX_ICAL); + RegisterConditional("COND:ICAL:DT:ISDATE", 0, cond_ICalTimeIsDate, CTX_ICALTIME); RegisterNamespace("ICAL:DT:DATE", 0, 1, tmplput_ICalTime_Date, NULL, CTX_ICALTIME); RegisterNamespace("ICAL:DT:DATETIME", 0, 1, tmplput_ICalTime_Time, NULL, CTX_ICALTIME); } -void ServerShutdownModule_ICAL(void) { +void +ServerShutdownModule_ICAL +(void) +{ DeleteHash(&IcalComponentMap); }