added some more events
authorpk910 <philipp@zoelle1.de>
Thu, 28 Jul 2011 10:16:10 +0000 (12:16 +0200)
committerpk910 <philipp@zoelle1.de>
Thu, 28 Jul 2011 10:16:10 +0000 (12:16 +0200)
ModCMD/ModCMD.class.php
Uplink/EventHandler.interface.php
Uplink/Uplink.class.php

index 026b8ae5deea020ab6ffc8c5ed1a56ba38ee64f8..e1b81cd87a5b16dc06c96a2430f976f8f6ac441e 100644 (file)
@@ -40,11 +40,14 @@ define("BIND_QUIT", $bindid++);
 define("BIND_JOIN", $bindid++);
 define("BIND_PART", $bindid++);
 define("BIND_KICK", $bindid++);
 define("BIND_JOIN", $bindid++);
 define("BIND_PART", $bindid++);
 define("BIND_KICK", $bindid++);
+define("BIND_AWAY", $bindid++);
 define("BIND_CHANMODE", $bindid++);
 define("BIND_CHANMSG", $bindid++);
 define("BIND_PRIVMSG", $bindid++);
 define("BIND_CHANNOTICE", $bindid++);
 define("BIND_PRIVNOTICE", $bindid++);
 define("BIND_CHANMODE", $bindid++);
 define("BIND_CHANMSG", $bindid++);
 define("BIND_PRIVMSG", $bindid++);
 define("BIND_CHANNOTICE", $bindid++);
 define("BIND_PRIVNOTICE", $bindid++);
+define("BIND_CTCP", $bindid++);
+define("BIND_CTCPREPLY", $bindid++);
 define("BIND_PREPARSE", $bindid++);
 define("BIND_UNKNOWNCMD", $bindid++);
 
 define("BIND_PREPARSE", $bindid++);
 define("BIND_UNKNOWNCMD", $bindid++);
 
@@ -101,24 +104,6 @@ class ModCMD implements EventHandler {
        /********************************************************************************************
         *                                       EVENT HANDLER                                      *
         ********************************************************************************************/
        /********************************************************************************************
         *                                       EVENT HANDLER                                      *
         ********************************************************************************************/
-       //All events trigger a binding. You may set the same binding for eg. CHANMODE and USERMODE (or some others)
-       //to get only one binding for both events... but i think that's senceless
-       const EVENT_NEWSERVER  = BIND_NEWSERVER;
-       const EVENT_SQUIT      = BIND_SQUIT;
-       const EVENT_CONNECT    = BIND_CONNECT;
-       const EVENT_NICK       = BIND_NICK;
-       const EVENT_USERMODE   = BIND_USERMODE;
-       const EVENT_QUIT       = BIND_QUIT;
-       const EVENT_JOIN       = BIND_JOIN;
-       const EVENT_PART       = BIND_PART;
-       const EVENT_KICK       = BIND_KICK;
-       const EVENT_CHANMODE   = BIND_CHANMODE;
-       const EVENT_CHANMSG    = BIND_CHANMSG;
-       const EVENT_PRIVMSG    = BIND_PRIVMSG;
-       const EVENT_CHANNOTICE = BIND_CHANNOTICE;
-       const EVENT_PRIVNOTICE = BIND_PRIVNOTICE;
-       const EVENT_PREPARSE   = BIND_PREPARSE;
-       const EVENT_UNKNOWNCMD = BIND_UNKNOWNCMD;
        
        private function event($type, $parameters) {
                if(array_key_exists($type, self::$bindings)) {
        
        private function event($type, $parameters) {
                if(array_key_exists($type, self::$bindings)) {
@@ -129,67 +114,87 @@ class ModCMD implements EventHandler {
        }
        
        public function event_newserver($server, $isBurst) {
        }
        
        public function event_newserver($server, $isBurst) {
-               $this->event(self::EVENT_NEWSERVER, array($server, $isBurst));
+               $this->event(BIND_NEWSERVER, array($server, $isBurst));
        }
        
        public function event_squit($server){
        }
        
        public function event_squit($server){
-               $this->event(self::EVENT_SQUIT, array($server));
+               $this->event(BIND_SQUIT, array($server));
        }
        
        public function event_connect($user, $isBurst) {
        }
        
        public function event_connect($user, $isBurst) {
-               $this->event(self::EVENT_CONNECT, array($user, $isBurst));
+               $this->event(BIND_CONNECT, array($user, $isBurst));
        }
        
        public function event_nick($user, $newNick) {
        }
        
        public function event_nick($user, $newNick) {
-               $this->event(self::EVENT_NICK, array($user, $newNick));
+               $this->event(BIND_NICK, array($user, $newNick));
        }
        
        public function event_usermode($user, $modes) {
        }
        
        public function event_usermode($user, $modes) {
-               $this->event(self::EVENT_USERMODE, array($user, $modes));
+               $this->event(BIND_USERMODE, array($user, $modes));
        }
        
        public function event_quit($user, $reason) {
        }
        
        public function event_quit($user, $reason) {
-               $this->event(self::EVENT_QUIT, array($user, $reason));
+               $this->event(BIND_QUIT, array($user, $reason));
        }
        
        public function event_join($user, $channel, $isBurst) {
        }
        
        public function event_join($user, $channel, $isBurst) {
-               $this->event(self::EVENT_JOIN, array($user, $channel, $isBurst));
+               $this->event(BIND_JOIN, array($user, $channel, $isBurst));
        }
        
        public function event_part($user, $channel, $reason) {
        }
        
        public function event_part($user, $channel, $reason) {
-               $this->event(self::EVENT_PART, array($user, $channel, $reason));
+               $this->event(BIND_PART, array($user, $channel, $reason));
        }
        
        public function event_kick($user, $target, $channel, $reason) {
        }
        
        public function event_kick($user, $target, $channel, $reason) {
-               $this->event(self::EVENT_KICK, array($user, $target, $channel, $reason));
+               $this->event(BIND_KICK, array($user, $target, $channel, $reason));
        }
        
        public function event_chanmode($user, $channel, $modes) {
        }
        
        public function event_chanmode($user, $channel, $modes) {
-               $this->event(self::EVENT_CHANMODE, array($user, $channel, $modes));
+               $this->event(BIND_CHANMODE, array($user, $channel, $modes));
        }
        
        public function event_chanmessage($user, $channel, $message) {
        }
        
        public function event_chanmessage($user, $channel, $message) {
-               $this->event(self::EVENT_CHANMSG, array($user, $channel, $message));
+               $this->event(BIND_CHANMSG, array($user, $channel, $message));
        }
        
        public function event_channotice($user, $channel, $message) {
        }
        
        public function event_channotice($user, $channel, $message) {
-               $this->event(self::EVENT_CHANNOTICE, array($user, $channel, $message));
+               $this->event(BIND_CHANNOTICE, array($user, $channel, $message));
        }
        
        }
        
-       public function event_privmessage($user, $channel, $message) {
-               $this->event(self::EVENT_PRIVMSG, array($user, $channel, $message));
+       public function event_privmessage($user, $target, $message) {
+               $this->event(BIND_PRIVMSG, array($user, $target, $message));
        }
        
        }
        
-       public function event_privnotice($user, $channel, $message) {
-               $this->event(self::EVENT_PRIVNOTICE, array($user, $channel, $message));
+       public function event_privnotice($user, $target, $message) {
+               $this->event(BIND_PRIVNOTICE, array($user, $target, $message));
        }
        
        public function event_preparse($from, $command, $arguments) {
        }
        
        public function event_preparse($from, $command, $arguments) {
-               $this->event(self::EVENT_PREPARSE, array($from, $command, $arguments));
+               $this->event(BIND_PREPARSE, array($from, $command, $arguments));
        }
        
        public function event_unknown_cmd($from, $command, $arguments) {
        }
        
        public function event_unknown_cmd($from, $command, $arguments) {
-               $this->event(self::EVENT_UNKNOWNCMD, array($from, $command, $arguments));
+               $this->event(BIND_UNKNOWNCMD, array($from, $command, $arguments));
+       }
+       
+       public function event_chanctcp($user, $channel, $command, $text) {
+               $this->event(BIND_CTCP, array($user, $channel, $command, $text, true));
+       }
+       
+       public function event_chanctcpreply($user, $target, $command, $text) {
+               $this->event(BIND_CTCPREPLY, array($user, $channel, $command, $text, true));
+       }
+       
+       public function event_privctcp($user, $target, $command, $text) {
+               $this->event(BIND_CTCP, array($user, $channel, $command, $text, false));
+       }
+       
+       public function event_privctcpreply($user, $target, $command, $text) {
+               $this->event(BIND_CTCPREPLY, array($user, $channel, $command, $text, false));
+       }
+       
+       public function event_away($user, $away) {
+               $this->event(BIND_AWAY, array($user, $away));
        }
        
 }
        }
        
 }
index b441841d26301d051cf175dd1ee20562c1eb4dcf..d4dc99cddbf58281c98e9efd5f6558884798a2d8 100644 (file)
@@ -35,6 +35,7 @@ interface EventHandler {
        public function event_nick($user, $newNick);
        public function event_usermode($user, $modes);
        public function event_quit($user, $reason);
        public function event_nick($user, $newNick);
        public function event_usermode($user, $modes);
        public function event_quit($user, $reason);
+       public function event_away($user, $away);
        
        public function event_join($user, $channel, $isBurst);
        public function event_part($user, $channel, $reason);
        
        public function event_join($user, $channel, $isBurst);
        public function event_part($user, $channel, $reason);
@@ -42,9 +43,14 @@ interface EventHandler {
        public function event_chanmode($user, $channel, $modes);
        
        public function event_chanmessage($user, $channel, $message);
        public function event_chanmode($user, $channel, $modes);
        
        public function event_chanmessage($user, $channel, $message);
-       public function event_channotice($user, $channel, $message);    
-       public function event_privmessage($user, $channel, $message);
-       public function event_privnotice($user, $channel, $message);
+       public function event_channotice($user, $channel, $message);
+       public function event_chanctcp($user, $channel, $command, $text);
+       public function event_chanctcpreply($user, $target, $command, $text);
+       public function event_privmessage($user, $target, $message);
+       public function event_privnotice($user, $target, $message);
+       public function event_privctcp($user, $target, $command, $text);
+       public function event_privctcpreply($user, $target, $command, $text);
+       
        
        public function event_preparse($from, $command, $arguments);
        public function event_unknown_cmd($from, $command, $arguments);
        
        public function event_preparse($from, $command, $arguments);
        public function event_unknown_cmd($from, $command, $arguments);
index 232d976619a9abba4b373fd16c960786ff463302..85adeaeb81bc92f46482e536e25d82671f210e7d 100644 (file)
@@ -556,14 +556,30 @@ class Uplink {
                                $channel = P10_Channel::getChannelByName($args[0]);
                                if($channel == null)
                                        $channel = new P10_Channel($args[0]);
                                $channel = P10_Channel::getChannelByName($args[0]);
                                if($channel == null)
                                        $channel = new P10_Channel($args[0]);
-                               $this->eventHandler->event_chanmessage($user, $channel, $args[1]);
+                               if(strlen($args[1]) > 0 && $args[1][0] == "\001") {
+                                       //ctcp
+                                       $args[1] = substr($args[1],1);
+                                       if($args[1][strlen($args[1])-1] == "\001")
+                                               $args[1] = substr($args[1],0,-1);
+                                       $ctcpexp = explode(" ",$args[1],2);
+                                       $this->eventHandler->event_chanctcp($user, $channel, strtoupper($ctcpexp[0]), (count($ctcpexp) > 1 ? $ctcpexp[1] : null));
+                               } else
+                                       $this->eventHandler->event_chanmessage($user, $channel, $args[1]);
                        } else {
                                $targetUser = P10_User::getUserByNum($args[0]);
                                if($targetUser == null) {
                                        trigger_error("Server tries to send a privmsg to an user that does not exist or was not found on recv_privmsg.", E_USER_ERROR);
                                        return;
                                }
                        } else {
                                $targetUser = P10_User::getUserByNum($args[0]);
                                if($targetUser == null) {
                                        trigger_error("Server tries to send a privmsg to an user that does not exist or was not found on recv_privmsg.", E_USER_ERROR);
                                        return;
                                }
-                               $this->eventHandler->event_privmessage($user, $targetUser, $args[1]);
+                               if(strlen($args[1]) > 0 && $args[1][0] == "\001") {
+                                       //ctcp
+                                       $args[1] = substr($args[1],1);
+                                       if($args[1][strlen($args[1])-1] == "\001")
+                                               $args[1] = substr($args[1],0,-1);
+                                       $ctcpexp = explode(" ",$args[1],2);
+                                       $this->eventHandler->event_privctcp($user, $targetUser, strtoupper($ctcpexp[0]), (count($ctcpexp) > 1 ? $ctcpexp[1] : null));
+                               } else
+                                       $this->eventHandler->event_privmessage($user, $targetUser, $args[1]);
                        }
                }
        }
                        }
                }
        }
@@ -579,14 +595,30 @@ class Uplink {
                                $channel = P10_Channel::getChannelByName($args[0]);
                                if($channel == null)
                                        $channel = new P10_Channel($args[0]);
                                $channel = P10_Channel::getChannelByName($args[0]);
                                if($channel == null)
                                        $channel = new P10_Channel($args[0]);
-                               $this->eventHandler->event_channotice($user, $channel, $args[1]);
+                               if(strlen($args[1]) > 0 && $args[1][0] == "\001") {
+                                       //ctcp
+                                       $args[1] = substr($args[1],1);
+                                       if($args[1][strlen($args[1])-1] == "\001")
+                                               $args[1] = substr($args[1],0,-1);
+                                       $ctcpexp = explode(" ",$args[1],2);
+                                       $this->eventHandler->event_chanctcpreply($user, $channel, strtoupper($ctcpexp[0]), (count($ctcpexp) > 1 ? $ctcpexp[1] : null));
+                               } else
+                                       $this->eventHandler->event_channotice($user, $channel, $args[1]);
                        } else {
                                $targetUser = P10_User::getUserByNum($args[0]);
                                if($targetUser == null) {
                                        trigger_error("Server tries to send a notice to an user that does not exist or was not found on recv_notice.", E_USER_ERROR);
                                        return;
                                }
                        } else {
                                $targetUser = P10_User::getUserByNum($args[0]);
                                if($targetUser == null) {
                                        trigger_error("Server tries to send a notice to an user that does not exist or was not found on recv_notice.", E_USER_ERROR);
                                        return;
                                }
-                               $this->eventHandler->event_privnotice($user, $targetUser, $args[1]);
+                               if(strlen($args[1]) > 0 && $args[1][0] == "\001") {
+                                       //ctcp
+                                       $args[1] = substr($args[1],1);
+                                       if($args[1][strlen($args[1])-1] == "\001")
+                                               $args[1] = substr($args[1],0,-1);
+                                       $ctcpexp = explode(" ",$args[1],2);
+                                       $this->eventHandler->event_privctcpreply($user, $targetUser, strtoupper($ctcpexp[0]), (count($ctcpexp) > 1 ? $ctcpexp[1] : null));
+                               } else
+                                       $this->eventHandler->event_privnotice($user, $targetUser, $args[1]);
                        }
                }
        }
                        }
                }
        }
@@ -671,8 +703,12 @@ class Uplink {
                }
                if(count($args) > 0) {
                        $user->setAway($args[0]);
                }
                if(count($args) > 0) {
                        $user->setAway($args[0]);
+                       if($this->eventHandler)
+                               $this->eventHandler->event_away($user, $args[0]);
                } else {
                        $user->setAway(null);
                } else {
                        $user->setAway(null);
+                       if($this->eventHandler)
+                               $this->eventHandler->event_away($user, null);
                }
        }
        
                }
        }