efa9b97ac92807c357383ac221229d9b177e0fce
[citadel.git] / citadel / serv_moderate.c
1 /*
2  * $Id$
3  *
4  *
5  */
6
7 #include "sysdep.h"
8 #include <stdlib.h>
9 #include <unistd.h>
10 #include <stdio.h>
11 #include <fcntl.h>
12 #include <signal.h>
13 #include <pwd.h>
14 #include <errno.h>
15 #include <sys/types.h>
16 #include <sys/time.h>
17 #include <sys/wait.h>
18 #include <string.h>
19 #include <limits.h>
20 #include "citadel.h"
21 #include "server.h"
22 #include <time.h>
23 #include "sysdep_decls.h"
24 #include "citserver.h"
25 #include "support.h"
26 #include "config.h"
27 #include "control.h"
28 #include "dynloader.h"
29 #include "room_ops.h"
30 #include "user_ops.h"
31 #include "policy.h"
32 #include "database.h"
33 #include "msgbase.h"
34 #include "tools.h"
35
36
37
38 /*
39  * moderate a message
40  */
41 void cmd_mmod(char *argbuf) {
42         long msgnum;
43         int newlevel;
44         struct SuppMsgInfo smi;
45         int is_message_in_room;
46
47         /* user must be at least a Room Aide to moderate */
48         if (CtdlAccessCheck(ac_room_aide)) return;
49
50         msgnum = extract_long(argbuf, 0);
51         newlevel = extract_int(argbuf, 1);
52
53         if ( (newlevel < (-63)) || (newlevel > (+63)) ) {
54                 cprintf("%d %d is not a valid moderation level.\n",
55                         ERROR+ILLEGAL_VALUE, newlevel);
56                 return;
57         }
58
59         is_message_in_room = CtdlForEachMessage(MSGS_EQ, msgnum, (-127),
60                                 NULL, NULL, NULL);
61         if (!is_message_in_room) {
62                 cprintf("%d Message %ld is not in this room.\n",
63                         ERROR+ILLEGAL_VALUE, msgnum);
64                 return;
65         }
66
67         GetSuppMsgInfo(&smi, msgnum);
68         smi.smi_mod = newlevel;
69         PutSuppMsgInfo(&smi);
70
71         cprintf("%d Message %ld is moderated to %d\n", OK, msgnum, newlevel);
72 }
73
74
75 char *Dynamic_Module_Init(void)
76 {
77         CtdlRegisterProtoHook(cmd_mmod, "MMOD", "Moderate a message");
78         return "$Id$";
79 }