5b09822d9e2016c2bd9c669c90509a712fb60afa
[NeonServV5.git] / cmd_neonserv_mdeluser.c
1
2 #include "cmd_neonserv.h"
3
4 /*
5 * argv[0]  access (format: minaccess-maxaccess)
6 * argv[1]  pattern
7 */
8
9 CMD_BIND(neonserv_cmd_mdeluser) {
10     if(!checkChannelAccess(user, chan, "channel_candel", 1, 0)) {
11         reply(getTextBot(), user, "NS_ACCESS_DENIED");
12         return;
13     }
14     int min_access, max_access;
15     char *seperator = strstr(argv[0], "-");
16     if(seperator) {
17         *seperator = '\0';
18         seperator++;
19         min_access = atoi(argv[0]);
20         max_access = atoi(seperator);
21         if(max_access > min_access) {
22             reply(getTextBot(), user, "NS_INVALID_ACCESS_RANGE", min_access, max_access);
23             return;
24         }
25     } else {
26         min_access = atoi(argv[0]);
27         max_access = min_access;
28     }
29     if(max_access >= getChannelAccess(user, chan, 1)) {
30         reply(getTextBot(), user, "NS_NO_ACCESS");
31         return;
32     }
33     MYSQL_RES *res;
34     MYSQL_ROW row;
35     int del_count = 0;
36     printf_mysql_query("SELECT `user_user`, `chanuser_id` FROM `chanusers` LEFT JOIN `users` ON `chanuser_uid` = `user_id` WHERE `chanuser_cid` = '%d' AND `chanuser_access` >= '%d' AND `chanuser_access` <= '%d'", chan->channel_id, min_access, max_access);
37     res = mysql_use();
38     while((row = mysql_fetch_row(res)) != NULL) {
39         if(!match(argv[1], row[0])) {
40             del_count++;
41             printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_id` = '%s'", row[1]);
42         }
43     }
44     reply(getTextBot(), user, "NS_MDELUSER_DONE", del_count, argv[1], min_access, max_access, chan->name);
45     if(del_count)
46         logEvent(event);
47 }
48