summaryrefslogtreecommitdiff
path: root/modules/database/db_plain.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-08-25 18:24:06 -0400
committerAdam <Adam@anope.org>2011-09-10 01:58:39 -0400
commit62752db4c49a8679b51d5996003fd3a23c2a3f2d (patch)
treea947585812f85d97bddf66a79854d10acb11f713 /modules/database/db_plain.cpp
parentf025d1b495cee3aadb6b7b45652d1cab3b7b7b6d (diff)
Rewrote mlock saving/loading code to not use this silly extensible hack
Diffstat (limited to 'modules/database/db_plain.cpp')
-rw-r--r--modules/database/db_plain.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/modules/database/db_plain.cpp b/modules/database/db_plain.cpp
index d2433b6fe..340775e0c 100644
--- a/modules/database/db_plain.cpp
+++ b/modules/database/db_plain.cpp
@@ -606,15 +606,19 @@ class DBPlain : public Module
}
else if (key.equals_ci("MLOCK"))
{
- std::vector<Anope::string> mlocks;
- ci->GetExtRegular("db_mlock", mlocks);
-
- Anope::string mlock_string = params[0] + " " + params[1] + " " + params[2] + " " + params[3];
- if (params.size() > 4)
- mlock_string += " " + params[4];
-
- mlocks.push_back(mlock_string);
- ci->Extend("db_mlock", new ExtensibleItemRegular<std::vector<Anope::string> >(mlocks));
+ bool set = params[0] == "1" ? true : false;
+ Anope::string mode_name = params[1];
+ Anope::string setter = params[2];
+ time_t created = params[3].is_pos_number_only() ? convertTo<time_t>(params[3]) : Anope::CurTime;
+ Anope::string param = params.size() > 4 ? params[4] : "";
+
+ for (size_t i = CMODE_BEGIN + 1; i < CMODE_END; ++i)
+ if (ChannelModeNameStrings[i] == mode_name)
+ {
+ ChannelModeName n = static_cast<ChannelModeName>(i);
+ ci->mode_locks.insert(std::make_pair(n, ModeLock(set, n, param, setter, created)));
+ break;
+ }
}
else if (key.equals_ci("MI"))
{