added P10_Channel.class.php and recv_burst
[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_servers)) {
43                         return self::$static_servers[$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 $nick;
61         private $ident;
62         private $host;
63         private $ip;
64         private $connect_time;
65         private $modes;
66         private $realname;
67         private $channels;
68         
69         public function __construct($nick, $numeric, $server, $connect_time, $ident, $host, $ip, $realname, $modes) {
70                 $this->nick = $nick;
71                 $this->numeric = $numeric;
72                 $this->server = $server;
73                 $this->connect_time = $connect_time;
74                 $this->ident = $ident;
75                 $this->host = $host;
76                 $this->ip = $ip;
77                 $this->realname = $realname;
78                 $this->modes = $modes;
79                 $server->addUser($this);
80                 self::$static_users[$numeric] = $this;
81         }
82         
83         public function getNumeric() {
84                 return $this->numeric;
85         }
86         
87         public function setNick($nick) {
88                 $this->nick = $nick;
89         }
90         
91         public function getNick() {
92                 return $this->nick;
93         }
94         
95         public function setIdent($ident) {
96                 $this->ident = $ident;
97         }
98         
99         public function getIdent() {
100                 return $this->ident;
101         }
102         
103         public function getHost() {
104                 return $this->host;
105         }
106         
107         public function getIP() {
108                 return $this->ip;
109         }
110         
111         public function getConnectTime() {
112                 return $this->connect_time;
113         }
114         
115         public function getModes() {
116                 return $this->modes;
117         }
118         
119         public function getRealname() {
120                 return $this->realname;
121         }
122         
123         public function quit($reason) {
124                 $this->server->delUser($this);
125                 foreach($this->channels as $channel) {
126                         $channel->quitUser($this);
127                 }
128         }
129         
130         public function addChannel($channel) {
131                 $this->channels[strtolower($channel->getName())] = $channel;
132         }
133         
134         public function delChannel($channel) {
135                 if(array_key_exists(strtolower($channel->getName()), $this->channels)) {
136                         unset($this->channels[strtolower($channel->getName())]);
137                 } else {
138                         trigger_error("Tried to remove a Channel, that does NOT exist.", E_USER_WARNING);
139                 }
140         }
141 }
142
143 ?>