X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fuseredit.c;h=a6b4d4b44df152eb836e8acc4d06ee6a04e4cb2a;hb=HEAD;hp=0d334bdcd2cf01a2ab806831f3a5d8d91cf66f68;hpb=c6aec42f213ec284e34648f3d69bcf927dccddb1;p=citadel.git diff --git a/webcit/useredit.c b/webcit/useredit.c index 0d334bdcd..ce94a343d 100644 --- a/webcit/useredit.c +++ b/webcit/useredit.c @@ -1,4 +1,3 @@ - /* * Copyright (c) 1996-2021 by the citadel.org team * @@ -12,19 +11,19 @@ */ #include "webcit.h" -#include "webserver.h" -CtxType CTX_USERLIST = CTX_NONE; +CtxType CTX_USERLIST = CTX_NONE; /* * show a list of available users to edit them * message the header message??? * preselect = which user should be selected in the browser */ -void select_user_to_edit(const char *preselect) { +void select_user_to_edit(const char *preselect) +{ output_headers(1, 0, 0, 0, 1, 0); do_template("aide_edituser_select"); - end_burst(); + end_burst(); } @@ -48,34 +47,35 @@ typedef struct _UserListEntry { } UserListEntry; -UserListEntry *NewUserListOneEntry(StrBuf * SerializedUser, const char *Pos) { +UserListEntry* NewUserListOneEntry(StrBuf *SerializedUser, const char *Pos) +{ UserListEntry *ul; - if (StrLength(SerializedUser) < 8) + if (StrLength(SerializedUser) < 8) return NULL; - ul = (UserListEntry *) malloc(sizeof(UserListEntry)); + ul = (UserListEntry*) malloc(sizeof(UserListEntry)); ul->UserName = NewStrBuf(); ul->Passvoid = NewStrBuf(); ul->PrimaryEmail = NewStrBuf(); ul->OtherEmails = NewStrBuf(); - StrBufExtract_NextToken(ul->UserName, SerializedUser, &Pos, '|'); - StrBufExtract_NextToken(ul->Passvoid, SerializedUser, &Pos, '|'); - ul->Flags = StrBufExtractNext_unsigned_long(SerializedUser, &Pos, '|'); - ul->nLogons = StrBufExtractNext_int(SerializedUser, &Pos, '|'); - ul->nPosts = StrBufExtractNext_int(SerializedUser, &Pos, '|'); - ul->AccessLevel = StrBufExtractNext_int(SerializedUser, &Pos, '|'); - ul->UID = StrBufExtractNext_int(SerializedUser, &Pos, '|'); - ul->LastLogonT = StrBufExtractNext_long(SerializedUser, &Pos, '|'); - ul->DaysTillPurge = StrBufExtractNext_int(SerializedUser, &Pos, '|'); + StrBufExtract_NextToken(ul->UserName, SerializedUser, &Pos, '|'); + StrBufExtract_NextToken(ul->Passvoid, SerializedUser, &Pos, '|'); + ul->Flags = StrBufExtractNext_unsigned_long(SerializedUser, &Pos, '|'); + ul->nLogons = StrBufExtractNext_int( SerializedUser, &Pos, '|'); + ul->nPosts = StrBufExtractNext_int( SerializedUser, &Pos, '|'); + ul->AccessLevel = StrBufExtractNext_int( SerializedUser, &Pos, '|'); + ul->UID = StrBufExtractNext_int( SerializedUser, &Pos, '|'); + ul->LastLogonT = StrBufExtractNext_long( SerializedUser, &Pos, '|'); + ul->DaysTillPurge = StrBufExtractNext_int( SerializedUser, &Pos, '|'); return ul; } -void DeleteUserListEntry(void *vUserList) { - UserListEntry *ul = (UserListEntry *) vUserList; - if (!ul) - return; +void DeleteUserListEntry(void *vUserList) +{ + UserListEntry *ul = (UserListEntry*) vUserList; + if (!ul) return; FreeStrBuf(&ul->UserName); FreeStrBuf(&ul->Passvoid); FreeStrBuf(&ul->PrimaryEmail); @@ -83,26 +83,27 @@ void DeleteUserListEntry(void *vUserList) { free(ul); } -UserListEntry *NewUserListEntry(StrBuf * SerializedUserList) { +UserListEntry* NewUserListEntry(StrBuf *SerializedUserList) +{ const char *Pos = NULL; UserListEntry *ul; - if (StrLength(SerializedUserList) < 8) + if (StrLength(SerializedUserList) < 8) return NULL; - ul = (UserListEntry *) malloc(sizeof(UserListEntry)); + ul = (UserListEntry*) malloc(sizeof(UserListEntry)); ul->UserName = NewStrBuf(); ul->Passvoid = NewStrBuf(); ul->PrimaryEmail = NewStrBuf(); ul->OtherEmails = NewStrBuf(); - StrBufExtract_NextToken(ul->UserName, SerializedUserList, &Pos, '|'); - ul->AccessLevel = StrBufExtractNext_int(SerializedUserList, &Pos, '|'); - ul->UID = StrBufExtractNext_int(SerializedUserList, &Pos, '|'); - ul->LastLogonT = StrBufExtractNext_long(SerializedUserList, &Pos, '|'); - ul->nLogons = StrBufExtractNext_int(SerializedUserList, &Pos, '|'); - ul->nPosts = StrBufExtractNext_int(SerializedUserList, &Pos, '|'); - StrBufExtract_NextToken(ul->Passvoid, SerializedUserList, &Pos, '|'); + StrBufExtract_NextToken(ul->UserName, SerializedUserList, &Pos, '|'); + ul->AccessLevel = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); + ul->UID = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); + ul->LastLogonT = StrBufExtractNext_long(SerializedUserList, &Pos, '|'); + ul->nLogons = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); + ul->nPosts = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); + StrBufExtract_NextToken(ul->Passvoid, SerializedUserList, &Pos, '|'); ul->Flags = 0; ul->HasBio = 0; ul->DaysTillPurge = -1; @@ -112,45 +113,51 @@ UserListEntry *NewUserListEntry(StrBuf * SerializedUserList) { /* * Sort by Username */ -int CompareUserListName(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareUserListName(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return strcmp(ChrPtr(u1->UserName), ChrPtr(u2->UserName)); } -int CompareUserListNameRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareUserListNameRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return strcmp(ChrPtr(u2->UserName), ChrPtr(u1->UserName)); } -int GroupchangeUserListName(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangeUserListName(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return ChrPtr(u2->UserName)[0] != ChrPtr(u1->UserName)[0]; } /* * Sort by access level */ -int CompareAccessLevel(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareAccessLevel(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->AccessLevel > u2->AccessLevel); } -int CompareAccessLevelRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareAccessLevelRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->AccessLevel > u1->AccessLevel); } -int GroupchangeAccessLevel(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangeAccessLevel(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return u2->AccessLevel != u1->AccessLevel; } @@ -158,23 +165,26 @@ int GroupchangeAccessLevel(const void *vUser1, const void *vUser2) { /* * Sort by UID */ -int CompareUID(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareUID(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->UID > u2->UID); } -int CompareUIDRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareUIDRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->UID > u1->UID); } -int GroupchangeUID(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangeUID(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->UID / 10) != (u1->UID / 10); } @@ -182,23 +192,26 @@ int GroupchangeUID(const void *vUser1, const void *vUser2) { /* * Sort By Date /// TODO! */ -int CompareLastLogon(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareLastLogon(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->LastLogonT > u2->LastLogonT); } -int CompareLastLogonRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int CompareLastLogonRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->LastLogonT > u1->LastLogonT); } -int GroupchangeLastLogon(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangeLastLogon(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->LastLogonT != u1->LastLogonT); } @@ -206,23 +219,26 @@ int GroupchangeLastLogon(const void *vUser1, const void *vUser2) { /* * Sort By Number of Logons */ -int ComparenLogons(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int ComparenLogons(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->nLogons > u2->nLogons); } -int ComparenLogonsRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int ComparenLogonsRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->nLogons > u1->nLogons); } -int GroupchangenLogons(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangenLogons(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->nLogons / 100) != (u1->nLogons / 100); } @@ -230,41 +246,45 @@ int GroupchangenLogons(const void *vUser1, const void *vUser2) { /* * Sort By Number of Posts */ -int ComparenPosts(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int ComparenPosts(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->nPosts > u2->nPosts); } -int ComparenPostsRev(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) GetSearchPayload(vUser1); - UserListEntry *u2 = (UserListEntry *) GetSearchPayload(vUser2); +int ComparenPostsRev(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); + UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->nPosts > u1->nPosts); } -int GroupchangenPosts(const void *vUser1, const void *vUser2) { - UserListEntry *u1 = (UserListEntry *) vUser1; - UserListEntry *u2 = (UserListEntry *) vUser2; +int GroupchangenPosts(const void *vUser1, const void *vUser2) +{ + UserListEntry *u1 = (UserListEntry*) vUser1; + UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->nPosts / 100) != (u1->nPosts / 100); } -HashList *iterate_load_userlist(StrBuf * Target, WCTemplputParams * TP) { +HashList *iterate_load_userlist(StrBuf *Target, WCTemplputParams *TP) +{ int Done = 0; CompareFunc SortIt; HashList *Hash = NULL; StrBuf *Buf; - UserListEntry *ul; + UserListEntry* ul; int len; int UID; void *vData; WCTemplputParams SubTP; - memset(&SubTP, 0, sizeof(WCTemplputParams)); - serv_puts("LIST"); + memset(&SubTP, 0, sizeof(WCTemplputParams)); + serv_puts("LIST"); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { @@ -272,7 +292,10 @@ HashList *iterate_load_userlist(StrBuf * Target, WCTemplputParams * TP) { Done = 0; while (!Done) { len = StrBuf_ServGetln(Buf); - if ((len < 0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) { + if ((len <0) || + ((len == 3) && + !strcmp(ChrPtr(Buf), "000"))) + { Done = 1; break; } @@ -280,7 +303,7 @@ HashList *iterate_load_userlist(StrBuf * Target, WCTemplputParams * TP) { if (ul == NULL) continue; - Put(Hash, IKEY(ul->UID), ul, DeleteUserListEntry); + Put(Hash, IKEY(ul->UID), ul, DeleteUserListEntry); } serv_puts("LBIO 1"); @@ -289,14 +312,16 @@ HashList *iterate_load_userlist(StrBuf * Target, WCTemplputParams * TP) { Done = 0; while (!Done) { len = StrBuf_ServGetln(Buf); - if ((len < 0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) { + if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) + { Done = 1; break; } } UID = atoi(ChrPtr(Buf)); - if (GetHash(Hash, IKEY(UID), &vData) && vData != 0) { - ul = (UserListEntry *) vData; + if (GetHash(Hash, IKEY(UID), &vData) && vData != 0) + { + ul = (UserListEntry*)vData; ul->HasBio = 1; } } @@ -304,139 +329,162 @@ HashList *iterate_load_userlist(StrBuf * Target, WCTemplputParams * TP) { SortIt = RetrieveSort(&SubTP, HKEY("USER"), HKEY("user:uid"), 0); if (SortIt != NULL) SortByPayload(Hash, SortIt); - else + else SortByPayload(Hash, CompareUID); - } + } FreeStrBuf(&Buf); return Hash; } -void tmplput_USERLIST_UserName(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_UserName(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->UserName, 0); } -void tmplput_USERLIST_Password(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_Password(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->Passvoid, 0); } -void tmplput_USERLIST_PrimaryEmail(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_PrimaryEmail(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->PrimaryEmail, 0); } -void tmplput_USERLIST_OtherEmails(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_OtherEmails(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->OtherEmails, 0); } -void tmplput_USERLIST_AccessLevelNo(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->AccessLevel, 0); } -void tmplput_USERLIST_AccessLevelStr(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); - +void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); + StrBufAppendBufPlain(Target, _(axdefs[ul->AccessLevel]), -1, 0); } -void tmplput_USERLIST_UID(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_UID(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->UID, 0); } -void tmplput_USERLIST_LastLogonNo(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_LastLogonNo(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); - StrBufAppendPrintf(Target, "%ld", ul->LastLogonT, 0); + StrBufAppendPrintf(Target,"%ld", ul->LastLogonT, 0); } -void tmplput_USERLIST_LastLogonStr(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +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); +void tmplput_USERLIST_nLogons(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->nLogons, 0); } -void tmplput_USERLIST_nPosts(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_nPosts(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->nPosts, 0); } -void tmplput_USERLIST_Flags(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_Flags(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->Flags, 0); } -void tmplput_USERLIST_DaysTillPurge(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->DaysTillPurge, 0); } -int ConditionalUser(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +int ConditionalUser(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); if (havebstr("usernum")) { return ibstr("usernum") == ul->UID; } else if (havebstr("username")) { return strcmp(bstr("username"), ChrPtr(ul->UserName)) == 0; } - else + else return 0; } -int ConditionalFlagINetEmail(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); +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); - +int ConditionalUserAccess(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); + if (ul == NULL) return 0; - return GetTemplateTokenNumber(Target, TP, 3, AxNewU) - == ul->AccessLevel; + return GetTemplateTokenNumber(Target, + TP, + 3, + AxNewU) + == + ul->AccessLevel; } -int ConditionalHaveBIO(StrBuf * Target, WCTemplputParams * TP) { - UserListEntry *ul = (UserListEntry *) CTX(CTX_USERLIST); - +int ConditionalHaveBIO(StrBuf *Target, WCTemplputParams *TP) +{ + UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); + if (ul == NULL) return 0; return ul->HasBio; } -int ConditionalSuppressEmailFields(StrBuf * Target, WCTemplputParams * TP) { +int ConditionalSuppressEmailFields(StrBuf *Target, WCTemplputParams *TP) +{ return 0; // FIXME this makes all email fields display } -void tmplput_USER_BIO(StrBuf * Target, WCTemplputParams * TP) { +void tmplput_USER_BIO(StrBuf *Target, WCTemplputParams *TP) +{ int Done = 0; StrBuf *Buf; const char *who; @@ -452,8 +500,9 @@ void tmplput_USER_BIO(StrBuf * Target, WCTemplputParams * TP) { StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { StrBuf *BioBuf = NewStrBufPlain(NULL, SIZ); - while (!Done && StrBuf_ServGetln(Buf) >= 0) { - if ((StrLength(Buf) == 3) && !strcmp(ChrPtr(Buf), "000")) + while (!Done && StrBuf_ServGetln(Buf)>=0) { + if ( (StrLength(Buf)==3) && + !strcmp(ChrPtr(Buf), "000")) Done = 1; else { StrBufAppendBuf(BioBuf, Buf, 0); @@ -467,9 +516,10 @@ void tmplput_USER_BIO(StrBuf * Target, WCTemplputParams * TP) { } -int Conditional_USER_HAS_PIC(StrBuf * Target, WCTemplputParams * TP) { +int Conditional_USER_HAS_PIC(StrBuf *Target, WCTemplputParams *TP) +{ // ajc 2016apr10 this needs to be re-evaluated with the new protocol - return (0); + return(0); } @@ -477,7 +527,8 @@ int Conditional_USER_HAS_PIC(StrBuf * Target, WCTemplputParams * TP) { * Locate the message number of a user's vCard in the current room * Returns the message id of his vcard */ -long locate_user_vcard_in_this_room(message_summary ** VCMsg, wc_mime_attachment ** VCAtt) { +long locate_user_vcard_in_this_room(message_summary **VCMsg, wc_mime_attachment **VCAtt) +{ HashPos *at; HashPos *att; const char *HashKey; @@ -494,7 +545,7 @@ long locate_user_vcard_in_this_room(message_summary ** VCMsg, wc_mime_attachment Buf = NewStrBuf(); - TRYAGAIN: +TRYAGAIN: memset(&Stat, 0, sizeof(SharedMessageStatus)); Stat.maxload = 10000; Stat.lowest_found = (-1); @@ -503,20 +554,22 @@ long locate_user_vcard_in_this_room(message_summary ** VCMsg, wc_mime_attachment if (load_msg_ptrs("MSGS ALL||||1", NULL, NULL, &Stat, NULL, NULL, NULL, NULL, 0) > 0) { 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)); + Msg = (message_summary*) vMsg; + Msg->MsgBody = (wc_mime_attachment*) malloc(sizeof(wc_mime_attachment)); memset(Msg->MsgBody, 0, sizeof(wc_mime_attachment)); Msg->MsgBody->msgnum = Msg->msgnum; load_message(Msg, FoundCharset, &Error); - + if (Msg->AllAttach != NULL) { att = GetNewHashPos(Msg->AllAttach, 0); - while (GetNextHashPos(Msg->AllAttach, att, &HKLen, &HashKey, &vMsg) && (vcard_msgnum == -1)) { - Att = (wc_mime_attachment *) vMsg; - if ((strcasecmp(ChrPtr(Att->ContentType), "text/x-vcard") == 0) - || (strcasecmp(ChrPtr(Att->ContentType), "text/vcard") == 0) - ) { + while (GetNextHashPos(Msg->AllAttach, att, &HKLen, &HashKey, &vMsg) && + (vcard_msgnum == -1)) { + Att = (wc_mime_attachment*) vMsg; + if ( + (strcasecmp(ChrPtr(Att->ContentType), "text/x-vcard") == 0) + || (strcasecmp(ChrPtr(Att->ContentType), "text/vcard") == 0) + ) { *VCAtt = Att; *VCMsg = Msg; vcard_msgnum = Msg->msgnum; @@ -528,9 +581,9 @@ long locate_user_vcard_in_this_room(message_summary ** VCMsg, wc_mime_attachment DeleteHashPos(&att); } FreeStrBuf(&Error); /* don't care... */ - + } - DeleteHashPos(&at); + DeleteHashPos(&at); } /* If there's no vcard, create one */ @@ -546,14 +599,14 @@ long locate_user_vcard_in_this_room(message_summary ** VCMsg, wc_mime_attachment serv_puts("end:vcard"); serv_puts("000"); } - else + else syslog(LOG_WARNING, "Error while creating user vcard: %s\n", ChrPtr(Buf)); goto TRYAGAIN; } FreeStrBuf(&Buf); FreeStrBuf(&FoundCharset); - return (vcard_msgnum); + return(vcard_msgnum); } @@ -599,7 +652,11 @@ void display_edit_address_book_entry(const char *username, long usernum) { return; } - do_edit_vcard(vcard_msgnum, "1", VCMsg, VCAtt, "select_user_to_edit", ChrPtr(roomname)); + do_edit_vcard(vcard_msgnum, "1", + VCMsg, + VCAtt, + "select_user_to_edit", + ChrPtr(roomname)); FreeStrBuf(&roomname); } @@ -609,20 +666,20 @@ void display_edit_address_book_entry(const char *username, long usernum) { */ void delete_user(char *username) { StrBuf *Buf; - + Buf = NewStrBuf(); serv_printf("ASUP %s|0|0|0|0|0|", username); StrBuf_ServGetln(Buf); GetServerStatusMsg(Buf, NULL, 1, 2); - select_user_to_edit(bstr("username")); + select_user_to_edit( bstr("username")); FreeStrBuf(&Buf); } - + void display_edituser(const char *supplied_username, int is_new) { const char *Pos; - UserListEntry *UL; + UserListEntry* UL; StrBuf *Buf; char username[256]; int i = 0; @@ -656,7 +713,7 @@ void display_edituser(const char *supplied_username, int is_new) { serv_printf("AGEA %s", username); StrBuf_ServGetln(Buf); if (GetServerStatusMsg(Buf, NULL, 1, 2) == 1) { - while (StrBuf_ServGetln(Buf), strcmp(ChrPtr(Buf), "000")) { + while(StrBuf_ServGetln(Buf) , strcmp(ChrPtr(Buf), "000")) { if (i == 0) { StrBufAppendPrintf(UL->PrimaryEmail, "%s", ChrPtr(Buf)); } @@ -679,7 +736,7 @@ void display_edituser(const char *supplied_username, int is_new) { end_burst(); } DeleteUserListEntry(UL); - + } FreeStrBuf(&Buf); } @@ -697,7 +754,7 @@ void edituser(void) { if (!havebstr("ok_button")) { AppendImportantMessage(_("Changes were not saved."), -1); - } + } else { StrBuf *Buf = NewStrBuf(); @@ -706,7 +763,7 @@ void edituser(void) { flags |= US_INTERNET; } else { - flags &= ~US_INTERNET; + flags &= ~US_INTERNET ; } if ((havebstr("newname")) && (strcasecmp(bstr("username"), bstr("newname")))) { @@ -719,12 +776,16 @@ void edituser(void) { /* Send the new account parameters */ serv_printf("ASUP %s|%s|%d|%s|%s|%s|%s|%s|%s|", - username, - bstr("password"), - flags, - bstr("timescalled"), - bstr("msgsposted"), bstr("axlevel"), bstr("usernum"), bstr("lastcall"), bstr("purgedays") - ); + username, + bstr("password"), + flags, + bstr("timescalled"), + bstr("msgsposted"), + bstr("axlevel"), + bstr("usernum"), + bstr("lastcall"), + bstr("purgedays") + ); StrBuf_ServGetln(Buf); GetServerStatusMsg(Buf, NULL, 1, 2); @@ -734,21 +795,20 @@ void edituser(void) { /* Replace any commas, semicolons, or spaces with newlines */ char *pos; - for (pos = all_the_emails; *pos != 0; ++pos) { - if ((*pos == ',') || (*pos == ';') || (*pos == ' ')) - *pos = '\n'; + for (pos=all_the_emails; *pos!=0; ++pos) { + if ((*pos == ',') || (*pos == ';') || (*pos == ' ')) *pos = '\n' ; } /* 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); + strcpy(pos, pos+1); } while (pos = strstr(all_the_emails, ",\n"), (pos != NULL)) { - strcpy(pos + 1, pos + 2); + strcpy(pos+1, pos+2); } while (pos = strstr(all_the_emails, "\n\n"), (pos != NULL)) { - strcpy(pos + 1, pos + 2); + strcpy(pos+1, pos+2); } /* Now send it to the server. */ @@ -766,7 +826,7 @@ void edituser(void) { * the vCard edit screen. */ if (is_new) { - display_edit_address_book_entry(username, lbstr("usernum")); + display_edit_address_book_entry(username, lbstr("usernum") ); } else { select_user_to_edit(username); @@ -794,7 +854,8 @@ void create_user(void) { else if (FullState == 570) { AppendImportantMessage(_("You are attempting to create a new user from within Citadel " "while running in host based authentication mode. In this mode, " - "you must create new users on the host system, not within Citadel."), -1); + "you must create new users on the host system, not within Citadel."), + -1); select_user_to_edit(NULL); } else { @@ -838,7 +899,10 @@ void _display_edituser(void) { } -void InitModule_USEREDIT(void) { +void +InitModule_USEREDIT +(void) +{ RegisterCTX(CTX_USERLIST); WebcitAddUrlHandler(HKEY("select_user_to_edit"), "", 0, _select_user_to_edit, 0); WebcitAddUrlHandler(HKEY("display_edituser"), "", 0, _display_edituser, 0); @@ -846,46 +910,70 @@ void InitModule_USEREDIT(void) { WebcitAddUrlHandler(HKEY("create_user"), "", 0, create_user, 0); WebcitAddUrlHandler(HKEY("userpic"), "", 0, display_userpic, 0); - RegisterNamespace("USERLIST:USERNAME", 0, 1, tmplput_USERLIST_UserName, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:PASSWD", 0, 1, tmplput_USERLIST_Password, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:ACCLVLNO", 0, 0, tmplput_USERLIST_AccessLevelNo, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:ACCLVLSTR", 0, 0, tmplput_USERLIST_AccessLevelStr, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:UID", 0, 0, tmplput_USERLIST_UID, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:USERNAME", 0, 1, tmplput_USERLIST_UserName, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:PASSWD", 0, 1, tmplput_USERLIST_Password, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:ACCLVLNO", 0, 0, tmplput_USERLIST_AccessLevelNo, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:ACCLVLSTR", 0, 0, tmplput_USERLIST_AccessLevelStr, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:UID", 0, 0, tmplput_USERLIST_UID, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:LASTLOGON:STR", 0, 0, tmplput_USERLIST_LastLogonStr, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:LASTLOGON:NO", 0, 0, tmplput_USERLIST_LastLogonNo, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:NLOGONS", 0, 0, tmplput_USERLIST_nLogons, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:NPOSTS", 0, 0, tmplput_USERLIST_nPosts, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:PRIMARYEMAIL", 0, 1, tmplput_USERLIST_PrimaryEmail, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:OTHEREMAILS", 0, 1, tmplput_USERLIST_OtherEmails, NULL, CTX_USERLIST); - RegisterNamespace("USERLIST:FLAGS", 0, 0, tmplput_USERLIST_Flags, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:LASTLOGON:NO", 0, 0, tmplput_USERLIST_LastLogonNo, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:NLOGONS", 0, 0, tmplput_USERLIST_nLogons, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:NPOSTS", 0, 0, tmplput_USERLIST_nPosts, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:PRIMARYEMAIL", 0, 1, tmplput_USERLIST_PrimaryEmail, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:OTHEREMAILS", 0, 1, tmplput_USERLIST_OtherEmails, NULL, CTX_USERLIST); + RegisterNamespace("USERLIST:FLAGS", 0, 0, tmplput_USERLIST_Flags, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:DAYSTILLPURGE", 0, 0, tmplput_USERLIST_DaysTillPurge, NULL, CTX_USERLIST); - RegisterNamespace("USER:BIO", 1, 2, tmplput_USER_BIO, NULL, CTX_NONE); + 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); + RegisterIterator("USERLIST", 0, NULL, iterate_load_userlist, NULL, DeleteHash, CTX_USERLIST, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterSortFunc(HKEY("user:name"), - HKEY("userlist"), CompareUserListName, CompareUserListNameRev, GroupchangeUserListName, CTX_USERLIST); + HKEY("userlist"), + CompareUserListName, + CompareUserListNameRev, + GroupchangeUserListName, + CTX_USERLIST); RegisterSortFunc(HKEY("user:accslvl"), - HKEY("userlist"), CompareAccessLevel, CompareAccessLevelRev, GroupchangeAccessLevel, CTX_USERLIST); + HKEY("userlist"), + CompareAccessLevel, + CompareAccessLevelRev, + GroupchangeAccessLevel, + CTX_USERLIST); RegisterSortFunc(HKEY("user:nlogons"), - HKEY("userlist"), ComparenLogons, ComparenLogonsRev, GroupchangenLogons, CTX_USERLIST); - - RegisterSortFunc(HKEY("user:uid"), HKEY("userlist"), CompareUID, CompareUIDRev, GroupchangeUID, CTX_USERLIST); + HKEY("userlist"), + ComparenLogons, + ComparenLogonsRev, + GroupchangenLogons, + CTX_USERLIST); + + RegisterSortFunc(HKEY("user:uid"), + HKEY("userlist"), + CompareUID, + CompareUIDRev, + GroupchangeUID, + CTX_USERLIST); RegisterSortFunc(HKEY("user:lastlogon"), - HKEY("userlist"), CompareLastLogon, CompareLastLogonRev, GroupchangeLastLogon, CTX_USERLIST); + HKEY("userlist"), + CompareLastLogon, + CompareLastLogonRev, + GroupchangeLastLogon, + CTX_USERLIST); RegisterSortFunc(HKEY("user:nmsgposts"), - HKEY("userlist"), ComparenPosts, ComparenPostsRev, GroupchangenPosts, CTX_USERLIST); + HKEY("userlist"), + ComparenPosts, + ComparenPostsRev, + GroupchangenPosts, + CTX_USERLIST); REGISTERTokenParamDefine(AxDeleted); REGISTERTokenParamDefine(AxNewU); @@ -895,3 +983,4 @@ void InitModule_USEREDIT(void) { REGISTERTokenParamDefine(AxPrefU); REGISTERTokenParamDefine(AxAideU); } +