Skip to content
Snippets Groups Projects
Commit 7ef34abb authored by rswindell's avatar rswindell
Browse files

Added new command (E) to allow users to edit their posted messages on a

specific sub-board (sysop configurable).
Implemented support for SUB_DELLAST toggle option (allows deleting of last
message only). Option has been in SCFG for a long time, but never implemented.
parent 2140db05
No related branches found
No related tags found
No related merge requests found
...@@ -516,7 +516,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -516,7 +516,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
ASYNC; ASYNC;
bprintf(text[ReadingSub],ugrp,cfg.grp[cfg.sub[subnum]->grp]->sname bprintf(text[ReadingSub],ugrp,cfg.grp[cfg.sub[subnum]->grp]->sname
,usub,cfg.sub[subnum]->sname,curpost+1,posts); ,usub,cfg.sub[subnum]->sname,curpost+1,posts);
sprintf(str,"ABCDFILMPQRTY?<>[]{}-+.,"); sprintf(str,"ABCDEFILMPQRTY?<>[]{}-+.,");
if(sub_op(subnum)) if(sub_op(subnum))
strcat(str,"O"); strcat(str,"O");
reread=0; reread=0;
...@@ -546,11 +546,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -546,11 +546,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
bputs(text[CantPostOnSub]); bputs(text[CantPostOnSub]);
break; } break; }
quotemsg(&msg,0); quotemsg(&msg,0);
if(post) FREE_AND_NULL(post);
LFREE(post);
post=NULL;
postmsg(subnum,&msg,WM_QUOTE); postmsg(subnum,&msg,WM_QUOTE);
// post=loadposts(&posts,subnum,0,lp);
if(mode&SCAN_TOYOU) if(mode&SCAN_TOYOU)
domsg=1; domsg=1;
break; break;
...@@ -571,23 +568,32 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -571,23 +568,32 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
break; break;
case 'D': /* Delete message on sub-board */ case 'D': /* Delete message on sub-board */
domsg=0; domsg=0;
if(!sub_op(subnum) && !(cfg.sub[subnum]->misc&SUB_DEL)) {
bputs(text[CantDeletePosts]);
break; }
if(!sub_op(subnum)) { if(!sub_op(subnum)) {
if(!(cfg.sub[subnum]->misc&SUB_DEL)) {
bputs(text[CantDeletePosts]);
domsg=0;
break;
}
if(cfg.sub[subnum]->misc&SUB_DELLAST && curpost!=(posts-1)) {
bputs("\1n\r\nCan only delete last message.\r\n");
domsg=0;
break;
}
if(stricmp(cfg.sub[subnum]->misc&SUB_NAME if(stricmp(cfg.sub[subnum]->misc&SUB_NAME
? useron.name : useron.alias, msg.from) ? useron.name : useron.alias, msg.from)
&& stricmp(cfg.sub[subnum]->misc&SUB_NAME && stricmp(cfg.sub[subnum]->misc&SUB_NAME
? useron.name : useron.alias, msg.to)) { ? useron.name : useron.alias, msg.to)) {
bprintf(text[YouDidntPostMsgN],curpost+1); bprintf(text[YouDidntPostMsgN],curpost+1);
break; } } break;
}
}
if(msg.hdr.attr&MSG_PERMANENT) { if(msg.hdr.attr&MSG_PERMANENT) {
bputs("\1n\r\nMessage is marked permanent.\r\n"); bputs("\1n\r\nMessage is marked permanent.\r\n");
domsg=0; domsg=0;
break; } break;
if(post) }
LFREE(post);
post=NULL; FREE_AND_NULL(post);
if(msg.total_hfields) if(msg.total_hfields)
smb_freemsgmem(&msg); smb_freemsgmem(&msg);
...@@ -617,7 +623,29 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -617,7 +623,29 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
if(curpost>=posts-1) if(curpost>=posts-1)
done=1; done=1;
break; break;
case 'E': /* edit last post */
if(!sub_op(subnum)) {
if(!(cfg.sub[subnum]->misc&SUB_EDIT)) {
bputs("\1n\r\nCan't edit messages on this message base.\r\n");
// bputs(text[CantDeletePosts]);
domsg=0;
break;
}
if(cfg.sub[subnum]->misc&SUB_EDITLAST && curpost!=(posts-1)) {
bputs("\1n\r\nCan only edit last message.\r\n");
domsg=0;
break;
}
if(stricmp(cfg.sub[subnum]->misc&SUB_NAME
? useron.name : useron.alias, msg.from)) {
bprintf(text[YouDidntPostMsgN],curpost+1);
domsg=0;
break;
}
}
FREE_AND_NULL(post);
editmsg(&msg,subnum);
break;
case 'F': /* find text in messages */ case 'F': /* find text in messages */
domsg=0; domsg=0;
bprintf(text[StartWithN],curpost+2); bprintf(text[StartWithN],curpost+2);
...@@ -669,9 +697,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -669,9 +697,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
bputs(text[Email]); bputs(text[Email]);
if(!getstr(str,60,K_EDIT|K_AUTODEL)) if(!getstr(str,60,K_EDIT|K_AUTODEL))
break; break;
if(post)
LFREE(post); FREE_AND_NULL(post);
post=NULL;
quotemsg(&msg,1); quotemsg(&msg,1);
if(msg.from_net.type==NET_INTERNET && strchr(str,'@')) if(msg.from_net.type==NET_INTERNET && strchr(str,'@'))
inetmail(str,msg.subj,WM_QUOTE|WM_NETMAIL); inetmail(str,msg.subj,WM_QUOTE|WM_NETMAIL);
...@@ -687,19 +714,15 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -687,19 +714,15 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
else else
i=matchuser(&cfg,str,TRUE /* sysop_alias */); } i=matchuser(&cfg,str,TRUE /* sysop_alias */); }
email(i,str2,msg.subj,WM_EMAIL|WM_QUOTE); } } email(i,str2,msg.subj,WM_EMAIL|WM_QUOTE); } }
// post=loadposts(&posts,subnum,0,lp);
break; break;
case 'P': /* Post message on sub-board */ case 'P': /* Post message on sub-board */
domsg=0; domsg=0;
if(!chk_ar(cfg.sub[subnum]->post_ar,&useron)) if(!chk_ar(cfg.sub[subnum]->post_ar,&useron))
bputs(text[CantPostOnSub]); bputs(text[CantPostOnSub]);
else { else {
if(post) FREE_AND_NULL(post);
LFREE(post);
post=NULL;
postmsg(subnum,0,0); postmsg(subnum,0,0);
// post=loadposts(&posts,subnum,0,lp); }
}
break; break;
case 'Q': /* Quit */ case 'Q': /* Quit */
if(msg.total_hfields) if(msg.total_hfields)
...@@ -765,11 +788,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -765,11 +788,8 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
smb_unlockmsghdr(&smb,&msg); } smb_unlockmsghdr(&smb,&msg); }
break; break;
case 'E': /* edit last post */ case 'E': /* edit last post */
if(post) FREE_AND_NULL(post);
LFREE(post);
post=NULL;
editmsg(&msg,subnum); editmsg(&msg,subnum);
// post=loadposts(&posts,subnum,0,lp);
break; break;
case 'H': /* View message header */ case 'H': /* View message header */
msghdr(&msg); msghdr(&msg);
...@@ -777,9 +797,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -777,9 +797,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
break; break;
case 'M': /* Move message */ case 'M': /* Move message */
domsg=0; domsg=0;
if(post) FREE_AND_NULL(post);
LFREE(post);
post=NULL;
if(msg.total_hfields) if(msg.total_hfields)
smb_freemsgmem(&msg); smb_freemsgmem(&msg);
msg.total_hfields=0; msg.total_hfields=0;
...@@ -794,7 +812,6 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find) ...@@ -794,7 +812,6 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
if((i=smb_putmsg(&smb,&msg))!=0) if((i=smb_putmsg(&smb,&msg))!=0)
errormsg(WHERE,ERR_WRITE,smb.file,i); } errormsg(WHERE,ERR_WRITE,smb.file,i); }
smb_unlockmsghdr(&smb,&msg); smb_unlockmsghdr(&smb,&msg);
// post=loadposts(&posts,subnum,0,lp);
break; break;
case 'Q': case 'Q':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment