#include "configreader.h"
#include "users.h"
-#include "message.h"
#include "modules.h"
-#include "commands.h"
-#include "helperfuncs.h"
#include "wildcard.h"
#include "commands/cmd_who.h"
-extern ServerConfig* Config;
-extern user_hash clientlist;
-extern chan_hash chanlist;
-extern std::vector<userrec*> all_opers;
-
/* get the last 'visible' chan of a user */
static char *getlastchanname(userrec *u)
{
bool realhost = false;
bool realname = false;
+ if (user->registered != REG_ALL)
+ return false;
+
if (opt_realname)
realname = match(user->fullname, matchtext);
/* who on a channel? */
- ch = FindChan(matchtext);
+ ch = ServerInstance->FindChan(matchtext);
if (ch)
{
wholine.append("*");
}
- wholine = wholine + cmode(i->second, ch) + " :0 " + i->second->fullname;
+ wholine = wholine + ch->GetPrefixChar(i->second) + " :0 " + i->second->fullname;
whoresults.push_back(wholine);
}
}
if (opt_viewopersonly)
{
/* Showing only opers */
- for (std::vector<userrec*>::iterator i = all_opers.begin(); i != all_opers.end(); i++)
+ for (std::vector<userrec*>::iterator i = ServerInstance->all_opers.begin(); i != ServerInstance->all_opers.end(); i++)
{
userrec* oper = *i;
wholine.append("*");
}
- wholine = wholine + cmode(oper, ch) + " :0 " + oper->fullname;
+ wholine = wholine + ch->GetPrefixChar(oper) + " :0 " + oper->fullname;
whoresults.push_back(wholine);
}
}
}
else
{
- for (user_hash::iterator i = clientlist.begin(); i != clientlist.end(); i++)
+ for (user_hash::iterator i = ServerInstance->clientlist.begin(); i != ServerInstance->clientlist.end(); i++)
{
if (whomatch(i->second, matchtext, opt_realname, opt_showrealhost))
{
wholine.append("*");
}
- wholine = wholine + cmode(i->second, ch) + " :0 " + i->second->fullname;
+ wholine = wholine + ch->GetPrefixChar(i->second) + " :0 " + i->second->fullname;
whoresults.push_back(wholine);
}
}
}
}
/* Send the results out */
- if ((whoresults.size() < (size_t)Config->MaxWhoResults) && (!opt_unlimit))
+ if ((whoresults.size() < (size_t)ServerInstance->Config->MaxWhoResults) && (!opt_unlimit))
{
for (std::vector<std::string>::const_iterator n = whoresults.begin(); n != whoresults.end(); n++)
user->WriteServ(*n);
- user->WriteServ("315 %s %s :End of /WHO list.",user->nick, parameters[0]);
+ user->WriteServ("315 %s %s :End of /WHO list.",user->nick, *parameters[0] ? parameters[0] : "*");
}
else
{