X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fchannels.cpp;h=0afbc93bbba25c1c9c577a299b94a2bd0c041e0d;hb=ca1b136b306784191235a6579da59f7e862003d1;hp=3685f66046c83f00477c21281db6692eefc67ea3;hpb=8f9dafbfa3b62b1c88a8b1ad7988d5786f914528;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/channels.cpp b/src/channels.cpp index 3685f6604..0afbc93bb 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -17,7 +17,7 @@ #include #include "mode.h" -Channel::Channel(InspIRCd* Instance, const std::string &cname, time_t ts) : ServerInstance(Instance) +Channel::Channel(InspIRCd* Instance, const std::string &cname, time_t ts) { chan_hash::iterator findchan = ServerInstance->chanlist->find(cname); if (findchan != Instance->chanlist->end()) @@ -914,7 +914,7 @@ const char* Channel::GetPrefixChar(User *user) { char mchar = m->second->modes[i]; ModeHandler* mh = ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL); - if (mh && mh->GetPrefixRank() > bestrank) + if (mh && mh->GetPrefixRank() > bestrank && mh->GetPrefix()) { bestrank = mh->GetPrefixRank(); pf[0] = mh->GetPrefix(); @@ -930,7 +930,7 @@ unsigned int Membership::getRank() unsigned int rv = 0; if (mchar) { - ModeHandler* mh = chan->ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL); + ModeHandler* mh = ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL); if (mh) rv = mh->GetPrefixRank(); } @@ -960,20 +960,10 @@ const char* Channel::GetAllPrefixChars(User* user) unsigned int Channel::GetPrefixValue(User* user) { - unsigned int bestrank = 0; - UserMembIter m = userlist.find(user); - if (m != userlist.end()) - { - for(unsigned int i=0; i < m->second->modes.length(); i++) - { - char mchar = m->second->modes[i]; - ModeHandler* mh = ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL); - if (mh && mh->GetPrefixRank() > bestrank) - bestrank = mh->GetPrefixRank(); - } - } - return bestrank; + if (m == userlist.end()) + return 0; + return m->second->getRank(); } void Channel::SetPrefix(User* user, char prefix, bool adding)