diff options
author | Sadie Powell <sadie@witchery.services> | 2025-04-23 00:33:48 +0100 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2025-04-23 00:33:48 +0100 |
commit | 508bbe11e681454efa562d30c605f18e141f1d3b (patch) | |
tree | b0c109cf14cfb4ef0f73ca1c7c1d62e843c89381 /modules | |
parent | 095ed3c8c8774e46a90e2cbab50f5965caf5b6c7 (diff) |
Show all privileges in nickserv/alist.
Closes #502.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/nickserv/ns_alist.cpp | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/modules/nickserv/ns_alist.cpp b/modules/nickserv/ns_alist.cpp index aeb817155..ade2ac659 100644 --- a/modules/nickserv/ns_alist.cpp +++ b/modules/nickserv/ns_alist.cpp @@ -51,48 +51,38 @@ public: for (auto *ci : queue) { - ListFormatter::ListEntry entry; - + Anope::string privstr; if (ci->GetFounder() == nc) { - ++chan_count; - entry["Number"] = Anope::ToString(chan_count); - entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; - entry["Access"] = Language::Translate(source.GetAccount(), _("Founder")); - entry["Description"] = ci->desc; - list.AddEntry(entry); - continue; + privstr = Language::Translate(source.GetAccount(), _("Founder")); } - - if (ci->GetSuccessor() == nc) + else if (ci->GetSuccessor() == nc) { - ++chan_count; - entry["Number"] = Anope::ToString(chan_count); - entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; - entry["Access"] = Language::Translate(source.GetAccount(), _("Successor")); - entry["Description"] = ci->desc; - list.AddEntry(entry); - continue; + privstr += Language::Translate(source.GetAccount(), _("Successor")); } AccessGroup access = ci->AccessFor(nc, false); - if (access.empty()) - continue; + if (!access.empty()) + { + for (auto &p : access.paths) + { + // not interested in indirect access + if (p.size() != 1) + continue; + + ChanAccess *a = p[0]; + privstr += access.empty() ? "" : ", "; + privstr += a->AccessSerialize(); + } + } - ++chan_count; + if (privstr.empty()) + continue; // No privs for this channel??? - entry["Number"] = Anope::ToString(chan_count); + ListFormatter::ListEntry entry; + entry["Number"] = Anope::ToString(++chan_count); entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; - for (auto &p : access.paths) - { - // not interested in indirect access - if (p.size() != 1) - continue; - - ChanAccess *a = p[0]; - entry["Access"] = entry["Access"] + ", " + a->AccessSerialize(); - } - entry["Access"] = entry["Access"].substr(2); + entry["Access"] = privstr; entry["Description"] = ci->desc; list.AddEntry(entry); } |