- prefixlist::iterator n = prefixes.find(user);
- prefixtype pfx = std::make_pair(prefix,prefix_value);
- if (adding)
- {
- if (n != prefixes.end())
- {
- if (std::find(n->second.begin(), n->second.end(), pfx) == n->second.end())
- {
- n->second.push_back(pfx);
- /* We must keep prefixes in rank order, largest first.
- * This is for two reasons, firstly because x-chat *ass-u-me's* this
- * state, and secondly it turns out to be a benefit to us later.
- * See above in GetPrefix().
- */
- std::sort(n->second.begin(), n->second.end(), ModeParser::PrefixComparison);
- }
- }
- else
- {
- pfxcontainer one;
- one.push_back(pfx);
- prefixes.insert(std::make_pair<User*,pfxcontainer>(user, one));
- }
- }
- else
+ ModeHandler* delta_mh = ServerInstance->Modes->FindMode(prefix, MODETYPE_CHANNEL);
+ if (!delta_mh)
+ return;
+ UserMembIter m = userlist.find(user);
+ if (m == userlist.end())
+ return;
+ for(unsigned int i=0; i < m->second->modes.length(); i++)