X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcmd_neonserv_listrank.c;h=65d53cf89a80e49cd8d21021b1a2137fca8bea56;hb=bb5692b9cbff069abbf9573c81e86c3cd2061ceb;hp=b2cf904bd3050ba407cd00e581be245da4d25579;hpb=29eabaf1a49a1accda939fbdef6dad9bd3356b94;p=NeonServV5.git diff --git a/src/cmd_neonserv_listrank.c b/src/cmd_neonserv_listrank.c index b2cf904..65d53cf 100644 --- a/src/cmd_neonserv_listrank.c +++ b/src/cmd_neonserv_listrank.c @@ -1,3 +1,19 @@ +/* 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "cmd_neonserv.h" @@ -7,10 +23,10 @@ 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]; @@ -18,14 +34,24 @@ 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 char **table_lines = table_end(table); @@ -36,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); + } }