]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/mode.cpp
Comment and tidyup
[user/henk/code/inspircd.git] / src / mode.cpp
index 32033e7f411f4d1dcb3c19804417251ee544dccc..e9b6861c0dcf250786eb975d3eca9a6d78311649 100644 (file)
@@ -1140,6 +1140,7 @@ void process_modes(char **parameters,userrec* user,chanrec *chan,int status, int
                {
                        log(DEBUG,"Local mode change");
                        WriteChannelLocal(chan, user, "MODE %s %s",chan->name,outstr);
+                       FOREACH_MOD OnMode(user, chan, TYPE_CHANNEL, outstr);
                }
                else
                {
@@ -1156,6 +1157,7 @@ void process_modes(char **parameters,userrec* user,chanrec *chan,int status, int
                                if (!silent)
                                {
                                        WriteChannel(chan,user,"MODE %s %s",chan->name,outstr);
+                                       FOREACH_MOD OnMode(user, chan, TYPE_CHANNEL, outstr);
                                }
                        }
                }
@@ -1292,7 +1294,7 @@ void handle_mode(char **parameters, int pcnt, userrec *user)
                can_change = 0;
                if (user != dest)
                {
-                       if (strchr(user->modes,'o'))
+                       if ((strchr(user->modes,'o')) || (is_uline(user->server)))
                        {
                                can_change = 1;
                        }
@@ -1459,6 +1461,7 @@ void handle_mode(char **parameters, int pcnt, userrec *user)
                        if (strcmp(b,""))
                        {
                                WriteTo(user, dest, "MODE %s :%s", dest->nick, b);
+                               FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
                        }
 
                        if (strlen(dmodes)>MAXMODES)
@@ -1514,7 +1517,7 @@ void handle_mode(char **parameters, int pcnt, userrec *user)
                        }
                }
 
-                if ((Ptr) && (!has_channel(user,Ptr)))
+                if (((Ptr) && (!has_channel(user,Ptr))) && (!is_uline(user->server)))
                 {
                         WriteServ(user->fd,"442 %s %s :You're not on that channel!",user->nick, Ptr->name);
                         return;
@@ -1712,6 +1715,7 @@ void server_mode(char **parameters, int pcnt, userrec *user)
                        if (strcmp(b,""))
                        {
                                WriteTo(user, dest, "MODE %s :%s", dest->nick, b);
+                               FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
                        }
                        
                        if (strlen(dmodes)>MAXMODES)
@@ -2098,7 +2102,7 @@ void merge_mode2(char **parameters, int pcnt, userrec* user)
                         if (strcmp(b,""))
                         {
                                WriteTo(user,dest,"MODE %s :%s",dest->nick,b);
-                               log(DEBUG,"Sent: :%s MODE %s",user->nick,b);
+                               FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
                        }
 
                        if (strlen(dmodes)>MAXMODES)