summaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp30
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);