X-Git-Url: http://git.pk910.de/?p=PHP-P10.git;a=blobdiff_plain;f=ModCMD%2FModCMD.class.php;h=c613ecaecbef5819e77cac37380401a25466b182;hp=e1b81cd87a5b16dc06c96a2430f976f8f6ac441e;hb=811bc0c7a1f583fb624a0f8c3601146e063c5a25;hpb=d1fc76f5af98ff28ca6405cc5d6f50a3bbf0ac9b diff --git a/ModCMD/ModCMD.class.php b/ModCMD/ModCMD.class.php index e1b81cd..c613eca 100644 --- a/ModCMD/ModCMD.class.php +++ b/ModCMD/ModCMD.class.php @@ -1,22 +1,19 @@ . * * * ************************************************************************ * @@ -24,9 +21,6 @@ * * shares the incoming events to all bot's that request them. * - ************************************************************************ - * - * */ require_once("Binding.class.php"); @@ -63,24 +57,24 @@ class ModCMD implements EventHandler { return self::$eventHandler; } - public static function bind($bot, $type, $method) { + public static function bind($bot, $type, $method, $filter = NULL) { if(is_a($bot, "Bot") && method_exists($bot, $method)) { if(array_key_exists($type, self::$bindings)) { foreach(self::$bindings[$type] as $binding) { - if($binding->match($bot, $method)) + if($binding->match($bot, $method, $filter)) return; } } else self::$bindings[$type] = array(); - self::$bindings[$type][] = new Binding($bot, $method); + self::$bindings[$type][] = new Binding($bot, $method, $filter); } } - public static function unbind($bot, $type, $method) { + public static function unbind($bot, $type, $method, $filter = NULL) { if(is_a($bot, "Bot")) { if(array_key_exists($type, self::$bindings)) { foreach(self::$bindings[$type] as $id => $binding) { - if($binding->match($bot, $method)) { + if($binding->match($bot, $method, $filter)) { unset(self::$bindings[$type][$id]); break; } @@ -93,7 +87,7 @@ class ModCMD implements EventHandler { if(is_a($bot, "Bot")) { foreach(self::$bindings as $type => $bindings) { foreach($bindings as $id => $binding) { - if($binding->match($bot, null)) { + if($binding->match($bot, null, null)) { unset(self::$bindings[$type][$id]); } } @@ -105,10 +99,15 @@ class ModCMD implements EventHandler { * EVENT HANDLER * ********************************************************************************************/ - private function event($type, $parameters) { + private function event($type, $parameters, $matchings = array(null)) { if(array_key_exists($type, self::$bindings)) { foreach(self::$bindings[$type] as $binding) { - $binding->trigger($parameters); + $match = false; + foreach($matchings as $matching) { + if(($match = $binding->match_filter($matching))) break; + } + if($match) + $binding->trigger($parameters); } } } @@ -138,59 +137,59 @@ class ModCMD implements EventHandler { } public function event_join($user, $channel, $isBurst) { - $this->event(BIND_JOIN, array($user, $channel, $isBurst)); + $this->event(BIND_JOIN, array($user, $channel, $isBurst), array($user, $channel)); } public function event_part($user, $channel, $reason) { - $this->event(BIND_PART, array($user, $channel, $reason)); + $this->event(BIND_PART, array($user, $channel, $reason), array($user, $channel)); } public function event_kick($user, $target, $channel, $reason) { - $this->event(BIND_KICK, array($user, $target, $channel, $reason)); + $this->event(BIND_KICK, array($user, $target, $channel, $reason), array($user, $channel, $target)); } public function event_chanmode($user, $channel, $modes) { - $this->event(BIND_CHANMODE, array($user, $channel, $modes)); + $this->event(BIND_CHANMODE, array($user, $channel, $modes), array($user, $channel)); } public function event_chanmessage($user, $channel, $message) { - $this->event(BIND_CHANMSG, array($user, $channel, $message)); + $this->event(BIND_CHANMSG, array($user, $channel, $message), array($user, $channel)); } public function event_channotice($user, $channel, $message) { - $this->event(BIND_CHANNOTICE, array($user, $channel, $message)); + $this->event(BIND_CHANNOTICE, array($user, $channel, $message), array($user, $channel)); } public function event_privmessage($user, $target, $message) { - $this->event(BIND_PRIVMSG, array($user, $target, $message)); + $this->event(BIND_PRIVMSG, array($user, $target, $message), array($user, $target)); } public function event_privnotice($user, $target, $message) { - $this->event(BIND_PRIVNOTICE, array($user, $target, $message)); + $this->event(BIND_PRIVNOTICE, array($user, $target, $message), array($user, $target)); } public function event_preparse($from, $command, $arguments) { - $this->event(BIND_PREPARSE, array($from, $command, $arguments)); + $this->event(BIND_PREPARSE, array($from, $command, $arguments), array($command)); } public function event_unknown_cmd($from, $command, $arguments) { - $this->event(BIND_UNKNOWNCMD, array($from, $command, $arguments)); + $this->event(BIND_UNKNOWNCMD, array($from, $command, $arguments), array($command)); } 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) { + public function event_chanctcpreply($user, $channel, $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)); + $this->event(BIND_CTCP, array($user, $target, $command, $text, false)); } public function event_privctcpreply($user, $target, $command, $text) { - $this->event(BIND_CTCPREPLY, array($user, $channel, $command, $text, false)); + $this->event(BIND_CTCPREPLY, array($user, $target, $command, $text, false)); } public function event_away($user, $away) {