diff options
author | DukePyrolator <DukePyrolator@anope.org> | 2013-12-01 12:08:51 +0100 |
---|---|---|
committer | DukePyrolator <DukePyrolator@anope.org> | 2013-12-01 12:09:34 +0100 |
commit | c6f85b9312decba0bbcf5dcba4b801a4aab29b56 (patch) | |
tree | 22c7c24b9a301916e52700364cd30047ecef29db /modules | |
parent | 5e4d52ad4717fb07dde629902beb70c252c8c8b4 (diff) |
made the chanstats fantasy modules work again.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/stats/cs_fantasy_stats.cpp | 53 | ||||
-rw-r--r-- | modules/stats/cs_fantasy_top.cpp | 20 |
2 files changed, 45 insertions, 28 deletions
diff --git a/modules/stats/cs_fantasy_stats.cpp b/modules/stats/cs_fantasy_stats.cpp index d54ed4a92..f9aba7f7d 100644 --- a/modules/stats/cs_fantasy_stats.cpp +++ b/modules/stats/cs_fantasy_stats.cpp @@ -37,7 +37,7 @@ class CommandCSStats : public Command CommandCSStats(Module *creator) : Command (creator, "chanserv/stats", 0, 2) { this->SetDesc(_("Displays your Channel Stats")); - this->SetSyntax(_("\037nick\037")); + this->SetSyntax(_("[\037channel\037] [\037nick\037]")); } void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms); @@ -75,10 +75,10 @@ class CSStats : public Module void OnReload(Configuration::Conf *conf) anope_override { - prefix = conf->GetModule(this)->Get<const Anope::string>("prefix"); + prefix = conf->GetModule("m_chanstats")->Get<const Anope::string>("prefix"); if (prefix.empty()) prefix = "anope_"; - this->sql = ServiceReference<SQL::Provider>("SQL::Provider", conf->GetModule(this)->Get<const Anope::string>("engine")); + this->sql = ServiceReference<SQL::Provider>("SQL::Provider", conf->GetModule("m_chanstats")->Get<const Anope::string>("engine")); } SQL::Result RunQuery(const SQL::Query &query) @@ -94,30 +94,51 @@ class CSStats : public Module void DoStats(CommandSource &source, const bool is_global, const std::vector<Anope::string> ¶ms) { - if (!source.c) - return; + Anope::string display, channel; - Anope::string display; - if (params.empty()) - display = source.nc->display; - else if (const NickAlias *na = NickAlias::Find(params[0])) - display = na->nc->display; - else + /* + * possible parameters are: + * stats [channel] [nick] + * stats [channel] + * stats [nick] + * stats + */ + + switch (params.size()) { - source.Reply(_("%s not found."), params[0].c_str()); - return; + case 2: + channel = params[0]; + display = params[1]; + break; + case 1: + if (params[0][0] == '#') + channel = params[0]; + else + { + if (NickAlias *na = NickAlias::Find(params[0])) + display = na->nc->display; + else + { + source.Reply(_("%s not found."), params[0].c_str()); + return; + } + } + break; } + if (display.empty()) + display = source.nc->display; + try { SQL::Query query; query = "SELECT letters, words, line, smileys_happy+smileys_sad+smileys_other as smileys," "actions FROM `" + prefix + "chanstats` " "WHERE `nick` = @nick@ AND `chan` = @channel@ AND `type` = 'total';"; - if (is_global) + if (is_global || channel.empty()) query.SetValue("channel", ""); else - query.SetValue("channel", source.c->ci->name); + query.SetValue("channel", channel); query.SetValue("nick", display); SQL::Result res = this->RunQuery(query); @@ -126,7 +147,7 @@ class CSStats : public Module if (is_global) source.Reply(_("Network stats for %s:"), display.c_str()); else - source.Reply(_("Channel stats for %s on %s:"), display.c_str(), source.c->name.c_str()); + source.Reply(_("Channel stats for %s on %s:"), display.c_str(), channel.c_str()); source.Reply(_("letters: %s, words: %s, lines: %s, smileys %s, actions: %s"), res.Get(0, "letters").c_str(), res.Get(0, "words").c_str(), diff --git a/modules/stats/cs_fantasy_top.cpp b/modules/stats/cs_fantasy_top.cpp index bc08c4c9d..d9f07982a 100644 --- a/modules/stats/cs_fantasy_top.cpp +++ b/modules/stats/cs_fantasy_top.cpp @@ -100,10 +100,10 @@ class CSTop : public Module void OnReload(Configuration::Conf *conf) anope_override { - prefix = conf->GetModule(this)->Get<const Anope::string>("prefix"); + prefix = conf->GetModule("m_chanstats")->Get<const Anope::string>("prefix"); if (prefix.empty()) prefix = "anope_"; - this->sql = ServiceReference<SQL::Provider>("SQL::Provider", conf->GetModule(this)->Get<const Anope::string>("engine")); + this->sql = ServiceReference<SQL::Provider>("SQL::Provider", conf->GetModule("m_chanstats")->Get<const Anope::string>("engine")); } SQL::Result RunQuery(const SQL::Query &query) @@ -119,19 +119,15 @@ class CSTop : public Module void DoTop(CommandSource &source, const std::vector<Anope::string> ¶ms, bool is_global, int limit = 1) { - if (!source.c || !source.c->ci) - return; Anope::string channel; - if (is_global || params.empty()) - channel = source.c->ci->name; - else if (!params.empty()) + if (!params.empty()) channel = params[0]; - else - { - source.Reply(_("%s not found."), params[0].c_str()); - return; - } + else if (source.c && source.c->ci) + channel = source.c->ci->name; + + if (!is_global && channel.empty()) + is_global = true; try { |