summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules.h4
-rw-r--r--modules/commands/cs_akick.cpp4
-rw-r--r--modules/commands/ms_del.cpp10
-rw-r--r--modules/commands/os_akill.cpp2
-rw-r--r--src/regchannel.cpp4
5 files changed, 15 insertions, 9 deletions
diff --git a/include/modules.h b/include/modules.h
index 1cb496a54..ce6bbba51 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -516,7 +516,7 @@ class CoreExport Module : public Extensible
/** Called before a XLine is deleted
* @param u The user deleting the XLine
- * @param x The XLine, can be NULL for all XLines
+ * @param x The XLine
* @param xlm The xline manager it was deleted from
*/
virtual void OnDelXLine(User *u, XLine *x, XLineManager *xlm) { }
@@ -835,7 +835,6 @@ class CoreExport Module : public Extensible
* @param nc The nickcore of the memo being deleted
* @param mi The memo info
* @param m The memo
- * @param number What memo number is being deleted, can be 0 for all memos
*/
virtual void OnMemoDel(const NickCore *nc, MemoInfo *mi, Memo *m) { }
@@ -843,7 +842,6 @@ class CoreExport Module : public Extensible
* @param ci The channel of the memo being deleted
* @param mi The memo info
* @param m The memo
- * @param number What memo number is being deleted, can be 0 for all memos
*/
virtual void OnMemoDel(ChannelInfo *ci, MemoInfo *mi, Memo *m) { }
diff --git a/modules/commands/cs_akick.cpp b/modules/commands/cs_akick.cpp
index 328a169d4..beaa8ffd3 100644
--- a/modules/commands/cs_akick.cpp
+++ b/modules/commands/cs_akick.cpp
@@ -207,6 +207,8 @@ class CommandCSAKick : public Command
if (!Number || Number > ci->GetAkickCount())
return;
+ FOREACH_MOD(I_OnAkickDel, OnAkickDel(source.u, ci, ci->GetAkick(Number - 1)));
+
++Deleted;
ci->EraseAkick(Number - 1);
}
@@ -236,6 +238,8 @@ class CommandCSAKick : public Command
bool override = !ci->AccessFor(u).HasPriv("AKICK");
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "to delete " << mask;
+ FOREACH_MOD(I_OnAkickDel, OnAkickDel(u, ci, ci->GetAkick(i)));
+
ci->EraseAkick(i);
source.Reply(_("\002%s\002 deleted from %s autokick list."), mask.c_str(), ci->name.c_str());
diff --git a/modules/commands/ms_del.cpp b/modules/commands/ms_del.cpp
index f0b65eeac..65969b025 100644
--- a/modules/commands/ms_del.cpp
+++ b/modules/commands/ms_del.cpp
@@ -107,13 +107,15 @@ class CommandMSDel : public Command
}
else
{
- if (ci)
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, NULL));
- else
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, NULL));
/* Delete all memos. */
for (unsigned i = 0, end = mi->memos.size(); i < end; ++i)
+ {
+ if (ci)
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, mi->memos[i]));
+ else
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, mi->memos[i]));
delete mi->memos[i];
+ }
mi->memos.clear();
if (!chan.empty())
source.Reply(_("All memos for channel %s have been deleted."), chan.c_str());
diff --git a/modules/commands/os_akill.cpp b/modules/commands/os_akill.cpp
index 89485f706..d886ce2b3 100644
--- a/modules/commands/os_akill.cpp
+++ b/modules/commands/os_akill.cpp
@@ -316,11 +316,11 @@ class CommandOSAKill : public Command
void DoClear(CommandSource &source)
{
User *u = source.u;
- FOREACH_MOD(I_OnDelXLine, OnDelXLine(u, NULL, akills));
for (unsigned i = akills->GetCount(); i > 0; --i)
{
XLine *x = akills->GetEntry(i - 1);
+ FOREACH_MOD(I_OnDelXLine, OnDelXLine(u, x, akills));
akills->DelXLine(x);
}
diff --git a/src/regchannel.cpp b/src/regchannel.cpp
index 34a578917..25526ee8b 100644
--- a/src/regchannel.cpp
+++ b/src/regchannel.cpp
@@ -660,7 +660,7 @@ void ChannelInfo::EraseAkick(unsigned index)
{
if (this->akick.empty() || index >= this->akick.size())
return;
-
+
delete this->akick[index];
this->akick.erase(this->akick.begin() + index);
}
@@ -719,6 +719,8 @@ void ChannelInfo::EraseBadWord(unsigned index)
{
if (this->badwords.empty() || index >= this->badwords.size())
return;
+
+ FOREACH_MOD(I_OnBadWordDel, OnBadWordDel(this, this->badwords[index]));
delete this->badwords[index];
this->badwords.erase(this->badwords.begin() + index);