X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_channel%2Fcmd_names.cpp;h=3af99ed2b9ea9e86ff916caa9326f4da9083a248;hb=30fc51c6ddca487a1b89da9ab0ab59da003aee36;hp=9ae58d6fa0d1a6b981b765107e6f7d3f8ac446d8;hpb=930fd98e48f68b050d3938607bf420844fabbc37;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_channel/cmd_names.cpp b/src/coremods/core_channel/cmd_names.cpp index 9ae58d6fa..3af99ed2b 100644 --- a/src/coremods/core_channel/cmd_names.cpp +++ b/src/coremods/core_channel/cmd_names.cpp @@ -53,10 +53,11 @@ CmdResult CommandNames::Handle (const std::vector& parameters, User // - the user doing the /NAMES is inside the channel // - the user doing the /NAMES has the channels/auspex privilege - bool has_user = c->HasUser(user); - if ((!c->IsModeSet(secretmode)) || (has_user) || (user->HasPrivPermission("channels/auspex"))) + // If the user is inside the channel or has privs, instruct SendNames() to show invisible (+i) members + bool show_invisible = ((c->HasUser(user)) || (user->HasPrivPermission("channels/auspex"))); + if ((show_invisible) || (!c->IsModeSet(secretmode))) { - SendNames(user, c, has_user); + SendNames(user, c, show_invisible); return CMD_SUCCESS; } } @@ -65,10 +66,8 @@ CmdResult CommandNames::Handle (const std::vector& parameters, User return CMD_FAILURE; } -void CommandNames::SendNames(User* user, Channel* chan, bool isinside) +void CommandNames::SendNames(User* user, Channel* chan, bool show_invisible) { - bool has_privs = user->HasPrivPermission("channels/auspex"); - std::string list; if (chan->IsModeSet(secretmode)) list.push_back('@'); @@ -87,7 +86,7 @@ void CommandNames::SendNames(User* user, Channel* chan, bool isinside) const Channel::MemberMap& members = chan->GetUsers(); for (Channel::MemberMap::const_iterator i = members.begin(); i != members.end(); ++i) { - if ((!isinside) && (i->first->IsModeSet(invisiblemode)) && (!has_privs)) + if ((!show_invisible) && (i->first->IsModeSet(invisiblemode))) { // Member is invisible and we are not supposed to show them continue;