added BlockInvite uset setting to block invites globally
[NeonServV5.git] / src / modules / NeonServ.mod / cmd_neonserv_uset.c
index c9c7b5fe3f9dc0d29925a2f7da7fc211853deecc..822cd5ec0fd6e04e8658e2bc83c853fb683ea8c6 100644 (file)
@@ -19,6 +19,7 @@
 
 typedef void neonserv_cmd_uset_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
 static void neonserv_cmd_uset_language(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
+static void neonserv_cmd_uset_blockinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
 static void neonserv_cmd_uset_noinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
 static void neonserv_cmd_uset_autoinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
 static void neonserv_cmd_uset_noautoop(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults);
@@ -38,12 +39,15 @@ static const struct {
     neonserv_cmd_uset_function *function;
     int flags;
 } uset_settings[] = {
-    {"Language",    neonserv_cmd_uset_language,   USET_FLAG_GLOBAL},
-    {"NoInvite",    neonserv_cmd_uset_noinvite,   USET_FLAG_CHANNEL},
-    {"AutoInvite",  neonserv_cmd_uset_autoinvite, USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
-    {"NoAutoOp",    neonserv_cmd_uset_noautoop,   USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
-    {"NoAutoVoice", neonserv_cmd_uset_noautoop,   USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS | USET_FLAG_INVISIBLE}, //alias of NoAutoOp
-    {"Info",        neonserv_cmd_uset_info,       USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
+    {"Language",        neonserv_cmd_uset_language,    USET_FLAG_GLOBAL},
+    {"BlockInvites",    neonserv_cmd_uset_blockinvite, USET_FLAG_GLOBAL},
+    {"BlockInvite",     neonserv_cmd_uset_blockinvite, USET_FLAG_GLOBAL | USET_FLAG_INVISIBLE},
+    {"BlockAllInvites", neonserv_cmd_uset_blockinvite, USET_FLAG_GLOBAL | USET_FLAG_INVISIBLE},
+    {"NoInvite",        neonserv_cmd_uset_noinvite,    USET_FLAG_CHANNEL},
+    {"AutoInvite",      neonserv_cmd_uset_autoinvite,  USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
+    {"NoAutoOp",        neonserv_cmd_uset_noautoop,    USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
+    {"NoAutoVoice",     neonserv_cmd_uset_noautoop,    USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS | USET_FLAG_INVISIBLE}, //alias of NoAutoOp
+    {"Info",            neonserv_cmd_uset_info,        USET_FLAG_CHANNEL | USET_FLAG_DEFAULTS},
     {NULL, NULL, 0}
 };
 
@@ -144,7 +148,7 @@ static void neonserv_cmd_uset_language(struct ClientSocket *client, struct UserN
         }
     } else
         lang = user->language;
-    reply(getTextBot(), user, "\002Language   \002%s", lang->langname);
+    reply(getTextBot(), user, "\002Language    \002%s", lang->langname);
     char tmp[MAXLEN];
     int tmppos = 0;
     lang = get_default_language();
@@ -157,6 +161,28 @@ static void neonserv_cmd_uset_language(struct ClientSocket *client, struct UserN
     reply(getTextBot(), user, "  %s", tmp);
 }
 
+static void neonserv_cmd_uset_blockinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults) {
+    MYSQL_RES *res;
+    MYSQL_ROW row;
+    printf_mysql_query("SELECT `user_id`, `user_block_invites` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth));
+    res = mysql_use();
+    row = mysql_fetch_row(res);
+    int blockinvite = (row ? atoi(row[1]) : 0);
+    if(argument) {
+        if(!strcmp(argument, "0") || !stricmp(argument, "off") || !stricmp(argument, get_language_string(user, "NS_SET_OFF"))) {
+            blockinvite = 0;
+        } else if(!strcmp(argument, "1") || !stricmp(argument, "on") || !stricmp(argument, get_language_string(user, "NS_SET_ON"))) {
+            blockinvite = 1;
+        }
+        if(blockinvite && !row) {
+            printf_mysql_query("INSERT INTO `users` (`user_user`, `user_block_invites`) VALUES ('%s', '1')", escape_string(user->auth));
+        } else if(blockinvite != atoi(row[1])) {
+            printf_mysql_query("UPDATE `users` SET `user_block_invites` = '%d' WHERE `user_id` = '%s'", blockinvite, row[0]);
+        }
+    }
+    reply(getTextBot(), user, "\002BlockInvite \002%s", (blockinvite ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
+}
+
 static void neonserv_cmd_uset_noinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults) {
     MYSQL_RES *res;
     MYSQL_ROW row;
@@ -186,7 +212,7 @@ static void neonserv_cmd_uset_noinvite(struct ClientSocket *client, struct UserN
             }
         }
     }
-    reply(getTextBot(), user, "\002NoInvite   \002%s", (noinvite ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
+    reply(getTextBot(), user, "\002NoInvite    \002%s", (noinvite ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
 }
 
 static void neonserv_cmd_uset_autoinvite(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults) {
@@ -210,9 +236,9 @@ static void neonserv_cmd_uset_autoinvite(struct ClientSocket *client, struct Use
         }
     }
     if(getInvite)
-        reply(getTextBot(), user, "\002AutoInvite \002%s", ((flags & DB_CHANUSER_AUTOINVITE) ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
+        reply(getTextBot(), user, "\002AutoInvite  \002%s", ((flags & DB_CHANUSER_AUTOINVITE) ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
     else
-        reply(getTextBot(), user, "\002AutoInvite \002%s", get_language_string(user, "NS_USET_NO_ACCESS"));
+        reply(getTextBot(), user, "\002AutoInvite  \002%s", get_language_string(user, "NS_USET_NO_ACCESS"));
 }
 
 static void neonserv_cmd_uset_noautoop(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults) {
@@ -230,7 +256,7 @@ static void neonserv_cmd_uset_noautoop(struct ClientSocket *client, struct UserN
             }
         }
     }
-    reply(getTextBot(), user, "\002NoAutoOp   \002%s", ((flags & DB_CHANUSER_NOAUTOOP) ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
+    reply(getTextBot(), user, "\002NoAutoOp    \002%s", ((flags & DB_CHANUSER_NOAUTOOP) ? get_language_string(user, "NS_SET_ON") : get_language_string(user, "NS_SET_OFF")));
 }
 
 static void neonserv_cmd_uset_info(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument, MYSQL_ROW defaults) {
@@ -242,5 +268,5 @@ static void neonserv_cmd_uset_info(struct ClientSocket *client, struct UserNode
         printf_mysql_query("UPDATE `chanusers` SET `chanuser_infoline` = '%s' WHERE `chanuser_id` = '%s'", escape_string(infoline), defaults[4]);
     } else
         infoline = defaults[1];
-    reply(getTextBot(), user, "\002Info       \002%s", infoline);
+    reply(getTextBot(), user, "\002Info        \002%s", infoline);
 }