X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fuseredit.c;h=a6b4d4b44df152eb836e8acc4d06ee6a04e4cb2a;hb=HEAD;hp=af6a022760fe7e9400ac3580b535244961d47698;hpb=826a38d67f663f93844309e91778f036903dcce4;p=citadel.git diff --git a/webcit/useredit.c b/webcit/useredit.c index af6a02276..ce94a343d 100644 --- a/webcit/useredit.c +++ b/webcit/useredit.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996-2017 by the citadel.org team + * Copyright (c) 1996-2021 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. @@ -11,7 +11,7 @@ */ #include "webcit.h" -#include "webserver.h" + CtxType CTX_USERLIST = CTX_NONE; /* @@ -289,7 +289,7 @@ HashList *iterate_load_userlist(StrBuf *Target, WCTemplputParams *TP) StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { Hash = NewHash(1, Flathash); - + Done = 0; while (!Done) { len = StrBuf_ServGetln(Buf); if ((len <0) || @@ -308,14 +308,15 @@ HashList *iterate_load_userlist(StrBuf *Target, WCTemplputParams *TP) serv_puts("LBIO 1"); StrBuf_ServGetln(Buf); - if (GetServerStatus(Buf, NULL) == 1) + if (GetServerStatus(Buf, NULL) == 1) { Done = 0; while (!Done) { - len = StrBuf_ServGetln(Buf); - if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) - { - Done = 1; - break; + len = StrBuf_ServGetln(Buf); + if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) + { + Done = 1; + break; + } } UID = atoi(ChrPtr(Buf)); if (GetHash(Hash, IKEY(UID), &vData) && vData != 0) @@ -381,18 +382,22 @@ void tmplput_USERLIST_UID(StrBuf *Target, WCTemplputParams *TP) StrBufAppendPrintf(Target, "%d", ul->UID, 0); } + void tmplput_USERLIST_LastLogonNo(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target,"%ld", ul->LastLogonT, 0); } + + void tmplput_USERLIST_LastLogonStr(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrEscAppend(Target, NULL, asctime(localtime(&ul->LastLogonT)), 0, 0); } + void tmplput_USERLIST_nLogons(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -400,6 +405,7 @@ void tmplput_USERLIST_nLogons(StrBuf *Target, WCTemplputParams *TP) StrBufAppendPrintf(Target, "%d", ul->nLogons, 0); } + void tmplput_USERLIST_nPosts(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -407,6 +413,7 @@ void tmplput_USERLIST_nPosts(StrBuf *Target, WCTemplputParams *TP) StrBufAppendPrintf(Target, "%d", ul->nPosts, 0); } + void tmplput_USERLIST_Flags(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -414,6 +421,7 @@ void tmplput_USERLIST_Flags(StrBuf *Target, WCTemplputParams *TP) StrBufAppendPrintf(Target, "%d", ul->Flags, 0); } + void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -421,6 +429,7 @@ void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, WCTemplputParams *TP) StrBufAppendPrintf(Target, "%d", ul->DaysTillPurge, 0); } + int ConditionalUser(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -434,12 +443,14 @@ int ConditionalUser(StrBuf *Target, WCTemplputParams *TP) return 0; } + int ConditionalFlagINetEmail(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); return (ul->Flags & US_INTERNET) != 0; } + int ConditionalUserAccess(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -454,6 +465,8 @@ int ConditionalUserAccess(StrBuf *Target, WCTemplputParams *TP) == ul->AccessLevel; } + + int ConditionalHaveBIO(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); @@ -463,6 +476,13 @@ int ConditionalHaveBIO(StrBuf *Target, WCTemplputParams *TP) return ul->HasBio; } + +int ConditionalSuppressEmailFields(StrBuf *Target, WCTemplputParams *TP) +{ + return 0; // FIXME this makes all email fields display +} + + void tmplput_USER_BIO(StrBuf *Target, WCTemplputParams *TP) { int Done = 0; @@ -509,7 +529,6 @@ int Conditional_USER_HAS_PIC(StrBuf *Target, WCTemplputParams *TP) */ long locate_user_vcard_in_this_room(message_summary **VCMsg, wc_mime_attachment **VCAtt) { - wcsession *WCC = WC; HashPos *at; HashPos *att; const char *HashKey; @@ -533,8 +552,8 @@ TRYAGAIN: Stat.highest_found = (-1); /* Search for the user's vCard */ if (load_msg_ptrs("MSGS ALL||||1", NULL, NULL, &Stat, NULL, NULL, NULL, NULL, 0) > 0) { - at = GetNewHashPos(WCC->summ, 0); - while (GetNextHashPos(WCC->summ, at, &HKLen, &HashKey, &vMsg)) { + at = GetNewHashPos(WC->summ, 0); + while (GetNextHashPos(WC->summ, at, &HKLen, &HashKey, &vMsg)) { Msg = (message_summary*) vMsg; Msg->MsgBody = (wc_mime_attachment*) malloc(sizeof(wc_mime_attachment)); memset(Msg->MsgBody, 0, sizeof(wc_mime_attachment)); @@ -642,7 +661,7 @@ void display_edit_address_book_entry(const char *username, long usernum) { } /* - * burge a user + * purge a user * username the name of the user to remove */ void delete_user(char *username) { @@ -781,7 +800,7 @@ void edituser(void) { } /* Remove any naughty inappropriate whitespace */ - striplt(all_the_emails); + string_trim(all_the_emails); while (pos = strstr(all_the_emails, "\n,"), (pos != NULL)) { strcpy(pos, pos+1); } @@ -815,10 +834,9 @@ void edituser(void) { } - /* - * create a new user - * take the web environment username and create it on the citadel server + * create a new user + * (take the web environment username and create it on the citadel server) */ void create_user(void) { long FullState; @@ -880,6 +898,7 @@ void _display_edituser(void) { display_edituser(NULL, 0); } + void InitModule_USEREDIT (void) @@ -907,16 +926,13 @@ InitModule_USEREDIT RegisterNamespace("USER:BIO", 1, 2, tmplput_USER_BIO, NULL, CTX_NONE); - RegisterConditional("COND:USERNAME", 0, ConditionalUser, CTX_USERLIST); - RegisterConditional("COND:USERACCESS", 0, ConditionalUserAccess, CTX_USERLIST); - RegisterConditional("COND:USERLIST:FLAG:USE_INTERNET", 0, ConditionalFlagINetEmail, CTX_USERLIST); - RegisterConditional("COND:USERLIST:HAVEBIO", 0, ConditionalHaveBIO, CTX_USERLIST); - - RegisterConditional("COND:USER:PIC", 1, Conditional_USER_HAS_PIC, CTX_NONE); + RegisterConditional("COND:USERNAME", 0, ConditionalUser, CTX_USERLIST); + RegisterConditional("COND:USERACCESS", 0, ConditionalUserAccess, CTX_USERLIST); + RegisterConditional("COND:USERLIST:FLAG:USE_INTERNET", 0, ConditionalFlagINetEmail, CTX_USERLIST); + RegisterConditional("COND:USERLIST:HAVEBIO", 0, ConditionalHaveBIO, CTX_USERLIST); + RegisterConditional("COND:USER:PIC", 1, Conditional_USER_HAS_PIC, CTX_NONE); RegisterIterator("USERLIST", 0, NULL, iterate_load_userlist, NULL, DeleteHash, CTX_USERLIST, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); - - RegisterSortFunc(HKEY("user:name"), HKEY("userlist"),