. * * * ************************************************************************ * * Uplink/P10_User.class.php * * This class represents a IRC User * */ class P10_User { private static $static_users = array(); public static function getUserByNum($numeric) { if(array_key_exists($numeric, self::$static_users)) { return self::$static_users[$numeric]; } return NULL; } public static function getUserByNick($nick) { $nick = strtolower($nick); foreach(self::$static_users as $user) { if(strtolower($user->getNick()) == $nick) { return $user; } } return NULL; } public static function getAllUsers() { return self::$static_users; } private $numeric; private $server; private $nick; private $ident; private $host; private $ip; private $connect_time; private $modes; private $realname; private $channels = array(); private $away = null; public function __construct($nick, $numeric, $server, $connect_time, $ident, $host, $ip, $realname, $modes) { $this->nick = $nick; $this->numeric = $numeric; $this->server = $server; $this->connect_time = $connect_time; $this->ident = $ident; $this->host = $host; $this->ip = $ip; $this->realname = $realname; $this->modes = $modes; $server->addUser($this); self::$static_users[$numeric] = $this; } public function getNumeric() { return $this->numeric; } public function getServer() { return $this->server; } public function setNick($nick) { $this->nick = $nick; } public function getNick() { return $this->nick; } public function setIdent($ident) { $this->ident = $ident; } public function getIdent() { return $this->ident; } public function getHost() { return $this->host; } public function getIP() { return $this->ip; } public function getConnectTime() { return $this->connect_time; } public function getModes() { return $this->modes; } public function getRealname() { return $this->realname; } public function setAway($away) { $this->away = $away; } public function getAway() { return $this->away; } public function isAway() { return ($this->away != null); } public function quit($reason) { $this->server->delUser($this); unset(self::$static_users[$this->numeric]); foreach($this->channels as $channel) { $channel->quitUser($this); } } public function addChannel($channel) { $this->channels[strtolower($channel->getName())] = $channel; } public function delChannel($channel) { if(array_key_exists(strtolower($channel->getName()), $this->channels)) { unset($this->channels[strtolower($channel->getName())]); } else { trigger_error("Tried to remove a Channel, that does NOT exist.", E_USER_WARNING); } } public function getChannels() { return $this->channels; } public function getChannelCount() { return count($this->channels); } public function isOnChannel($channel) { return array_key_exists(strtolower($channel->getName()),$this->channels); } public function getAuthNick() { $authData = $this->getModes()->hasMode('r'); $authnick = false; if($authData) { $authData = explode(':', $authData); $authnick = $authData[0]; } return $authnick; } } ?>