diff options
| author | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
| commit | 42238034490fb5479d787bd1695750387d508200 (patch) | |
| tree | c93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/webcpanel/pages/chanserv/utils.cpp | |
| parent | d492923610d9c9146b2a2b63de38deab2cfd4ca7 (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.cpp | 17 |
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()); } } |
