cd735d8976a99cd639d02f28d264de6383c5b389
[PHP-P10.git] / ModCMD / Binding.class.php
1 <?php
2 /******************************* PHP-P10 v2 *****************************
3  * Copyright (C) 2011-2012  Philipp Kreil (pk910)                       *
4  *                                                                      *
5  * This program is free software: you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation, either version 3 of the License, or    *
8  * (at your option) any later version.                                  *
9  *                                                                      * 
10  * This program is distributed in the hope that it will be useful,      *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
13  * GNU General Public License for more details.                         *
14  *                                                                      *
15  * You should have received a copy of the GNU General Public License    *
16  * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17  *                                                                      *
18  ************************************************************************
19  * 
20  *  ModCMD/Binding.class.php
21  *
22  * a single Binding...
23  *
24  */
25
26 class Binding {
27         private $bot;
28         private $method;
29     private $filter;
30         
31         public function __construct($bot, $method, $filter) {
32                 $this->bot = $bot;
33                 $this->method = $method;
34         $this->filter = $filter;
35         }
36         
37         public function trigger($params) {
38                 call_user_func_array(array($this->bot, $this->method), $params);
39         }
40         
41         public function match($bot, $method, $filter) {
42                 return ($bot === $this->bot && (!$method || strtolower($this->method) == strtolower($method)) && (!$filter || $this->match_filter($filter, false)));
43         }
44         
45     public function match_filter($filter, $preg = true) {
46         if(!$this->filter) return true;
47         if(is_object($filter) || is_object($this->filter)) {
48             return $filter === $this->filter;
49         } else if($preg && is_string($filter && is_string($this->filter))) {
50             return preg_match($this->filter, $filter);
51         } else
52             return $filter == $this->filter;
53     }
54 }
55
56 ?>