081fc225155bdd4362559d104aa3ed3869658e6f
[NeonServV5.git] / src / cmd_neonserv_help.c
1
2 #include "cmd_neonserv.h"
3
4 /*
5 * argv[0-*]     index
6 */
7
8 CMD_BIND(neonserv_cmd_help) {
9     char *ident;
10     if(argc)
11         ident = merge_argv(argv, 0, argc);
12     else
13         ident = "0";
14     MYSQL_RES *res;
15     MYSQL_ROW row;
16     printf_mysql_query("SELECT `user_lang` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth));
17     res = mysql_use();
18     char *lang;
19     if ((row = mysql_fetch_row(res)) != NULL)
20         lang = row[0];
21     else
22         lang = "en";
23     printf_mysql_query("SELECT `text` FROM `help` WHERE `lang` = '%s' AND `ident` = '%s'", escape_string(lang), escape_string(ident));
24     res = mysql_use();
25     if ((row = mysql_fetch_row(res)) == NULL) {
26         if(stricmp(lang, "en")) {
27             printf_mysql_query("SELECT `text` FROM `help` WHERE `lang` = 'en' AND `ident` = '%s'", escape_string(ident));
28             res = mysql_use();
29         }
30         if ((row = mysql_fetch_row(res)) == NULL) {
31             reply(getTextBot(), user, "NS_HELP_TOPIC");
32             return;
33         }
34     }
35     char sendBuf[MAXLEN];
36     int sendBufPos = 0;
37     int i;
38     for(i = 0; i < strlen(row[0]); i++) {
39         switch(row[0][i]) {
40             case '\n':
41                 if(sendBufPos) {
42                     sendBuf[sendBufPos] = '\0';
43                     reply(getTextBot(), user, "%s", sendBuf);
44                     sendBufPos = 0;
45                 }
46                 break;
47             case '$':
48                 switch(row[0][i+1]) {
49                     case 'b':
50                         sendBuf[sendBufPos++] = '\002';
51                         i++;
52                         break;
53                     case 'k':
54                         sendBuf[sendBufPos++] = '\003';
55                         i++;
56                         break;
57                     case 'u':
58                         sendBuf[sendBufPos++] = '\031';
59                         i++;
60                         break;
61                     case 'C':
62                     case 'S':
63                         sendBufPos += sprintf(sendBuf + sendBufPos, "%s", client->user->nick);
64                         i++;
65                         break;
66                     default:
67                         sendBuf[sendBufPos++] = '$';
68                         break;
69                 }
70                 break;
71             default:
72                 sendBuf[sendBufPos++] = row[0][i];
73                 break;
74         }
75     }
76     if(sendBufPos) {
77         sendBuf[sendBufPos] = '\0';
78         reply(getTextBot(), user, "%s", sendBuf);
79         sendBufPos = 0;
80     }
81 }