* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2010 InspIRCd Development Team
* See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
virtual void OnPostOper(User* user, const std::string &opertype, const std::string &opername)
{
- TagIndex::iterator typetag = ServerInstance->Config->opertypes.find(opertype);
- if (typetag == ServerInstance->Config->opertypes.end())
- return;
// whenever a user opers, go through the oper types, find their <type:modes>,
// and if they have one apply their modes. The mode string can contain +modes
// to add modes to the user or -modes to take modes from the user.
- std::string ThisOpersModes = typetag->second->getString("modes");
+ std::string ThisOpersModes = user->oper->getConfig("modes");
if (!ThisOpersModes.empty())
{
ApplyModes(user, ThisOpersModes);
}
-
- if (!opername.empty()) // if user is local ..
- {
- for (int i = 0;; i++)
- {
- ConfigTag* tag = ServerInstance->Config->ConfValue("oper", i);
- if (!tag)
- break;
- if (tag->getString("name") != opername)
- continue;
- ThisOpersModes = tag->getString("modes");
- if (!ThisOpersModes.empty())
- {
- ApplyModes(user, ThisOpersModes);
- }
- break;
- }
- }
}
void ApplyModes(User *u, std::string &smodes)