summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/users.h11
-rw-r--r--src/users.cpp10
2 files changed, 21 insertions, 0 deletions
diff --git a/include/users.h b/include/users.h
index 5e7df74ea..8d53197ba 100644
--- a/include/users.h
+++ b/include/users.h
@@ -519,6 +519,11 @@ class CoreExport User : public Extensible
*/
void WriteNotice(const std::string& text) { this->WriteCommand("NOTICE", ":" + text); }
+ /** Send a NOTICE message from the local server to the user.
+ * @param text Text to send
+ */
+ virtual void WriteRemoteNotice(const std::string& text);
+
void WriteRemoteNumeric(const Numeric::Numeric& numeric);
template <typename T1>
@@ -847,6 +852,12 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node<Local
void Write(const std::string& text);
void Write(const char*, ...) CUSTOM_PRINTF(2, 3);
+ /** Send a NOTICE message from the local server to the user.
+ * The message will be sent even if the user is connected to a remote server.
+ * @param text Text to send
+ */
+ void WriteRemoteNotice(const std::string& text) CXX11_OVERRIDE;
+
/** Returns true or false for if a user can execute a privilaged oper command.
* This is done by looking up their oper type from User::oper, then referencing
* this to their oper classes and checking the commands they can execute.
diff --git a/src/users.cpp b/src/users.cpp
index 11f103e9d..db5f8a74d 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -830,6 +830,16 @@ void User::WriteFrom(User *user, const char* text, ...)
this->WriteFrom(user, textbuffer);
}
+void User::WriteRemoteNotice(const std::string& text)
+{
+ ServerInstance->PI->SendUserNotice(this, text);
+}
+
+void LocalUser::WriteRemoteNotice(const std::string& text)
+{
+ WriteNotice(text);
+}
+
namespace
{
class WriteCommonRawHandler : public User::ForEachNeighborHandler