. * * * ************************************************************************ * * Uplink/P10_Server.class.php * * This class represents a IRC Server * */ class P10_Server { private static $static_servers = array(); public static function getServerByNum($numeric) { if(array_key_exists($numeric, self::$static_servers)) { return self::$static_servers[$numeric]; } return NULL; } public static function getServerByName($name) { $name = strtolower($name); foreach(self::$static_servers as $server) { if(strtolower($server->getName()) == $name) { return $server; } } return NULL; } public static function getServerCount() { return count(self::$static_servers); } public static function getServers() { return self::$static_servers; } private $name; private $numeric; private $parent_server; private $start_time; private $link_time; private $description; private $servers = array(); //all Servers connected to this Server private $users = array(); //all Users connected to this Server public function __construct($name, $numeric, $parent_server, $start_time, $link_time, $description) { $this->name = $name; $this->numeric = $numeric; $this->parent_server = $parent_server; $this->start_time = $start_time; $this->link_time = $link_time; $this->description = $description; self::$static_servers[$numeric] = $this; } public function disconnectServer($eventHandler, $linked_only = false) { if(!$linked_only) { if($eventHandler) $eventHandler->event_squit($this); if($this->parent_server) { $this->parent_server->delServer($this); } $this->disconnectUsers(); unset(self::$static_servers[$this->numeric]); } foreach($this->servers as $server) { $server->disconnectServer($eventHandler); } } public function disconnectUsers() { //disconnect all Users connected to the actual Server foreach($this->users as $user) { $user->quit("*.net *.split"); } } public function getNumeric() { return $this->numeric; } public function getName() { return $this->name; } public function getStartTime() { return $this->start_time; } public function getLinkTime() { return $this->link_time; } public function getDescription() { return $this->description; } public function addServer($server) { $this->servers[$server->getNumeric()] = $server; } public function delServer($server) { if(array_key_exists($server->getNumeric(), $this->servers)) { unset($this->servers[$server->getNumeric()]); } else { trigger_error("Tried to remove a Server, that does NOT exist.", E_USER_WARNING); } } public function addUser($user) { $this->users[$user->getNumeric()] = $user; } public function delUser($user) { if(array_key_exists($user->getNumeric(), $this->users)) { unset($this->users[$user->getNumeric()]); } else { trigger_error("Tried to remove a User, that does NOT exist.", E_USER_WARNING); } } public function getUsers() { return $this->users; } public function getUserCount() { return count($this->users); } } ?>