/*
* $Id$
*
+ * Server-side functions which handle message moderation.
*
*/
#include <pwd.h>
#include <errno.h>
#include <sys/types.h>
-#include <sys/time.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
#include <sys/wait.h>
#include <string.h>
#include <limits.h>
#include "citadel.h"
#include "server.h"
-#include <time.h>
#include "sysdep_decls.h"
#include "citserver.h"
#include "support.h"
void cmd_mmod(char *argbuf) {
long msgnum;
int newlevel;
+ struct MetaData smi;
+ int is_message_in_room;
/* user must be at least a Room Aide to moderate */
if (CtdlAccessCheck(ac_room_aide)) return;
if ( (newlevel < (-63)) || (newlevel > (+63)) ) {
cprintf("%d %d is not a valid moderation level.\n",
- newlevel, ERROR+ILLEGAL_VALUE);
+ ERROR+ILLEGAL_VALUE, newlevel);
+ return;
}
- cprintf("%d FIXME ... actually do this!!!!!!!!\n", OK);
+ is_message_in_room = CtdlForEachMessage(MSGS_EQ, msgnum, (-127),
+ NULL, NULL, NULL, NULL);
+ if (!is_message_in_room) {
+ cprintf("%d Message %ld is not in this room.\n",
+ ERROR+ILLEGAL_VALUE, msgnum);
+ return;
+ }
+
+ GetMetaData(&smi, msgnum);
+ smi.meta_mod = newlevel;
+ PutMetaData(&smi);
+
+ cprintf("%d Message %ld is moderated to %d\n", CIT_OK, msgnum, newlevel);
}