]> jfr.im git - irc/quakenet/newserv.git/commitdiff
a4stats: Update API.
authorGunnar Beutner <redacted>
Sun, 23 Feb 2014 14:37:44 +0000 (15:37 +0100)
committerGunnar Beutner <redacted>
Sun, 23 Feb 2014 14:37:44 +0000 (15:37 +0100)
a4stats/a4stats_db.c
a4stats/nterfacer_a4stats.c

index f9ff50ced74c7dda5ded73cc460a6387f16afac1..a4b2db076cbe8619e83e25b45c27de65a5baf979 100644 (file)
@@ -310,7 +310,8 @@ static int a4stats_lua_enable_channel(lua_State *ps) {
   if (!lua_isstring(ps, 1))
     LUA_RETURN(ps, LUA_FAIL);
 
-  a4statsdb->squery(a4statsdb, "INSERT INTO ? (name, timestamp) VALUES (?)", "Tst", "channels", lua_tostring(ps, 1), time(NULL));
+  a4statsdb->squery(a4statsdb, "INSERT INTO ? (name, timestamp) VALUES (?, ?)", "Tst", "channels", lua_tostring(ps, 1), time(NULL));
+  a4statsdb->squery(a4statsdb, "UPDATE ? SET active = 1 WHERE name = ?", "Ts", "channels", lua_tostring(ps, 1));
 
   LUA_RETURN(ps, LUA_OK);
 }
@@ -380,26 +381,15 @@ static void a4stats_hook_loadscript(int hooknum, void *arg) {
 
 static void a4stats_hook_unloadscript(int hooknum, void *arg) {
   db_callback_info **pnext, *dci;
-  lua_list *l;
+  lua_State *l = arg;
 
   for (pnext = &dci_head; *pnext; pnext = &((*pnext)->next)) {
     dci = *pnext;
-    if (dci->interp == arg) {
+    if (dci->interp == l) {
       *pnext = dci->next;
       free(dci);
     }
   }
-
-  for (l = lua_head; l; l = l->next) {
-    lua_unregister(l->l, "a4_enable_channel");
-    lua_unregister(l->l, "a4_disable_channel");
-    lua_unregister(l->l, "a4_fetch_channels");
-    lua_unregister(l->l, "a4_add_kick");
-    lua_unregister(l->l, "a4_add_topic");
-    lua_unregister(l->l, "a4_fetch_user");
-    lua_unregister(l->l, "a4_update_user");
-    lua_unregister(l->l, "a4_escape_string");
-  }
 }
 
 void _init(void) {
@@ -425,6 +415,15 @@ void _fini(void) {
 
   for (l = lua_head; l;l = l->next) {
     a4stats_hook_loadscript(HOOK_LUA_UNLOADSCRIPT, l->l);
+
+    lua_unregister(l->l, "a4_enable_channel");
+    lua_unregister(l->l, "a4_disable_channel");
+    lua_unregister(l->l, "a4_fetch_channels");
+    lua_unregister(l->l, "a4_add_kick");
+    lua_unregister(l->l, "a4_add_topic");
+    lua_unregister(l->l, "a4_fetch_user");
+    lua_unregister(l->l, "a4_update_user");
+    lua_unregister(l->l, "a4_escape_string");
   }
 
   deregisterhook(HOOK_LUA_LOADSCRIPT, a4stats_hook_loadscript);
index 27c7adbce188b8fda29db47512f7e9c9b330ba8d..3011d62ec4a1ee2f099a2621a5f6c8f8d023be1f 100644 (file)
@@ -84,6 +84,11 @@ static int handle_getuser(struct rline *ri, int argc, char **argv) {
   return 0;
 }
 
+static int handle_setprivacy(struct rline *ri, int argc, char **argv) {
+  a4statsdb->squery(a4statsdb, "UPDATE ? SET privacy = ? WHERE name = ?", "Tss", "channels", argv[1], argv[0]);
+  return ri_final(ri);
+}
+
 void _init(void) {
   a4stats_node = register_service("a4stats");
   if (!a4stats_node)
@@ -95,6 +100,7 @@ void _init(void) {
   register_handler(a4stats_node, "getkicks", 1, handle_getkicks);
   register_handler(a4stats_node, "gettopics", 1, handle_gettopics);
   register_handler(a4stats_node, "getuser", 3, handle_getuser);
+  register_handler(a4stats_node, "setprivacy", 2, handle_setprivacy);
 }
 
 void _fini(void) {