1
0
mirror of https://github.com/anope/anope.git synced 2026-07-08 02:03:13 +02:00

Added /ms ignore

This commit is contained in:
Adam
2010-11-07 20:51:41 -05:00
parent 28aba58e25
commit ac41137ce2
10 changed files with 243 additions and 31 deletions
+50
View File
@@ -905,6 +905,26 @@ class DBMySQL : public Module
FOREACH_RESULT(I_OnDatabaseRead, OnDatabaseRead(params));
}
r = SQL->RunQuery("SELECT * FROM `anope_ns_core_metadata`");
for (int i = 0; i < r.Rows(); ++i)
{
NickCore *nc = findcore(r.Get(i, "nick"));
if (!nc)
continue;
if (r.Get(i, "name") == "MEMO_IGNORE")
nc->memos.ignores.push_back(r.Get(i, "value").ci_str());
}
r = SQL->RunQuery("SELECT * FROM `anope_cs_info_metadata`");
for (int i = 0; i < r.Rows(); ++i)
{
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
if (!ci)
continue;
if (r.Get(i, "name") == "MEMO_IGNORE")
ci->memos.ignores.push_back(r.Get(i, "value").ci_str());
}
return EVENT_STOP;
}
@@ -1073,6 +1093,36 @@ class DBMySQL : public Module
}
}
}
else if (service == MemoServ)
{
if (command.equals_ci("IGNORE") && params.size() > 0)
{
Anope::string target = params[0];
NickCore *nc = NULL;
ChannelInfo *ci = NULL;
if (target[0] != '#')
{
target = u->nick;
nc = u->Account();
if (!nc)
return;
}
else
{
ci = cs_findchan(target);
if (!ci || !check_access(u, ci, CA_MEMO))
return;
}
MemoInfo *mi = ci ? &ci->memos : &nc->memos;
Anope::string table = ci ? "anope_cs_info_metadata" : "anope_ns_core_metadata";
Anope::string ename = ci ? "channel" : "nick";
this->RunQuery("DELETE FROM `" + table + "` WHERE `" + ename + "` = '" + this->Escape(target) + "' AND `name` = 'MEMO_IGNORE'");
for (unsigned j = 0; j < mi->ignores.size(); ++j)
this->RunQuery("INSERT INTO `" + table + "` VALUES(" + ename + ", name, value) ('" + this->Escape(target) + "', 'MEMO_IGNORE', '" + this->Escape(mi->ignores[j]) + "')");
}
}
}
void OnNickAddAccess(NickCore *nc, const Anope::string &entry)