From 8c8db9a95457aa06b787c65ecdb6c926d6a2106f Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Mon, 11 Apr 2016 11:13:18 -0400 Subject: [PATCH] Moved webcit display of user photo to the new protocol --- citadel/modules/image/serv_image.c | 37 ++++++++++++++++++++++ webcit/static/t/user/show.html | 2 +- webcit/static/t/who/bio.html | 4 +-- webcit/useredit.c | 49 +++++++++++++++++------------- webcit/webcit.h | 1 + 5 files changed, 69 insertions(+), 24 deletions(-) diff --git a/citadel/modules/image/serv_image.c b/citadel/modules/image/serv_image.c index 36f6838db..ff7d2e8e8 100644 --- a/citadel/modules/image/serv_image.c +++ b/citadel/modules/image/serv_image.c @@ -20,6 +20,42 @@ #include + +/* + * DownLoad User Image (see their avatar or photo or whatever) + * If this command succeeds, it follows the same protocol as the DLAT command. + */ +void cmd_dlui(char *cmdbuf) +{ + struct ctdluser ruser; + char buf[SIZ]; + + extract_token(buf, cmdbuf, 0, '|', sizeof buf); + if (CtdlGetUser(&ruser, buf) != 0) { + cprintf("%d No such user.\n", ERROR + NO_SUCH_USER); + return; + } + if (ruser.msgnum_pic < 1) { + cprintf("%d No image found.\n", ERROR + FILE_NOT_FOUND); + return; + } + + struct CtdlMessage *msg = CtdlFetchMessage(ruser.msgnum_pic, 1, 1); + if (msg != NULL) { + // 600 402132|-1||image/gif| + safestrncpy(CC->download_desired_section, "1", sizeof CC->download_desired_section); + CtdlOutputPreLoadedMsg(msg, MT_SPEW_SECTION, HEADERS_NONE, 1, 0, 0); + CM_Free(msg); + } + else { + cprintf("%d No image found.\n", ERROR + MESSAGE_NOT_FOUND); + return; + } +} + + + + /* * Import function called by import_old_userpic_files() for a single user */ @@ -159,6 +195,7 @@ CTDL_MODULE_INIT(image) if (!threading) { import_old_userpic_files(); + CtdlRegisterProtoHook(cmd_dlui, "DLUI", "DownLoad User Image"); } /* return our module name for the log */ return "image"; diff --git a/webcit/static/t/user/show.html b/webcit/static/t/user/show.html index b957bd252..c9c599f1b 100644 --- a/webcit/static/t/user/show.html +++ b/webcit/static/t/user/show.html @@ -15,7 +15,7 @@
diff --git a/webcit/static/t/who/bio.html b/webcit/static/t/who/bio.html index 32eafb0d9..d5d2c0fb9 100644 --- a/webcit/static/t/who/bio.html +++ b/webcit/static/t/who/bio.html @@ -15,10 +15,10 @@
- " alt=""> + " alt="" border=0>
-

<

+

diff --git a/webcit/useredit.c b/webcit/useredit.c index 2751ecde9..e7ba2b2bb 100644 --- a/webcit/useredit.c +++ b/webcit/useredit.c @@ -475,29 +475,11 @@ void tmplput_USER_BIO(StrBuf *Target, WCTemplputParams *TP) FreeStrBuf(&Buf); } + int Conditional_USER_HAS_PIC(StrBuf *Target, WCTemplputParams *TP) { - StrBuf *Buf; - const char *who; - long len; - int r = 0; - - GetTemplateTokenString(Target, TP, 2, &who, &len); - - Buf = NewStrBuf(); - serv_printf("OIMG _userpic_|%s", who); - StrBuf_ServGetln(Buf); - if (GetServerStatus(Buf, NULL) != 2) { - r = 1; - } - else { - r = 0; - } - serv_puts("CLOS"); - StrBuf_ServGetln(Buf); - GetServerStatus(Buf, NULL); - FreeStrBuf(&Buf); - return(r); + // ajc 2016apr10 this needs to be re-evaluated with the new protocol + return(0); } @@ -796,6 +778,30 @@ void create_user(void) { } +void display_userpic(void) { + off_t bytes; + StrBuf *Buf = NewStrBuf(); + const char *username = bstr("user"); + serv_printf("DLUI %s", username); + StrBuf_ServGetln(Buf); + if (GetServerStatus(Buf, NULL) == 6) { + StrBufCutLeft(Buf, 4); + bytes = StrBufExtract_long(Buf, 0, '|'); + StrBuf *content_type = NewStrBuf(); + StrBufExtract_token(content_type, Buf, 3, '|'); + WC->WBuf = NewStrBuf(); + StrBuf_ServGetBLOBBuffered(WC->WBuf, bytes); + http_transmit_thing(ChrPtr(content_type), 0); + FreeStrBuf(&content_type); + } + else { + output_error_pic("", ""); + } + FreeStrBuf(&Buf); +} + + + void _select_user_to_edit(void) { select_user_to_edit(NULL); } @@ -814,6 +820,7 @@ InitModule_USEREDIT WebcitAddUrlHandler(HKEY("display_edituser"), "", 0, _display_edituser, 0); WebcitAddUrlHandler(HKEY("edituser"), "", 0, edituser, 0); 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); diff --git a/webcit/webcit.h b/webcit/webcit.h index 1509bf25c..fe34c23da 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -726,3 +726,4 @@ extern int DisableGzip; void display_summary_page(void); HashList *GetValidDomainNames(StrBuf *Target, WCTemplputParams *TP); +void output_error_pic(const char *ErrMsg1, const char *ErrMsg2); -- 2.30.2
- " alt=""> + " alt="" border=0>