*** VERSION 5.3.0 ***
[NeonServV5.git] / src / cmd_neonserv_listrank.c
index f28b4bfd7da21722284ae45937548c58752c1ade..316e3c66ffbe1cc37f355bc23b9d26be4fc3e9e5 100644 (file)
@@ -1,4 +1,4 @@
-/* cmd_neonserv_listrank.c - NeonServ v5.0
+/* cmd_neonserv_listrank.c - NeonServ v5.3
  * Copyright (C) 2011  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -23,7 +23,7 @@
 
 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` ORDER BY `rank_order` ASC");
@@ -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);
+    }
 }