From 9d3c72e0c421d86cb5d7d475b0eac06d957bf04b Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 3 Dec 2004 07:38:42 +0000
Subject: [PATCH] Full delete permission support...

---
 web/root/msgs/management.ssjs | 42 +++++++++++++++++++++++------------
 1 file changed, 28 insertions(+), 14 deletions(-)

diff --git a/web/root/msgs/management.ssjs b/web/root/msgs/management.ssjs
index f338e7209f..6ec7c31d32 100644
--- a/web/root/msgs/management.ssjs
+++ b/web/root/msgs/management.ssjs
@@ -14,25 +14,39 @@ if(http_request.query.Action=="Delete Message(s)") {
 	var errors=0;
 	errorlist=new Array;
 
-	if(sub!='mail' && !msg_area.grp_list[g].sub_list[s].is_operator) {
-		errorlist.push("Only operators can delete messages!");
-		errors++;
-	}
-	else {
-		for(num in http_request.query.number) {
-			var mnum=parseInt(http_request.query.number[num]);
-			if(sub==mail && ((idx=get_msg_index(false,mnum))==null || idx.to!=user.number) {
+	for(num in http_request.query.number) {
+		var mnum=parseInt(http_request.query.number[num]);
+
+		if(sub==mail && ((idx=get_msg_index(false,mnum))==null || idx.to!=user.number) {
+			errors++;
+			errorlist.push("Cannot delete message "+mnum);
+			continue;
+		}
+		if(sub!='mail' && !msg_area.grp_list[g].sub_list[s].is_operator) {
+			if(!msg_area.grp_list[g].sub_list[s].settings&SUB_DEL) {
+				errorlist.push("Only operators can delete messages!");
 				errors++;
-				errorlist.push("Cannot delete message "+mnum);
+				continue;
 			}
-			else {
-				if(msgbase.remove_msg(false,mnum))
-					deleted++;
-				else {
+			if(msg_area.grp_list[g].sub_list[s].settings&SUB_DELLAST) {
+				if(msgbase.last_msg!=mnum) {
+					errorlist.push("You can only delete the last post!");
 					errors++;
-					errorlist.push(msgbase.last_error);
+					continue;
 				}
 			}
+			if((hdr=get_msg_header(false,mnum))==null || hdr.from_ext!=user.number) {
+				errorlist.push("You can only delete your own messages!");
+				errors++;
+				continue;
+			}
+		}
+
+		if(msgbase.remove_msg(false,mnum))
+			deleted++;
+		else {
+			errors++;
+			errorlist.push(msgbase.last_error);
 		}
 	}
 	template.title=deleted+" Messages Deleted";
-- 
GitLab