removed some debugs
[citadel.git] / citadel / modules / roomchat / serv_roomchat.c
index c1a08c56617040b574f61a5aa4c5da7afcfc0b6d..35a83dbacbc7057e770033578d3106725b3de7be 100644 (file)
@@ -1,24 +1,15 @@
 /*
- * $Id$
- *
  * This module handles instant messaging between users.
  * 
- * Copyright (c) 2010 by the citadel.org team
+ * Copyright (c) 2012 by the citadel.org team
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * 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.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 #include "sysdep.h"
 #include <stdlib.h>
 #include <errno.h>
 #include <sys/types.h>
 #include <assert.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 <time.h>
 #include <sys/wait.h>
 #include <string.h>
 #include <limits.h>
 #include "config.h"
 #include "msgbase.h"
 #include "user_ops.h"
-
-#ifndef HAVE_SNPRINTF
-#include "snprintf.h"
-#endif
-
 #include "ctdl_module.h"
 
-
 struct chatmsg {
        struct chatmsg *next;
        time_t timestamp;
@@ -174,7 +148,7 @@ void roomchat_poll(char *argbuf) {
 
        newer_than = extract_int(argbuf, 1);
 
-       if (!CC->cs_flags & CS_CHAT) {
+       if ((CC->cs_flags & CS_CHAT) == 0) {
                cprintf("%d Session is not in chat mode.\n", ERROR);
                return;
        }
@@ -198,6 +172,38 @@ void roomchat_poll(char *argbuf) {
 }
 
 
+
+/*
+ * list users in chat in this room
+ */
+void roomchat_rwho(char *argbuf) {
+       struct CitContext *nptr;
+       int nContexts, i;
+
+       if ((CC->cs_flags & CS_CHAT) == 0) {
+               cprintf("%d Session is not in chat mode.\n", ERROR);
+               return;
+       }
+
+       cprintf("%d%c \n", LISTING_FOLLOWS, CtdlCheckExpress() );
+       
+       nptr = CtdlGetContextArray(&nContexts) ;                // grab a copy of the wholist
+       if (nptr) {
+               for (i=0; i<nContexts; i++)  {                  // list the users
+                       if ( (nptr[i].room.QRnumber == CC->room.QRnumber) 
+                          && (nptr[i].cs_flags & CS_CHAT)
+                       ) {
+                               cprintf("%s\n", nptr[i].user.fullname);
+                       }
+               }
+               free(nptr);                                     // free our copy
+       }
+
+       cprintf("000\n");
+}
+
+
+
 /*
  * Participate in real time chat in a room
  */
@@ -223,6 +229,9 @@ void cmd_rcht(char *argbuf)
        else if (!strcasecmp(subcmd, "poll")) {
                roomchat_poll(argbuf);
        }
+       else if (!strcasecmp(subcmd, "rwho")) {
+               roomchat_rwho(argbuf);
+       }
        else {
                cprintf("%d Invalid subcommand\n", ERROR + CMD_NOT_SUPPORTED);
        }
@@ -234,10 +243,10 @@ CTDL_MODULE_INIT(roomchat)
        if (!threading)
        {
                CtdlRegisterProtoHook(cmd_rcht, "RCHT", "Participate in real time chat in a room");
-               CtdlRegisterSessionHook(roomchat_timer, EVT_TIMER);
-               CtdlRegisterSessionHook(roomchat_shutdown, EVT_SHUTDOWN);
+               CtdlRegisterSessionHook(roomchat_timer, EVT_TIMER, PRIO_CLEANUP + 400);
+               CtdlRegisterSessionHook(roomchat_shutdown, EVT_SHUTDOWN, PRIO_SHUTDOWN + 55);
        }
        
-       /* return our Subversion id for the Log */
-       return "$Id$";
+       /* return our module name for the log */
+       return "roomchat";
 }