summaryrefslogtreecommitdiff
path: root/modules/core/ms_info.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/core/ms_info.cpp')
-rw-r--r--modules/core/ms_info.cpp80
1 files changed, 41 insertions, 39 deletions
diff --git a/modules/core/ms_info.cpp b/modules/core/ms_info.cpp
index 09bf8f97d..04e1087e6 100644
--- a/modules/core/ms_info.cpp
+++ b/modules/core/ms_info.cpp
@@ -20,12 +20,14 @@ class CommandMSInfo : public Command
{
}
- CommandReturn Execute(User *u, const std::vector<Anope::string> &params)
+ CommandReturn Execute(CommandSource &source, const std::vector<Anope::string> &params)
{
+ User *u = source.u;
+
const MemoInfo *mi;
NickAlias *na = NULL;
ChannelInfo *ci = NULL;
- Anope::string nname = !params.empty() ? params[0] : "";
+ const Anope::string &nname = !params.empty() ? params[0] : "";
int hardmax = 0;
if (!nname.empty() && nname[0] != '#' && u->Account()->HasPriv("memoserv/info"))
@@ -33,12 +35,12 @@ class CommandMSInfo : public Command
na = findnick(nname);
if (!na)
{
- u->SendMessage(MemoServ, NICK_X_NOT_REGISTERED, nname.c_str());
+ source.Reply(NICK_X_NOT_REGISTERED, nname.c_str());
return MOD_CONT;
}
else if (na->HasFlag(NS_FORBIDDEN))
{
- u->SendMessage(MemoServ, NICK_X_FORBIDDEN, nname.c_str());
+ source.Reply(NICK_X_FORBIDDEN, nname.c_str());
return MOD_CONT;
}
mi = &na->nc->memos;
@@ -48,12 +50,12 @@ class CommandMSInfo : public Command
{
if (!(ci = cs_findchan(nname)))
{
- u->SendMessage(MemoServ, CHAN_X_NOT_REGISTERED, nname.c_str());
+ source.Reply(CHAN_X_NOT_REGISTERED, nname.c_str());
return MOD_CONT;
}
else if (!check_access(u, ci, CA_MEMO))
{
- u->SendMessage(MemoServ, ACCESS_DENIED);
+ source.Reply(ACCESS_DENIED);
return MOD_CONT;
}
mi = &ci->memos;
@@ -61,7 +63,7 @@ class CommandMSInfo : public Command
}
else if (!nname.empty()) /* It's not a chan and we aren't services admin */
{
- u->SendMessage(MemoServ, ACCESS_DENIED);
+ source.Reply(ACCESS_DENIED);
return MOD_CONT;
}
else
@@ -73,13 +75,13 @@ class CommandMSInfo : public Command
if (!nname.empty() && (ci || na->nc != u->Account()))
{
if (mi->memos.empty())
- u->SendMessage(MemoServ, MEMO_INFO_X_NO_MEMOS, nname.c_str());
+ source.Reply(MEMO_INFO_X_NO_MEMOS, nname.c_str());
else if (mi->memos.size() == 1)
{
if (mi->memos[0]->HasFlag(MF_UNREAD))
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMO_UNREAD, nname.c_str());
+ source.Reply(MEMO_INFO_X_MEMO_UNREAD, nname.c_str());
else
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMO, nname.c_str());
+ source.Reply(MEMO_INFO_X_MEMO, nname.c_str());
}
else
{
@@ -88,55 +90,55 @@ class CommandMSInfo : public Command
if (mi->memos[i]->HasFlag(MF_UNREAD))
++count;
if (count == mi->memos.size())
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMOS_ALL_UNREAD, nname.c_str(), count);
+ source.Reply(MEMO_INFO_X_MEMOS_ALL_UNREAD, nname.c_str(), count);
else if (!count)
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMOS, nname.c_str(), mi->memos.size());
+ source.Reply(MEMO_INFO_X_MEMOS, nname.c_str(), mi->memos.size());
else if (count == 1)
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMOS_ONE_UNREAD, nname.c_str(), mi->memos.size());
+ source.Reply(MEMO_INFO_X_MEMOS_ONE_UNREAD, nname.c_str(), mi->memos.size());
else
- u->SendMessage(MemoServ, MEMO_INFO_X_MEMOS_SOME_UNREAD, nname.c_str(), mi->memos.size(), count);
+ source.Reply(MEMO_INFO_X_MEMOS_SOME_UNREAD, nname.c_str(), mi->memos.size(), count);
}
if (!mi->memomax)
{
if (hardmax)
- u->SendMessage(MemoServ, MEMO_INFO_X_HARD_LIMIT, nname.c_str(), mi->memomax);
+ source.Reply(MEMO_INFO_X_HARD_LIMIT, nname.c_str(), mi->memomax);
else
- u->SendMessage(MemoServ, MEMO_INFO_X_LIMIT, nname.c_str(), mi->memomax);
+ source.Reply(MEMO_INFO_X_LIMIT, nname.c_str(), mi->memomax);
}
else if (mi->memomax > 0)
{
if (hardmax)
- u->SendMessage(MemoServ, MEMO_INFO_X_HARD_LIMIT, nname.c_str(), mi->memomax);
+ source.Reply(MEMO_INFO_X_HARD_LIMIT, nname.c_str(), mi->memomax);
else
- u->SendMessage(MemoServ, MEMO_INFO_X_LIMIT, nname.c_str(), mi->memomax);
+ source.Reply(MEMO_INFO_X_LIMIT, nname.c_str(), mi->memomax);
}
else
- u->SendMessage(MemoServ, MEMO_INFO_X_NO_LIMIT, nname.c_str());
+ source.Reply(MEMO_INFO_X_NO_LIMIT, nname.c_str());
/* I ripped this code out of ircservices 4.4.5, since I didn't want
to rewrite the whole thing (it pisses me off). */
if (na)
{
if (na->nc->HasFlag(NI_MEMO_RECEIVE) && na->nc->HasFlag(NI_MEMO_SIGNON))
- u->SendMessage(MemoServ, MEMO_INFO_X_NOTIFY_ON, nname.c_str());
+ source.Reply(MEMO_INFO_X_NOTIFY_ON, nname.c_str());
else if (na->nc->HasFlag(NI_MEMO_RECEIVE))
- u->SendMessage(MemoServ, MEMO_INFO_X_NOTIFY_RECEIVE, nname.c_str());
+ source.Reply(MEMO_INFO_X_NOTIFY_RECEIVE, nname.c_str());
else if (na->nc->HasFlag(NI_MEMO_SIGNON))
- u->SendMessage(MemoServ, MEMO_INFO_X_NOTIFY_SIGNON, nname.c_str());
+ source.Reply(MEMO_INFO_X_NOTIFY_SIGNON, nname.c_str());
else
- u->SendMessage(MemoServ, MEMO_INFO_X_NOTIFY_OFF, nname.c_str());
+ source.Reply(MEMO_INFO_X_NOTIFY_OFF, nname.c_str());
}
}
else /* !nname || (!ci || na->nc == u->Account()) */
{
if (mi->memos.empty())
- u->SendMessage(MemoServ, MEMO_INFO_NO_MEMOS);
+ source.Reply(MEMO_INFO_NO_MEMOS);
else if (mi->memos.size() == 1)
{
if (mi->memos[0]->HasFlag(MF_UNREAD))
- u->SendMessage(MemoServ, MEMO_INFO_MEMO_UNREAD);
+ source.Reply(MEMO_INFO_MEMO_UNREAD);
else
- u->SendMessage(MemoServ, MEMO_INFO_MEMO);
+ source.Reply(MEMO_INFO_MEMO);
}
else
{
@@ -145,41 +147,41 @@ class CommandMSInfo : public Command
if (mi->memos[i]->HasFlag(MF_UNREAD))
++count;
if (count == mi->memos.size())
- u->SendMessage(MemoServ, MEMO_INFO_MEMOS_ALL_UNREAD, count);
+ source.Reply(MEMO_INFO_MEMOS_ALL_UNREAD, count);
else if (!count)
- u->SendMessage(MemoServ, MEMO_INFO_MEMOS, mi->memos.size());
+ source.Reply(MEMO_INFO_MEMOS, mi->memos.size());
else if (count == 1)
- u->SendMessage(MemoServ, MEMO_INFO_MEMOS_ONE_UNREAD, mi->memos.size());
+ source.Reply(MEMO_INFO_MEMOS_ONE_UNREAD, mi->memos.size());
else
- u->SendMessage(MemoServ, MEMO_INFO_MEMOS_SOME_UNREAD, mi->memos.size(), count);
+ source.Reply(MEMO_INFO_MEMOS_SOME_UNREAD, mi->memos.size(), count);
}
if (!mi->memomax)
{
if (!u->Account()->IsServicesOper() && hardmax)
- u->SendMessage(MemoServ, MEMO_INFO_HARD_LIMIT_ZERO);
+ source.Reply(MEMO_INFO_HARD_LIMIT_ZERO);
else
- u->SendMessage(MemoServ, MEMO_INFO_LIMIT_ZERO);
+ source.Reply(MEMO_INFO_LIMIT_ZERO);
}
else if (mi->memomax > 0)
{
if (!u->Account()->IsServicesOper() && hardmax)
- u->SendMessage(MemoServ, MEMO_INFO_HARD_LIMIT, mi->memomax);
+ source.Reply(MEMO_INFO_HARD_LIMIT, mi->memomax);
else
- u->SendMessage(MemoServ, MEMO_INFO_LIMIT, mi->memomax);
+ source.Reply(MEMO_INFO_LIMIT, mi->memomax);
}
else
- u->SendMessage(MemoServ, MEMO_INFO_NO_LIMIT);
+ source.Reply(MEMO_INFO_NO_LIMIT);
/* Ripped too. But differently because of a seg fault (loughs) */
if (u->Account()->HasFlag(NI_MEMO_RECEIVE) && u->Account()->HasFlag(NI_MEMO_SIGNON))
- u->SendMessage(MemoServ, MEMO_INFO_NOTIFY_ON);
+ source.Reply(MEMO_INFO_NOTIFY_ON);
else if (u->Account()->HasFlag(NI_MEMO_RECEIVE))
- u->SendMessage(MemoServ, MEMO_INFO_NOTIFY_RECEIVE);
+ source.Reply(MEMO_INFO_NOTIFY_RECEIVE);
else if (u->Account()->HasFlag(NI_MEMO_SIGNON))
- u->SendMessage(MemoServ, MEMO_INFO_NOTIFY_SIGNON);
+ source.Reply(MEMO_INFO_NOTIFY_SIGNON);
else
- u->SendMessage(MemoServ, MEMO_INFO_NOTIFY_OFF);
+ source.Reply(MEMO_INFO_NOTIFY_OFF);
}
return MOD_CONT;
}