]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/mod-helpserv.c
better email validity checking
[irc/evilnet/x3.git] / src / mod-helpserv.c
index 5e8a5139a5206415af674308475081973bbde587..cc71c225bfaf1e3ae31693d2c5dadd65ab205e8d 100644 (file)
@@ -1,7 +1,7 @@
 /* mod-helpserv.c - Support Helper assistant service
  * Copyright 2002-2003 srvx Development Team
  *
- * This file is part of srvx.
+ * This file is part of x3.
  *
  * srvx is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -218,6 +218,7 @@ static const struct message_entry msgtab[] = {
     { "HSMSG_REQ_PERSIST_PART", "Everything you tell me until you are helped (or you leave %s) will be recorded. If you part %s, your request will be lost." },
     { "HSMSG_REQ_PERSIST_HANDLE", "Everything you tell me until you are helped will be recorded." },
     { "HSMSG_REQ_MAXLEN", "Sorry, but your request has reached the maximum number of lines. Please wait to be assigned to a helper and continue explaining your request to them." },
+    { "HSMSQ_REQ_TEXT_ADDED", "Message from $b%s:$b %s" },
     { "HSMSG_REQ_FOUND_ANOTHER", "Request ID#%lu has been closed. $S detected that you also have request ID#%lu open. If you send $S a message, it will be associated with that request." },
 
 /* Messages that are inserted into request text */
@@ -1085,7 +1086,22 @@ static void helpserv_usermsg(struct userNode *user, struct helpserv_bot *hs, cha
 
     req->updated = now;
     if (!hs->req_maxlen || req->text->used < hs->req_maxlen)
+    {
         string_list_append(req->text, strdup(text));
+
+        struct userNode *likely_helper;
+        /* Find somebody likely to be the helper */
+        if (!req->helper)
+            likely_helper = NULL;
+        else if ((likely_helper = req->helper->handle->users) && !likely_helper->next_authed) {
+            /* only one user it could be :> */
+        } else for (likely_helper = req->helper->handle->users; likely_helper; likely_helper = likely_helper->next_authed)
+            if (GetUserMode(hs->helpchan, likely_helper))
+                break;
+
+        if(likely_helper)
+            send_target_message(1, likely_helper->nick, hs->helpserv, "HSMSQ_REQ_TEXT_ADDED", user->nick, text);
+    }
     else
         helpserv_msguser(user, "HSMSG_REQ_MAXLEN");
 }
@@ -1550,7 +1566,7 @@ static void free_request(void *data) {
 
     /* Logging */
     if (shutting_down && (req->hs->persist_types[PERSIST_T_REQUEST] != PERSIST_CLOSE || !req->handle)) {
-        helpserv_log_request(req, "srvx shutdown");
+        helpserv_log_request(req, "X3 shutdown");
     }
 
     /* Clean up from the unhandled queue */
@@ -2246,7 +2262,7 @@ static HELPSERV_FUNC(cmd_move) {
         }
 
         if (!(hs->helpchan = GetChannel(newchan))) {
-            hs->helpchan = AddChannel(newchan, now, NULL, NULL);
+            hs->helpchan = AddChannel(newchan, now, NULL, NULL, NULL);
             AddChannelUser(hs->helpserv, hs->helpchan)->modes |= MODE_CHANOP;
         } else if (!helpserv_in_channel(hs, old_helpchan)) {
             struct mod_chanmode change;
@@ -2607,7 +2623,7 @@ static struct helpserv_bot *register_helpserv(const char *nick, const char *help
     reg_privmsg_func(hs->helpserv, helpserv_botmsg);
 
     if (!(hs->helpchan = GetChannel(help_channel))) {
-        hs->helpchan = AddChannel(help_channel, now, NULL, NULL);
+        hs->helpchan = AddChannel(help_channel, now, NULL, NULL, NULL);
         AddChannelUser(hs->helpserv, hs->helpchan)->modes |= MODE_CHANOP;
     } else {
         struct mod_chanmode change;
@@ -2854,7 +2870,7 @@ static void set_page_target(struct helpserv_bot *hs, enum page_source idx, const
         }
         new_target = GetChannel(target);
         if (!new_target) {
-            new_target = AddChannel(target, now, NULL, NULL);
+            new_target = AddChannel(target, now, NULL, NULL, NULL);
             AddChannelUser(hs->helpserv, new_target);
         }
     } else {
@@ -3648,7 +3664,7 @@ static void helpserv_conf_read(void) {
     helpserv_conf.db_backup_frequency = str ? ParseInterval(str) : 7200;
 
     str = database_get_data(conf_node, "description", RECDB_QSTRING);
-    helpserv_conf.description = str;
+    helpserv_conf.description = str ? str : "Help Queue Manager";
 
     str = database_get_data(conf_node, "reqlogfile", RECDB_QSTRING);
     if (str && strlen(str))