diff options
Diffstat (limited to 'src/channels.cpp')
-rw-r--r-- | src/channels.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/channels.cpp b/src/channels.cpp index 15288ef09..dd41d1344 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -980,6 +980,7 @@ const char* Channel::GetPrefixChar(User *user) return pf; } + const char* Channel::GetAllPrefixChars(User* user) { static char prefix[MAXBUF]; @@ -1000,6 +1001,35 @@ const char* Channel::GetAllPrefixChars(User* user) return prefix; } + +const char* Channel::GetAllPrefixModes(User* user) +{ + static char prefix[MAXBUF]; + int ctr = 0; + *prefix = 0; + + prefixlist::iterator n = prefixes.find(user); + if (n != prefixes.end()) + { + for (std::vector<prefixtype>::iterator x = n->second.begin(); x != n->second.end(); x++) + { + ModeHandler *mh = ServerInstance->Modes->FindPrefix(x->first); + + if (!mh) + { + ServerInstance->Logs->Log("MODES", DEFAULT, "WTF: Can't find mode from prefix %c", x->first); + throw CoreException("I can't find a mode from prefix, HALP!"); + } + else + prefix[ctr++] = mh->GetModeChar(); + } + } + + prefix[ctr] = 0; + + return prefix; +} + unsigned int Channel::GetPrefixValue(User* user) { prefixlist::iterator n = prefixes.find(user); |