From 30858881bbcaad3c1cdd895e2e3f7b554d5f67c5 Mon Sep 17 00:00:00 2001 From: pk910 Date: Fri, 3 Aug 2012 10:18:26 +0200 Subject: [PATCH] NeonHelp: reinvite active requests when resetting the invite list --- src/modules/NeonHelp.mod/bot_NeonHelp.c | 13 +++++++++++++ src/modules/NeonHelp.mod/bot_NeonHelp.h | 1 + src/modules/NeonHelp.mod/cmd_neonhelp_delete.c | 1 + 3 files changed, 15 insertions(+) diff --git a/src/modules/NeonHelp.mod/bot_NeonHelp.c b/src/modules/NeonHelp.mod/bot_NeonHelp.c index 1b7fefa..9e3ba72 100644 --- a/src/modules/NeonHelp.mod/bot_NeonHelp.c +++ b/src/modules/NeonHelp.mod/bot_NeonHelp.c @@ -421,6 +421,17 @@ void neonhelp_destroy_support_request(struct ClientSocket *client, struct NeonHe free(helpnode); } +void neonhelp_invite_active_requests(struct ClientSocket *client, struct ChanNode *support, struct ChanNode *public, struct UserNode *ignore_user) { + struct NeonHelpNode *helpnode; + if(public && client->flags & SOCKET_HAVE_HELPNODE) { + for(helpnode = client->botclass_helpnode; helpnode; helpnode = helpnode->next) { + if(helpnode->status == 1 && helpnode->user != ignore_user && !isUserOnChan(helpnode->user, support)) { + putsock(client, "INVITE %s %s", helpnode->user->nick, support->name); + } + } + } +} + static void neonhelp_event_kick(struct UserNode *user, struct ChanUser *target, char *reason) { struct ClientSocket *client; MYSQL_RES *res; @@ -451,6 +462,7 @@ static void neonhelp_event_kick(struct UserNode *user, struct ChanUser *target, putsock(client, "MODE %s -i", support->name); //clear invite list if(isModeSet(support->modes, 'i')) putsock(client, "MODE %s +i", support->name); + neonhelp_invite_active_requests(client, support, public, target->user); } //free the user's support request if(prev_helpnode) @@ -493,6 +505,7 @@ static void neonhelp_event_part(struct ChanUser *target, char *reason) { putsock(client, "MODE %s -i", support->name); //clear invite list if(isModeSet(support->modes, 'i')) putsock(client, "MODE %s +i", support->name); + neonhelp_invite_active_requests(client, support, public, target->user); } //free the user's support request if(prev_helpnode) diff --git a/src/modules/NeonHelp.mod/bot_NeonHelp.h b/src/modules/NeonHelp.mod/bot_NeonHelp.h index e28a2de..5af9d15 100644 --- a/src/modules/NeonHelp.mod/bot_NeonHelp.h +++ b/src/modules/NeonHelp.mod/bot_NeonHelp.h @@ -48,5 +48,6 @@ void loop_NeonHelp(); void free_NeonHelp(int type); void neonhelp_destroy_support_request(struct ClientSocket *client, struct NeonHelpNode *helpnode, int do_reply); +void neonhelp_invite_active_requests(struct ClientSocket *client, struct ChanNode *support, struct ChanNode *public, struct UserNode *ignore_user); #endif \ No newline at end of file diff --git a/src/modules/NeonHelp.mod/cmd_neonhelp_delete.c b/src/modules/NeonHelp.mod/cmd_neonhelp_delete.c index 2cf57a4..a034ec8 100644 --- a/src/modules/NeonHelp.mod/cmd_neonhelp_delete.c +++ b/src/modules/NeonHelp.mod/cmd_neonhelp_delete.c @@ -84,6 +84,7 @@ CMD_BIND(neonhelp_cmd_delete) { putsock(client, "MODE %s -i", support->name); //clear invite list if(isModeSet(support->modes, 'i')) putsock(client, "MODE %s +i", support->name); + neonhelp_invite_active_requests(client, support, public, helpnode->user); } } if(prev_helpnode) -- 2.20.1