#include <stdlib.h>
#include <assert.h>
-
-#include "../lib/sstring.h"
-#include "../lib/irc_string.h"
-#include "../channel/channel.h"
-#include "../localuser/localuserchannel.h"
-#include "../core/schedule.h"
+#include <string.h>
+#include <ctype.h>
#include "hchannel.h"
#include "haccount.h"
while (hchan->htickets)
hticket_del(hchan->htickets, hchan);
- localpartchannel(helpmodnick, hchan->real_channel);
+ localpartchannel(helpmodnick, hchan->real_channel, "Channel Removed");
free(hchan);
huser_on_channel((*hchanuser)->husr, hchan)->flags |= H_IDLE_WARNING;
}
}
- hcommit_modes();
+ /*hcommit_modes();*/
hchanuser = &(*hchanuser)->next;
- }
+ }
+ hcommit_modes();
}
/* Additionally, test if the channel has queue but no idle opers / staff */
if (hchan->flags & H_QUEUE && hchan->flags & H_QUEUE_TIMEOUT)
{
hchannel_user *tmp;
for (tmp = hchan->channel_users;tmp;tmp = tmp->next)
- if (huser_get_level(tmp->husr) > H_PEON)
+ if (huser_get_level(tmp->husr) >= H_TRIAL)
{
huser_channel *huserchan = huser_on_channel(tmp->husr, hchan);
if ((time(NULL) - huserchan->last_activity < HELPMOD_QUEUE_TIMEOUT) && (huserchan->last_activity != tmp->time_joined))
/*if (on_queue(husr, huserchan) || on_desk(husr, huserchan))*/
if (huserchan != NULL)
{
- hchannel_user *tmp, **hchanuser = &hchan->channel_users;
+ hchannel_user *tmp = NULL, **hchanuser = &hchan->channel_users;
for (;*hchanuser;hchanuser = &(*hchanuser)->next)
if ((*hchanuser)->husr == husr)
{
break;
}
*hchanuser = tmp;
+ assert(*hchanuser != NULL);
(*hchanuser)->next = NULL;
if (on_desk(husr, huserchan))
{
return "No";
}
+int hchannel_highlight_detection(hchannel *hchan, const char *message)
+{
+ char buffer[512], *buffer_ptr = buffer, *ptr = buffer;
+ int i, matches = 0;
+
+ strcpy(buffer, message);
+
+ /* remove commas */
+ for (i=0;i<512 && buffer[i] != '\0';i++)
+ if (buffer[i] == ',')
+ buffer[i] = ' ';
+
+ /* reset i for loop */
+ i = 0;
+ do
+ {
+ nick *tmp;
+ huser *tmp_huser;
+ huser_channel *tmp_huserchan;
+
+ if (i++ > 6)
+ break;
+
+ while (*buffer_ptr && isspace(*buffer_ptr))
+ buffer_ptr++;
+
+ if (*buffer_ptr == '@')
+ buffer_ptr++;
+
+ if (*buffer_ptr)
+ {
+ ptr = strchr(buffer_ptr, ' ');
+ if (ptr)
+ {
+ *ptr = '\0';
+ ptr++;
+ }
+ if ((tmp = getnickbynick(buffer_ptr)))
+ if ((tmp_huser = huser_get(tmp)))
+ if ((tmp_huserchan = huser_on_channel(tmp_huser, hchan)))
+ if ((tmp_huserchan->flags & HCUMODE_OP) && strlen(huser_get_nick(tmp_huser)) > 1)
+ matches++;
+ }
+ if (ptr == NULL)
+ break;
+ else
+ buffer_ptr = ptr;
+ } while (*ptr);
+
+ if (matches > 2)
+ return 1;
+ else
+ return 0;
+}
const char *hchannel_get_sname(int flag)
{
case 19:
return "Require a ticket to join";
case 20:
- return "Send a message on ticket issue";
+ return "Send a message on ticket issue";
+ case 21:
+ return "Excessive highlight prevention";
default:
return "Error, please contact strutsi";
}