X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fwiki%2Fserv_wiki.c;h=7320a156e94a9e4acdf4e12ee15620561171a826;hb=c4609169aa7baf208848e72c16d33a3f892353b8;hp=d656b2457c5c3a77e1158f0bd21fb4ce41faff1c;hpb=ab472129567331427686fd2dc4dacf61afe58ff9;p=citadel.git diff --git a/citadel/modules/wiki/serv_wiki.c b/citadel/modules/wiki/serv_wiki.c index d656b2457..7320a156e 100644 --- a/citadel/modules/wiki/serv_wiki.c +++ b/citadel/modules/wiki/serv_wiki.c @@ -1,7 +1,7 @@ /* * Server-side module for Wiki rooms. This handles things like version control. * - * Copyright (c) 2009-2012 by the citadel.org team + * Copyright (c) 2009-2015 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. @@ -94,7 +94,8 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) { if (!CCC->logged_in) return(0); /* Only do this if logged in. */ /* Is this a room with a Wiki in it, don't run this hook. */ - if (CCC->room.QRdefaultview != VIEW_WIKI) { + if ((CCC->room.QRdefaultview != VIEW_WIKI) && + (CCC->room.QRdefaultview != VIEW_WIKIMD)) { return(0); } @@ -126,7 +127,7 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) { /* See if we can retrieve the previous version. */ old_msgnum = CtdlLocateMessageByEuid(msg->cm_fields[eExclusiveID], &CCC->room); if (old_msgnum > 0L) { - old_msg = CtdlFetchMessage(old_msgnum, 1); + old_msg = CtdlFetchMessage(old_msgnum, 1, 1); } else { old_msg = NULL; @@ -207,7 +208,7 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) { history_msgnum = CtdlLocateMessageByEuid(history_page, &CCC->room); history_msg = NULL; if (history_msgnum > 0L) { - history_msg = CtdlFetchMessage(history_msgnum, 1); + history_msg = CtdlFetchMessage(history_msgnum, 1, 1); } /* Create a new history message if necessary */ @@ -221,7 +222,9 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) { history_msg->cm_anon_type = MES_NORMAL; history_msg->cm_format_type = FMT_RFC822; CM_SetField(history_msg, eAuthor, HKEY("Citadel")); - CM_SetField(history_msg, eRecipient, CCC->room.QRname, strlen(CCC->room.QRname)); + if (!IsEmptyStr(CCC->room.QRname)){ + CM_SetField(history_msg, eRecipient, CCC->room.QRname, strlen(CCC->room.QRname)); + } CM_SetField(history_msg, eExclusiveID, history_page, history_page_len); CM_SetField(history_msg, eMsgSubject, history_page, history_page_len); CM_SetField(history_msg, eSuppressIdx, HKEY("1")); /* suppress full text indexing */ @@ -302,7 +305,7 @@ int wiki_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) { uuid, Now, CCC->user.fullname, - config.c_nodename); + CtdlGetConfigStr("c_nodename")); memolen = CtdlEncodeBase64(encoded_memo, memo, memolen, 0); @@ -389,7 +392,7 @@ void wiki_history(char *pagename) { snprintf(history_page_name, sizeof history_page_name, "%s_HISTORY_", pagename); msgnum = CtdlLocateMessageByEuid(history_page_name, &CC->room); if (msgnum > 0L) { - msg = CtdlFetchMessage(msgnum, 1); + msg = CtdlFetchMessage(msgnum, 1, 1); } else { msg = NULL; @@ -521,7 +524,7 @@ void wiki_rev(char *pagename, char *rev, char *operation) */ msgnum = CtdlLocateMessageByEuid(pagename, &CCC->room); if (msgnum > 0L) { - msg = CtdlFetchMessage(msgnum, 1); + msg = CtdlFetchMessage(msgnum, 1, 1); } else { msg = NULL; @@ -555,7 +558,7 @@ void wiki_rev(char *pagename, char *rev, char *operation) snprintf(history_page_name, sizeof history_page_name, "%s_HISTORY_", pagename); msgnum = CtdlLocateMessageByEuid(history_page_name, &CCC->room); if (msgnum > 0L) { - msg = CtdlFetchMessage(msgnum, 1); + msg = CtdlFetchMessage(msgnum, 1, 1); } else { msg = NULL; @@ -639,11 +642,23 @@ void wiki_rev(char *pagename, char *rev, char *operation) } else if (!strcasecmp(operation, "revert")) { CM_SetFieldLONG(msg, eTimestamp, time(NULL)); - CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname)); - CM_SetField(msg, erFc822Addr, CCC->cs_inet_email, strlen(CCC->cs_inet_email)); - CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname)); - CM_SetField(msg, eNodeName, CFG_KEY(c_nodename)); - CM_SetField(msg, eExclusiveID, pagename, strlen(pagename)); + if (!IsEmptyStr(CCC->user.fullname)) { + CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname)); + } + + if (!IsEmptyStr(CCC->cs_inet_email)) { + CM_SetField(msg, erFc822Addr, CCC->cs_inet_email, strlen(CCC->cs_inet_email)); + } + + if (!IsEmptyStr(CCC->room.QRname)) { + CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname)); + } + + CM_SetField(msg, eNodeName, CtdlGetConfigStr("c_nodename"), strlen(CtdlGetConfigStr("c_nodename"))); + + if (!IsEmptyStr(pagename)) { + CM_SetField(msg, eExclusiveID, pagename, strlen(pagename)); + } msgnum = CtdlSubmitMsg(msg, NULL, "", 0); /* Replace the current revision */ } else {