modified cmd_listrank to show all usernames
authorpk910 <philipp@zoelle1.de>
Fri, 4 Nov 2011 20:50:32 +0000 (21:50 +0100)
committerpk910 <philipp@zoelle1.de>
Fri, 4 Nov 2011 20:50:32 +0000 (21:50 +0100)
src/cmd_neonserv_listrank.c

index f9c387b88e0bcd21993c528bf634e7fe368080cc..051dbbb9a5531e016faf3066160bb4d22eadf142 100644 (file)
@@ -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);
+    }
 }