added mussing include
[NeonServV5.git] / ChanNode.c
index b8ff9f8e223ad59675a29adbaa0580678e87af05..482c54ce112ea463a6bf49da2cf879e285efe022 100644 (file)
@@ -2,6 +2,7 @@
 #include "ChanUser.h"
 #include "UserNode.h"
 #include "modcmd.h"
+#include "mysqlConn.h"
 
 static struct ChanNode **chanList;
 static int modes_with_strarg, modes_with_intarg;
@@ -77,6 +78,24 @@ void init_ChanNode() {
     }
 }
 
+void free_ChanNode() {
+    //kamikaze free all channels and chanusers
+    int i;
+    struct ChanNode *chan, *next;
+    struct ChanUser *chanuser, *next_chanuser;
+    for(i = 0; i < 47; i++) {
+        for(chan = chanList[i]; chan; chan = next) {
+            next = chan->next;
+            for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = next_chanuser) {
+                next_chanuser = getChannelUsers(chan, chanuser);
+                free(chanuser);
+            }
+            freeChanNode(chan);
+        }
+    }
+    free(chanList);
+}
+
 int is_valid_chan(const char *name) {
     unsigned int ii;
     if (*name !='#')
@@ -357,3 +376,18 @@ void getModeString(struct ChanNode* chan, char *modesStr) {
     #undef MODE_VALUE_INDEX
 }
 
+
+void load_channel_settings(struct ChanNode *chan) {
+    if(!(chan->flags & CHANFLAG_REQUESTED_CHANINFO)) {
+        check_mysql();
+        MYSQL_RES *res;
+        MYSQL_ROW row;
+        printf_mysql_query("SELECT `channel_id` FROM `channels` WHERE `channel_name` = '%s'", escape_string(chan->name));
+        res = mysql_use();
+        if ((row = mysql_fetch_row(res)) != NULL) {
+            chan->flags |= CHANFLAG_CHAN_REGISTERED;
+            chan->channel_id = atoi(row[0]);
+        }
+        chan->flags |= CHANFLAG_REQUESTED_CHANINFO;
+    }
+}