summaryrefslogtreecommitdiff
path: root/modules/webcpanel/pages/chanserv/utils.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/chanserv/utils.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/chanserv/utils.cpp')
-rw-r--r--modules/webcpanel/pages/chanserv/utils.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/modules/webcpanel/pages/chanserv/utils.cpp b/modules/webcpanel/pages/chanserv/utils.cpp
index f14595a82..cf00de9d0 100644
--- a/modules/webcpanel/pages/chanserv/utils.cpp
+++ b/modules/webcpanel/pages/chanserv/utils.cpp
@@ -11,7 +11,7 @@ namespace
{
bool ChannelSort(ChanServ::Channel *ci1, ChanServ::Channel *ci2)
{
- return ci::less()(ci1->name, ci2->name);
+ return ci::less()(ci1->GetName(), ci2->GetName());
}
}
@@ -23,19 +23,16 @@ namespace ChanServ
void BuildChanList(::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);
- for (unsigned i = 0; i < queue.size(); ++i)
+ for (::ChanServ::Channel *ci : chans)
{
- ::ChanServ::Channel *ci = queue[i];
-
- if (na->nc != ci->GetFounder() && ci->AccessFor(na->nc).empty())
+ if (na->GetAccount() != ci->GetFounder() && ci->AccessFor(na->GetAccount()).empty())
continue;
- replacements["CHANNEL_NAMES"] = ci->name;
- replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name);
+ replacements["CHANNEL_NAMES"] = ci->GetName();
+ replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->GetName());
}
}