Another year is about to end... So we have to update these damn copyright information :P
[NeonServV5.git] / src / cmd_neonserv_listrank.c
index b87f19d7e53f0a2b50e1dd11f07f81ec76439a66..65d53cf89a80e49cd8d21021b1a2137fca8bea56 100644 (file)
@@ -1,5 +1,5 @@
-/* cmd_neonserv_listrank.c - NeonServ v5.0
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* cmd_neonserv_listrank.c - NeonServ v5.3
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 CMD_BIND(neonserv_cmd_listrank) {
     MYSQL_RES *res, *res2;
-    MYSQL_ROW row;
+    MYSQL_ROW row, row2;
     struct Table *table;
     int ranks = 0;
-    printf_mysql_query("SELECT `rank_id`, `rank_name` FROM `support_ranks`");
+    printf_mysql_query("SELECT `rank_id`, `rank_name` FROM `support_ranks` ORDER BY `rank_order` ASC");
     res = mysql_use();
     table = table_init(3, mysql_num_rows(res) + 1, 0);
     char *content[3];
@@ -34,14 +34,23 @@ CMD_BIND(neonserv_cmd_listrank) {
     content[1] = get_language_string(user, "NS_LISTRANK_NAME");
     content[2] = get_language_string(user, "NS_LISTRANK_ASSIGNED");
     table_add(table, content);
+    char usersBuf[MAXLEN];
+    int usersPos, userCount;
+    char assignedBuf[MAXLEN];
     while ((row = mysql_fetch_row(res)) != NULL) {
         ranks++;
         content[0] = row[0];
         content[1] = row[1];
-        printf_mysql_query("SELECT COUNT(*) FROM `users` WHERE `user_rank` = '%s'", row[0]);
+        printf_mysql_query("SELECT `user_user`, `user_god` FROM `users` WHERE `user_rank` = '%s'", row[0]);
         res2 = mysql_use();
-        row = mysql_fetch_row(res2);
-        content[2] = row[0];
+        usersPos = 0;
+        userCount = 0;
+        while((row2 = mysql_fetch_row(res2)) != NULL) {
+            usersPos += sprintf(usersBuf+usersPos, (usersPos ? ", %s%s" : "%s%s"), (strcmp(row2[1], "0") ? "@" : ""), row2[0]);
+            userCount++;
+        }
+        sprintf(assignedBuf, (userCount ? "%d (%s)" : "%d"), userCount, usersBuf);
+        content[2] = assignedBuf;
         table_add(table, content);
     }
     //send the table
@@ -53,8 +62,16 @@ CMD_BIND(neonserv_cmd_listrank) {
     if(!ranks)
         reply(getTextBot(), user, "NS_TABLE_NONE");
     table_free(table);
-    printf_mysql_query("SELECT COUNT(*) FROM `users` WHERE `user_rank` = '0' AND `user_access` > 0");
+    printf_mysql_query("SELECT `user_user` FROM `users` WHERE `user_rank` = '0' AND `user_access` > 0");
     res2 = mysql_use();
-    row = mysql_fetch_row(res2);
-    reply(getTextBot(), user, "NS_LISTRANK_UNRANKED", atoi(row[0]));
+    usersPos = 0;
+    userCount = 0;
+    while((row2 = mysql_fetch_row(res2)) != NULL) {
+        usersPos += sprintf(usersBuf+usersPos, (usersPos ? ", %s%s" : "%s%s"), (strcmp(row2[1], "0") ? "@" : ""), row2[0]);
+        userCount++;
+    }
+    reply(getTextBot(), user, "NS_LISTRANK_UNRANKED", userCount);
+    if(userCount) {
+        reply(getTextBot(), user, "  %s", usersBuf);
+    }
 }