summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/database/db_plain.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/modules/database/db_plain.cpp b/modules/database/db_plain.cpp
index e2ade7974..75b327223 100644
--- a/modules/database/db_plain.cpp
+++ b/modules/database/db_plain.cpp
@@ -549,7 +549,23 @@ class DBPlain : public Module
ci->Extend("suspend_by", new ExtensibleItemRegular<Anope::string>(params[0]));
ci->Extend("suspend_reason", new ExtensibleItemRegular<Anope::string>(params[1]));
}
- else if (key.equals_ci("ACCESS"))
+ else if (key.equals_ci("ACCESS")) // Older access system, from Anope 1.9.4.
+ {
+ service_reference<AccessProvider> provider("access/access");
+ if (!provider)
+ throw DatabaseException("Access entry for nonexistant provider " + params[0]);
+
+ ChanAccess *access = provider->Create();
+ access->ci = ci;
+ access->mask = params[0];
+ access->Unserialize(params[1]);
+ access->last_seen = params[2].is_pos_number_only() ? convertTo<time_t>(params[2]) : 0;
+ access->creator = params[3];
+ access->created = Anope::CurTime;
+
+ ci->AddAccess(access);
+ }
+ else if (key.equals_ci("ACCESS2"))
{
service_reference<AccessProvider> provider(params[0]);
if (!provider)
@@ -790,7 +806,7 @@ class DBPlain : public Module
for (unsigned k = 0, end = ci->GetAccessCount(); k < end; ++k)
{
ChanAccess *access = ci->GetAccess(k);
- db_buffer << "MD ACCESS " << access->provider->name << " " << access->mask << " " << access->Serialize() << " " << access->last_seen << " " << access->creator << " " << access->created << endl;
+ db_buffer << "MD ACCESS2 " << access->provider->name << " " << access->mask << " " << access->Serialize() << " " << access->last_seen << " " << access->creator << " " << access->created << endl;
}
for (unsigned k = 0, end = ci->GetAkickCount(); k < end; ++k)
{