}
}
-PrefixMode::PrefixMode(Module* Creator, const std::string& Name, char ModeLetter)
+PrefixMode::PrefixMode(Module* Creator, const std::string& Name, char ModeLetter, unsigned int Rank, char PrefixChar)
: ModeHandler(Creator, Name, ModeLetter, PARAM_ALWAYS, MODETYPE_CHANNEL, MC_PREFIX)
- , prefix(0), prefixrank(0)
+ , prefix(PrefixChar), prefixrank(Rank)
{
list = true;
m_paramtype = TR_NICK;
LastParse.clear();
LastParseParams.clear();
LastParseTranslate.clear();
+ LastChangeList.clear();
if ((!targetchannel) && ((!targetuser) || (IS_SERVER(targetuser))))
{
return;
}
- std::string mode_sequence = parameters[1];
+ const std::string& mode_sequence = parameters[1];
std::string output_mode;
- std::ostringstream output_parameters;
+ std::string output_parameters;
LastParseParams.push_back(output_mode);
LastParseTranslate.push_back(TR_TEXT);
if (pcnt)
{
- output_parameters << " " << parameter;
+ output_parameters.push_back(' ');
+ output_parameters.append(parameter);
LastParseParams.push_back(parameter);
LastParseTranslate.push_back(mh->GetTranslateType());
}
+ LastChangeList.push(mh, adding, parameter);
- if ( (output_mode.length() + output_parameters.str().length() > 450)
+ if ((output_mode.length() + output_parameters.length() > 450)
|| (output_mode.length() > 100)
|| (LastParseParams.size() > ServerInstance->Config->Limits.MaxModes))
{
LastParse = targetchannel ? targetchannel->name : targetuser->nick;
LastParse.append(" ");
LastParse.append(output_mode);
- LastParse.append(output_parameters.str());
+ LastParse.append(output_parameters);
if (!(flags & MODE_LOCALONLY))
ServerInstance->PI->SendMode(user, targetuser, targetchannel, LastParseParams, LastParseTranslate);
else
targetuser->WriteFrom(user, "MODE " + LastParse);
- FOREACH_MOD(OnMode, (user, targetuser, targetchannel, LastParseParams, LastParseTranslate));
+ FOREACH_MOD(OnMode, (user, targetuser, targetchannel, LastChangeList, flags, output_mode));
}
else if (targetchannel && parameters.size() == 2)
{
}
}
-void ModeParser::DisplayListModes(User* user, Channel* chan, std::string &mode_sequence)
+void ModeParser::DisplayListModes(User* user, Channel* chan, const std::string& mode_sequence)
{
seq++;