added scripting interfaces (addUser, delUser, join, part, kick, privmsg, notice,...
[PHP-P10.git] / Uplink / P10_User.class.php
1 <?php
2 /********************************* PHP-P10 ******************************
3  *    P10 uplink class by pk910   (c)2011 pk910                         *
4  ************************************************************************
5  *                          Version 2 (OOP)                             *
6  *                                                                      *
7  * PHP-P10 is free software; you can redistribute it and/or modify      *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or    *
10  * (at your option) any later version.                                  *
11  *                                                                      *
12  * This program is distributed in the hope that it will be useful,      *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
15  * GNU General Public License for more details.                         *
16  *                                                                      *
17  * You should have received a copy of the GNU General Public License    *
18  * along with PHP-P10; if not, write to the Free Software Foundation,   *
19  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.       *
20  *                                                                      *
21  ************************************************************************
22  * 
23  *  Uplink/P10_User.class.php
24  *
25  * This class represents a IRC User
26  *
27  ************************************************************************
28  * accessable methods:
29  *
30  * static P10_User getUserByNum(String $numeric) 
31  *     searches and returns the User with the provided Numeric
32  *
33  * __construct(String $nick, String $numeric, P10_Server $server, int $connect_time, String $ident, String $realname, P10_ModeSet $modes)
34  *     *** nothing to say here ***
35  *
36  */
37
38 class P10_User {
39         private static $static_users = array();
40         
41         public static function getUserByNum($numeric) {
42                 if(array_key_exists($numeric, self::$static_users)) {
43                         return self::$static_users[$numeric];
44                 }
45                 return NULL;
46         }
47         
48         public static function getUserByNick($nick) {
49                 $nick = strtolower($nick);
50                 foreach(self::$static_users as $user) {
51                         if(strtolower($user->getNick()) == $nick) {
52                                 return $user;
53                         }
54                 }
55                 return NULL;
56         }
57         
58         
59         private $numeric;
60         private $server;
61         private $nick;
62         private $ident;
63         private $host;
64         private $ip;
65         private $connect_time;
66         private $modes;
67         private $realname;
68         private $channels;
69         
70         public function __construct($nick, $numeric, $server, $connect_time, $ident, $host, $ip, $realname, $modes) {
71                 $this->nick = $nick;
72                 $this->numeric = $numeric;
73                 $this->server = $server;
74                 $this->connect_time = $connect_time;
75                 $this->ident = $ident;
76                 $this->host = $host;
77                 $this->ip = $ip;
78                 $this->realname = $realname;
79                 $this->modes = $modes;
80                 $server->addUser($this);
81                 self::$static_users[$numeric] = $this;
82         }
83         
84         public function getNumeric() {
85                 return $this->numeric;
86         }
87         
88         public function getServer() {
89                 return $this->server;
90         }
91         
92         public function setNick($nick) {
93                 $this->nick = $nick;
94         }
95         
96         public function getNick() {
97                 return $this->nick;
98         }
99         
100         public function setIdent($ident) {
101                 $this->ident = $ident;
102         }
103         
104         public function getIdent() {
105                 return $this->ident;
106         }
107         
108         public function getHost() {
109                 return $this->host;
110         }
111         
112         public function getIP() {
113                 return $this->ip;
114         }
115         
116         public function getConnectTime() {
117                 return $this->connect_time;
118         }
119         
120         public function getModes() {
121                 return $this->modes;
122         }
123         
124         public function getRealname() {
125                 return $this->realname;
126         }
127         
128         public function quit($reason) {
129                 $this->server->delUser($this);
130                 foreach($this->channels as $channel) {
131                         $channel->quitUser($this);
132                 }
133         }
134         
135         public function addChannel($channel) {
136                 $this->channels[strtolower($channel->getName())] = $channel;
137         }
138         
139         public function delChannel($channel) {
140                 if(array_key_exists(strtolower($channel->getName()), $this->channels)) {
141                         unset($this->channels[strtolower($channel->getName())]);
142                 } else {
143                         trigger_error("Tried to remove a Channel, that does NOT exist.", E_USER_WARNING);
144                 }
145         }
146         
147         public function isOnChannel($channel) {
148                 return array_key_exists(strtolower($channel->getName()),$this->channels);
149         }
150 }
151
152 ?>