]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomops.c
* switch room types to defines; no strcmp needed anymore.
[citadel.git] / webcit / roomops.c
index 3d5f7c560c494f2de158db9f3316fbfad1996990..761b43956a8b966fdcdb24b120e9c54169e9ed53 100644 (file)
@@ -1074,7 +1074,7 @@ void display_editroom(void)
        int i, j;
        char *tab;
        char *shared_with;
-       char *not_shared_with;
+       char *not_shared_with = NULL;
        int roompolicy = 0;
        int roomvalue = 0;
        int floorpolicy = 0;
@@ -1619,7 +1619,9 @@ void display_editroom(void)
                wc_printf("</div>");
        }
 
-       free (not_shared_with);
+       if (not_shared_with != NULL)
+               free (not_shared_with);
+
        /* Mailing list management */
        if (!strcmp(tab, "listserv")) {
                room_states RoomFlags;
@@ -3153,6 +3155,33 @@ int ConditionalRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP)
 }
 
 
+int ConditionalCurrentRoomHas_QRFlag2(StrBuf *Target, WCTemplputParams *TP)
+{
+       long QR2_CheckFlag;
+       wcsession *WCC = WC;
+       
+       QR2_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0);
+       if (QR2_CheckFlag == 0)
+               LogTemplateError(Target, "Conditional", ERR_PARM1, TP,
+                                "requires one of the #\"QR2*\"- defines or an integer flag 0 is invalid!");
+
+       return ((WCC!=NULL) &&
+               ((WCC->CurRoom.QRFlags2 & QR2_CheckFlag) != 0));
+}
+
+int ConditionalRoomHas_QRFlag2(StrBuf *Target, WCTemplputParams *TP)
+{
+       long QR2_CheckFlag;
+       folder *Folder = (folder *)(TP->Context);
+
+       QR2_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0);
+       if (QR2_CheckFlag == 0)
+               LogTemplateError(Target, "Conditional", ERR_PARM1, TP,
+                                "requires one of the #\"QR2*\"- defines or an integer flag 0 is invalid!");
+       return ((Folder->QRFlags2 & QR2_CheckFlag) != 0);
+}
+
+
 int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP)
 {
        wcsession *WCC = WC;
@@ -3166,32 +3195,31 @@ int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP)
 int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP)
 {
        wcsession *WCC = WC;
+        int whichtype;
 
        if ((WCC == NULL) ||
-           (TP->Tokens->nParameters < 3) ||
-           (TP->Tokens->Params[2]->Type != TYPE_STR)||
-           (TP->Tokens->Params[2]->len < 7))
+           (TP->Tokens->nParameters < 3))
                return 0;
-
+       whichtype = GetTemplateTokenNumber(Target, TP, 2, VIEW_BBS);
        switch(WCC->CurRoom.view) {
        case VIEW_BBS:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_BBS"));
+               return whichtype == VIEW_BBS;
        case VIEW_MAILBOX:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_MAILBOX"));
+               return  whichtype == VIEW_MAILBOX;
        case VIEW_ADDRESSBOOK:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_ADDRESSBOOK"));
+               return  whichtype == VIEW_ADDRESSBOOK;
        case VIEW_TASKS:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_TASKS"));
+               return whichtype == VIEW_TASKS;
        case VIEW_NOTES:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_NOTES"));
+               return whichtype == VIEW_NOTES;
        case VIEW_WIKI:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_WIKI"));
+               return whichtype == VIEW_WIKI;
        case VIEW_JOURNAL:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_JOURNAL"));
+               return whichtype == VIEW_JOURNAL;
        case VIEW_CALENDAR:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_CALENDAR"));
+               return whichtype == VIEW_CALENDAR;
        case VIEW_CALBRIEF:
-               return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_CALBRIEF"));
+               return whichtype == VIEW_CALBRIEF;
        default:
                return 0;
        }
@@ -3234,6 +3262,9 @@ InitModule_ROOMOPS
        RegisterConditional(HKEY("COND:THISROOM:FLAG:QR"), 0, ConditionalCurrentRoomHas_QRFlag, CTX_NONE);
        RegisterConditional(HKEY("COND:ROOM:FLAG:QR"), 0, ConditionalRoomHas_QRFlag, CTX_ROOMS);
 
+       RegisterConditional(HKEY("COND:THISROOM:FLAG:QR2"), 0, ConditionalCurrentRoomHas_QRFlag2, CTX_NONE);
+       RegisterConditional(HKEY("COND:ROOM:FLAG:QR2"), 0, ConditionalRoomHas_QRFlag2, CTX_ROOMS);
+
        REGISTERTokenParamDefine(QR_PERMANENT);
        REGISTERTokenParamDefine(QR_INUSE);
        REGISTERTokenParamDefine(QR_PRIVATE);
@@ -3281,6 +3312,17 @@ InitModule_ROOMOPS
        REGISTERTokenParamDefine(US_USER_SET);
 
 
+       REGISTERTokenParamDefine(VIEW_BBS);
+       REGISTERTokenParamDefine(VIEW_MAILBOX); 
+       REGISTERTokenParamDefine(VIEW_ADDRESSBOOK);
+       REGISTERTokenParamDefine(VIEW_CALENDAR);        
+       REGISTERTokenParamDefine(VIEW_TASKS);   
+       REGISTERTokenParamDefine(VIEW_NOTES);           
+       REGISTERTokenParamDefine(VIEW_WIKI);            
+       REGISTERTokenParamDefine(VIEW_CALBRIEF);
+       REGISTERTokenParamDefine(VIEW_JOURNAL);
+       REGISTERTokenParamDefine(VIEW_BLOG);
+
        RegisterConditional(HKEY("COND:ROOMAIDE"), 2, ConditionalRoomAide, CTX_NONE);
        RegisterConditional(HKEY("COND:ACCESS:DELETE"), 2, ConditionalRoomAcessDelete, CTX_NONE);