diff options
Diffstat (limited to 'modules/commands/cs_flags.cpp')
-rw-r--r-- | modules/commands/cs_flags.cpp | 68 |
1 files changed, 36 insertions, 32 deletions
diff --git a/modules/commands/cs_flags.cpp b/modules/commands/cs_flags.cpp index 47a18242e..54a99d7b6 100644 --- a/modules/commands/cs_flags.cpp +++ b/modules/commands/cs_flags.cpp @@ -22,7 +22,7 @@ class FlagsChanAccess : public ChanAccess { } - bool HasPriv(const Anope::string &priv) const anope_override + bool HasPriv(const Anope::string &priv) const override { std::map<Anope::string, char>::iterator it = defaultFlags.find(priv); if (it != defaultFlags.end() && this->flags.count(it->second) > 0) @@ -30,12 +30,12 @@ class FlagsChanAccess : public ChanAccess return false; } - Anope::string AccessSerialize() const anope_override + Anope::string AccessSerialize() const override { return Anope::string(this->flags.begin(), this->flags.end()); } - void AccessUnserialize(const Anope::string &data) anope_override + void AccessUnserialize(const Anope::string &data) override { for (unsigned i = data.length(); i > 0; --i) this->flags.insert(data[i - 1]); @@ -48,9 +48,9 @@ class FlagsChanAccess : public ChanAccess std::set<char> buffer; - for (std::map<Anope::string, char>::iterator it = defaultFlags.begin(), it_end = defaultFlags.end(); it != it_end; ++it) - if (access->HasPriv(it->first)) - buffer.insert(it->second); + for (auto &[priv, flag] : defaultFlags) + if (access->HasPriv(priv)) + buffer.insert(flag); if (buffer.empty()) return "(none)"; @@ -69,7 +69,7 @@ class FlagsAccessProvider : public AccessProvider ap = this; } - ChanAccess *Create() anope_override + ChanAccess *Create() override { return new FlagsChanAccess(this); } @@ -78,7 +78,7 @@ FlagsAccessProvider* FlagsAccessProvider::ap; class CommandCSFlags : public Command { - void DoModify(CommandSource &source, ChannelInfo *ci, Anope::string mask, const Anope::string &flags) + void DoModify(CommandSource &source, ChannelInfo *ci, Anope::string mask, const Anope::string &flags, const Anope::string &description) { if (flags.empty()) { @@ -189,14 +189,14 @@ class CommandCSFlags : public Command add = false; break; case '*': - for (std::map<Anope::string, char>::iterator it = defaultFlags.begin(), it_end = defaultFlags.end(); it != it_end; ++it) + for (const auto &[priv, flag] : defaultFlags) { - bool has = current_flags.count(it->second); + bool has = current_flags.count(flag); // If we are adding a flag they already have or removing one they don't have, don't bother if (add == has) continue; - if (!u_access.HasPriv(it->first) && !u_access.founder) + if (!u_access.HasPriv(priv) && !u_access.founder) { if (source.HasPriv("chanserv/access/modify")) override = true; @@ -205,9 +205,9 @@ class CommandCSFlags : public Command } if (add) - current_flags.insert(it->second); + current_flags.insert(flag); else - current_flags.erase(it->second); + current_flags.erase(flag); } break; default: @@ -218,11 +218,11 @@ class CommandCSFlags : public Command i = flags.length(); } - for (std::map<Anope::string, char>::iterator it = defaultFlags.begin(), it_end = defaultFlags.end(); it != it_end; ++it) + for (const auto &[priv, flag] : defaultFlags) { - if (f != it->second) + if (f != flag) continue; - else if (!u_access.HasPriv(it->first) && !u_access.founder) + else if (!u_access.HasPriv(priv) && !u_access.founder) { if (source.HasPriv("chanserv/access/modify")) override = true; @@ -262,7 +262,8 @@ class CommandCSFlags : public Command return; FlagsChanAccess *access = anope_dynamic_static_cast<FlagsChanAccess *>(provider->Create()); access->SetMask(mask, ci); - access->creator = source.GetNick(); + access->creator = source.GetNick(); + access->description = current ? current->description : description; access->last_seen = current ? current->last_seen : 0; access->created = Anope::CurTime; access->flags = current_flags; @@ -298,7 +299,7 @@ class CommandCSFlags : public Command ListFormatter list(source.GetAccount()); - list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("Flags")).AddColumn(_("Creator")).AddColumn(_("Created")); + list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("Flags")).AddColumn(_("Creator")).AddColumn(_("Created")).AddColumn(_("Description")); unsigned count = 0; for (unsigned i = 0, end = ci->GetAccessCount(); i < end; ++i) @@ -328,6 +329,7 @@ class CommandCSFlags : public Command entry["Flags"] = flags; entry["Creator"] = access->creator; entry["Created"] = Anope::strftime(access->created, source.nc, true); + entry["Description"] = access->description; list.AddEntry(entry); } @@ -339,8 +341,8 @@ class CommandCSFlags : public Command list.Process(replies); source.Reply(_("Flags list for %s"), ci->name.c_str()); - for (unsigned i = 0; i < replies.size(); ++i) - source.Reply(replies[i]); + for (const auto &reply : replies) + source.Reply(reply); if (count == ci->GetAccessCount()) source.Reply(_("End of access list.")); else @@ -368,15 +370,15 @@ class CommandCSFlags : public Command } public: - CommandCSFlags(Module *creator) : Command(creator, "chanserv/flags", 1, 4) + CommandCSFlags(Module *creator) : Command(creator, "chanserv/flags", 1, 5) { this->SetDesc(_("Modify the list of privileged users")); - this->SetSyntax(_("\037channel\037 [MODIFY] \037mask\037 \037changes\037")); + this->SetSyntax(_("\037channel\037 [MODIFY] \037mask\037 \037changes\037 [\037description\037]")); this->SetSyntax(_("\037channel\037 LIST [\037mask\037 | +\037flags\037]")); this->SetSyntax(_("\037channel\037 CLEAR")); } - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override + void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override { const Anope::string &chan = params[0]; const Anope::string &cmd = params.size() > 1 ? params[1] : ""; @@ -409,23 +411,25 @@ class CommandCSFlags : public Command this->DoClear(source, ci); else { - Anope::string mask, flags; + Anope::string mask, flags, description; if (cmd.equals_ci("MODIFY")) { mask = params.size() > 2 ? params[2] : ""; flags = params.size() > 3 ? params[3] : ""; + description = params.size() > 4 ? params[4] : ""; } else { mask = cmd; flags = params.size() > 2 ? params[2] : ""; + description = params.size() > 3 ? params[3] : ""; } - this->DoModify(source, ci, mask, flags); + this->DoModify(source, ci, mask, flags, description); } } - bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override + bool OnHelp(CommandSource &source, const Anope::string &subcommand) override { this->SendSyntax(source); source.Reply(" "); @@ -450,15 +454,15 @@ class CommandCSFlags : public Command typedef std::multimap<char, Anope::string, ci::less> reverse_map; reverse_map reverse; - for (std::map<Anope::string, char>::iterator it = defaultFlags.begin(), it_end = defaultFlags.end(); it != it_end; ++it) - reverse.insert(std::make_pair(it->second, it->first)); + for (auto &[priv, flag] : defaultFlags) + reverse.emplace(flag, priv); - for (reverse_map::iterator it = reverse.begin(), it_end = reverse.end(); it != it_end; ++it) + for (auto &[flag, priv] : reverse) { - Privilege *p = PrivilegeManager::FindPrivilege(it->second); + Privilege *p = PrivilegeManager::FindPrivilege(priv); if (p == NULL) continue; - source.Reply(" %c - %s", it->first, Language::Translate(source.nc, p->desc.c_str())); + source.Reply(" %c - %s", flag, Language::Translate(source.nc, p->desc.c_str())); } return true; @@ -478,7 +482,7 @@ class CSFlags : public Module } - void OnReload(Configuration::Conf *conf) anope_override + void OnReload(Configuration::Conf *conf) override { defaultFlags.clear(); |