From 84faaef9605df856947277780dfea9d8d7982df1 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Mon, 1 Mar 2010 09:50:49 -0600 Subject: Allow m_autoop to grant channel flags, source its mode changes from the joining user --- src/modules/m_opflags.cpp | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'src/modules/m_opflags.cpp') diff --git a/src/modules/m_opflags.cpp b/src/modules/m_opflags.cpp index 7eb5644e7..9a2373232 100644 --- a/src/modules/m_opflags.cpp +++ b/src/modules/m_opflags.cpp @@ -32,6 +32,30 @@ class OpFlagProviderImpl : public OpFlagProvider return ""; } + void SetFlags(Membership* memb, const std::string& flags) + { + if (flags.empty()) + ext.unset(memb); + else + ext.set(memb, flags); + } + + std::string SetFlags(Membership* memb, const std::set& flags) + { + std::string v; + for(std::set::iterator i = flags.begin(); i != flags.end(); i++) + { + if (i != flags.begin()) + v.push_back(','); + v.append(*i); + } + if (v.empty()) + ext.unset(memb); + else + ext.set(memb, v); + return v; + } + ModResult PermissionCheck(Membership* memb, const std::string& acl, const std::string& needed) { if (!memb) @@ -161,14 +185,7 @@ class FlagCmd : public Command } else { - std::string v; - for(std::set::iterator i = flags.begin(); i != flags.end(); i++) - { - if (i != flags.begin()) - v.push_back(','); - v.append(*i); - } - prov.ext.set(memb, v); + std::string v = prov.SetFlags(memb, flags); chan->WriteChannelWithServ(src->server, "NOTICE %s :%s set %s opflags to %s", chan->name.c_str(), src->nick.c_str(), user->nick.c_str(), v.c_str()); } -- cgit v1.3.1-10-gc9f91