summaryrefslogtreecommitdiff
path: root/modules/webcpanel/pages/nickserv/alist.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
committerAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
commit42238034490fb5479d787bd1695750387d508200 (patch)
treec93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/webcpanel/pages/nickserv/alist.cpp
parentd492923610d9c9146b2a2b63de38deab2cfd4ca7 (diff)
Rewrite serializable to have field level granularity
Represent serializable objects in a digraph, and as a result made most object relationships implicitly defined, and use the graph to trace references between objects to determine relationships. Edges may also be marked as having a dependency of the object they point to, which allows for automatic cleanup and deletion of most objects when no longer needed. Additionally, this allows not having to require in-memory copies of everything when using external databases. db_sql has been rewritten for this and now always requires a database to function. db_sql with MySQL now requires InnoDB to make use of transactions and foreign key constraints.
Diffstat (limited to 'modules/webcpanel/pages/nickserv/alist.cpp')
-rw-r--r--modules/webcpanel/pages/nickserv/alist.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/modules/webcpanel/pages/nickserv/alist.cpp b/modules/webcpanel/pages/nickserv/alist.cpp
index 04d1d1cd4..105f1c117 100644
--- a/modules/webcpanel/pages/nickserv/alist.cpp
+++ b/modules/webcpanel/pages/nickserv/alist.cpp
@@ -9,7 +9,7 @@
static bool ChannelSort(ChanServ::Channel *ci1, ChanServ::Channel *ci2)
{
- return ci::less()(ci1->name, ci2->name);
+ return ci::less()(ci1->GetName(), ci2->GetName());
}
WebCPanel::NickServ::Alist::Alist(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
@@ -18,34 +18,31 @@ WebCPanel::NickServ::Alist::Alist(const Anope::string &cat, const Anope::string
bool WebCPanel::NickServ::Alist::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, ::NickServ::Nick *na, TemplateFileServer::Replacements &replacements)
{
- std::deque<::ChanServ::Channel *> queue;
- na->nc->GetChannelReferences(queue);
- std::sort(queue.begin(), queue.end(), ChannelSort);
+ std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel);
+ std::sort(chans.begin(), chans.end(), ChannelSort);
int chan_count = 0;
- for (unsigned q = 0; q < queue.size(); ++q)
+ for (::ChanServ::Channel *ci : chans)
{
- ::ChanServ::Channel *ci = queue[q];
-
- if (ci->GetFounder() == na->nc)
+ if (ci->GetFounder() == na->GetAccount())
{
++chan_count;
replacements["NUMBERS"] = stringify(chan_count);
- replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name;
+ replacements["CHANNELS"] = (ci->HasFieldS("CS_NO_EXPIRE") ? "!" : "") + ci->GetName();
replacements["ACCESSES"] = "Founder";
continue;
}
- ::ChanServ::AccessGroup access = ci->AccessFor(na->nc);
+ ::ChanServ::AccessGroup access = ci->AccessFor(na->GetAccount());
if (access.empty())
continue;
++chan_count;
replacements["NUMBERS"] = stringify(chan_count);
- replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name;
+ replacements["CHANNELS"] = (ci->HasFieldS("CS_NO_EXPIRE") ? "!" : "") + ci->GetName();
Anope::string access_str;
for (unsigned i = 0; i < access.size(); ++i)
access_str += ", " + access[i]->AccessSerialize();