summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-04-23 00:33:48 +0100
committerSadie Powell <sadie@witchery.services>2025-04-23 00:33:48 +0100
commit508bbe11e681454efa562d30c605f18e141f1d3b (patch)
treeb0c109cf14cfb4ef0f73ca1c7c1d62e843c89381
parent095ed3c8c8774e46a90e2cbab50f5965caf5b6c7 (diff)
Show all privileges in nickserv/alist.
Closes #502.
-rw-r--r--modules/nickserv/ns_alist.cpp54
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);
}