From c48f0fde3cd4201b3c8aed76ed009b37484566b1 Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Tue, 22 Feb 2011 20:53:50 +0000 Subject: [PATCH 1/2] Don't specify the ident to use for away module in PutModule --- modules/away.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/modules/away.cpp b/modules/away.cpp index 606715c6..9682c2fb 100644 --- a/modules/away.cpp +++ b/modules/away.cpp @@ -162,7 +162,7 @@ public: if (sCommand.Token(1) != "-quiet") { sReason = sCommand.Token(1, true); - PutModNotice("You have been marked as away", "away"); + PutModNotice("You have been marked as away"); } else sReason = sCommand.Token(2, true); @@ -171,40 +171,40 @@ public: else if (sCmdName == "back") { if ((m_vMessages.empty()) && (sCommand.Token(1) != "-quiet")) - PutModNotice("Welcome Back!", "away"); + PutModNotice("Welcome Back!"); Back(); } else if (sCmdName == "messages") { for (u_int a = 0; a < m_vMessages.size(); a++) - PutModule(m_vMessages[a], "away"); + PutModule(m_vMessages[a]); } else if (sCmdName == "delete") { CString sWhich = sCommand.Token(1); if (sWhich == "all") { - PutModNotice("Deleted " + CString(m_vMessages.size()) + " Messages.", "away"); + PutModNotice("Deleted " + CString(m_vMessages.size()) + " Messages."); for (u_int a = 0; a < m_vMessages.size(); a++) m_vMessages.erase(m_vMessages.begin() + a--); } else if (sWhich.empty()) { - PutModNotice("USAGE: delete ", "away"); + PutModNotice("USAGE: delete "); return; } else { u_int iNum = sWhich.ToUInt(); if (iNum >= m_vMessages.size()) { - PutModNotice("Illegal Message # Requested", "away"); + PutModNotice("Illegal Message # Requested"); return; } else { m_vMessages.erase(m_vMessages.begin() + iNum); - PutModNotice("Message Erased.", "away"); + PutModNotice("Message Erased."); } SaveBufferToDisk(); } @@ -212,7 +212,7 @@ public: else if (sCmdName == "save" && m_saveMessages) { SaveBufferToDisk(); - PutModNotice("Messages saved to disk.", "away"); + PutModNotice("Messages saved to disk."); } else if (sCmdName == "ping") { @@ -237,7 +237,7 @@ public: if ((sTime.empty()) || (sWhom.empty()) || (sMessage.empty())) { // illegal format - PutModule("Corrupt message! [" + m_vMessages[a] + "]", "away"); + PutModule("Corrupt message! [" + m_vMessages[a] + "]"); m_vMessages.erase(m_vMessages.begin() + a--); continue; } @@ -248,7 +248,7 @@ public: size_t iCount = strftime(szFormat, 64, "%F %T", &t); if (iCount <= 0) { - PutModule("Corrupt time stamp! [" + m_vMessages[a] + "]", "away"); + PutModule("Corrupt time stamp! [" + m_vMessages[a] + "]"); m_vMessages.erase(m_vMessages.begin() + a--); continue; } @@ -260,11 +260,11 @@ public: } for (map< CString, vector< CString> >::iterator it = msvOutput.begin(); it != msvOutput.end(); ++it) { - PutModule(it->first, "away"); + PutModule(it->first); for (u_int a = 0; a < it->second.size(); a++) PutModule(it->second[a]); } - PutModule("#--- End Messages", "away"); + PutModule("#--- End Messages"); } else if (sCmdName == "enabletimer") { SetAwayTime(300); @@ -289,7 +289,7 @@ public: PutModule("Current timer setting: " + CString(GetAwayTime()) + " seconds"); } else { - PutModule("Commands: away [-quiet], back [-quiet], delete , ping, show, save, enabletimer, disabletimer, settimer , timer", "away"); + PutModule("Commands: away [-quiet], back [-quiet], delete , ping, show, save, enabletimer, disabletimer, settimer , timer"); } } @@ -333,13 +333,13 @@ public: { if (bUsePrivMessage) { - PutModule("Welcome Back!", "away"); - PutModule("You have " + CString(m_vMessages.size()) + " messages!", "away"); + PutModule("Welcome Back!"); + PutModule("You have " + CString(m_vMessages.size()) + " messages!"); } else { - PutModNotice("Welcome Back!", "away"); - PutModNotice("You have " + CString(m_vMessages.size()) + " messages!", "away"); + PutModNotice("Welcome Back!"); + PutModNotice("You have " + CString(m_vMessages.size()) + " messages!"); } } m_sReason = ""; From 6bc36d1708d6e4c9122875d70e2efff93e33a39b Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Tue, 22 Feb 2011 20:56:50 +0000 Subject: [PATCH 2/2] Make CModule::PutModule use CUser::PutModule --- Modules.cpp | 18 ++++++------------ Modules.h | 12 +++--------- User.cpp | 14 ++++++++++++++ User.h | 1 + 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Modules.cpp b/Modules.cpp index 7967ef54..04142f7d 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -539,31 +539,25 @@ bool CModule::PutUser(const CString& sLine) { bool CModule::PutStatus(const CString& sLine) { return (m_pUser) ? m_pUser->PutStatus(sLine, m_pClient) : false; } -unsigned int CModule::PutModule(const CTable& table, const CString& sIdent, const CString& sHost) { +unsigned int CModule::PutModule(const CTable& table) { if (!m_pUser) return 0; unsigned int idx = 0; CString sLine; while (table.GetLine(idx++, sLine)) - PutModule(sLine, sIdent, sHost); + PutModule(sLine); return idx - 1; } -bool CModule::PutModule(const CString& sLine, const CString& sIdent, const CString& sHost) { +bool CModule::PutModule(const CString& sLine) { if (!m_pUser) return false; - return m_pUser->PutUser(":" + GetModNick() + "!" + - (sIdent.empty() ? GetModName() : sIdent) + "@" + sHost + - " PRIVMSG " + m_pUser->GetCurNick() + " :" + sLine, - m_pClient); + return m_pUser->PutModule(GetModName(), sLine, m_pClient); } -bool CModule::PutModNotice(const CString& sLine, const CString& sIdent, const CString& sHost) { +bool CModule::PutModNotice(const CString& sLine) { if (!m_pUser) return false; - return m_pUser->PutUser(":" + GetModNick() + "!" + - (sIdent.empty() ? GetModName() : sIdent) + "@" + sHost + - " NOTICE " + m_pUser->GetCurNick() + " :" + sLine, - m_pClient); + return m_pUser->PutModNotice(GetModName(), sLine, m_pClient); } /////////////////// diff --git a/Modules.h b/Modules.h index 1ba42b44..ab272d13 100644 --- a/Modules.h +++ b/Modules.h @@ -757,28 +757,22 @@ public: * module hook for a specific client, only that client gets this * message, else all connected clients will receive it. * @param sLine The message which should be sent. - * @param sIdent The ident for the module nick. Defaults to the module name. - * @param sHost The hostname for the module nick. Defaults to znc.in * @return true if the line was sent to at least one client. */ - virtual bool PutModule(const CString& sLine, const CString& sIdent = "", const CString& sHost = "znc.in"); + virtual bool PutModule(const CString& sLine); /** This function calls CModule::PutModule(const CString&, const * CString&, const CString&) for each line in the table. * @param table The table which should be send. - * @param sIdent The ident which should be used. - * @param sHost The hostname used for the query. * @return The number of lines sent. */ - virtual unsigned int PutModule(const CTable& table, const CString& sIdent = "", const CString& sHost = "znc.in"); + virtual unsigned int PutModule(const CTable& table); /** Send a notice from your module nick. If we are in a module hook for * a specific client, only that client gets this notice, else all * clients will receive it. * @param sLine The line which should be sent. - * @param sIdent The ident used for the notice. - * @param sHost The host name used for the notice. * @return true if the line was sent to at least one client. */ - virtual bool PutModNotice(const CString& sLine, const CString& sIdent = "", const CString& sHost = "znc.in"); + virtual bool PutModNotice(const CString& sLine); /** @returns The name of the module. */ const CString& GetModName() const { return m_sModName; } diff --git a/User.cpp b/User.cpp index 0ab5ed76..d3e5b06d 100644 --- a/User.cpp +++ b/User.cpp @@ -1104,6 +1104,20 @@ bool CUser::PutModule(const CString& sModule, const CString& sLine, CClient* pCl return (pClient == NULL); } +bool CUser::PutModNotice(const CString& sModule, const CString& sLine, CClient* pClient, CClient* pSkipClient) { + for (unsigned int a = 0; a < m_vClients.size(); a++) { + if ((!pClient || pClient == m_vClients[a]) && pSkipClient != m_vClients[a]) { + m_vClients[a]->PutModNotice(sModule, sLine); + + if (pClient) { + return true; + } + } + } + + return (pClient == NULL); +} + bool CUser::ResumeFile(unsigned short uPort, unsigned long uFileSize) { CSockManager& Manager = CZNC::Get().GetManager(); diff --git a/User.h b/User.h index fc483d72..8df0e32b 100644 --- a/User.h +++ b/User.h @@ -101,6 +101,7 @@ public: bool PutStatus(const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); bool PutStatusNotice(const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); bool PutModule(const CString& sModule, const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); + bool PutModNotice(const CString& sModule, const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); bool IsUserAttached() const { return !m_vClients.empty(); } void UserConnected(CClient* pClient);