-
Notifications
You must be signed in to change notification settings - Fork 0
/
IRCConnection.class.php
98 lines (61 loc) · 2.58 KB
/
IRCConnection.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
class IRCConnection {
protected $socket = null;
protected $clientPeer = null;
protected $serverPeer = null;
protected $parameters = array();
protected $self = null;
public function __construct ($parameters = array()) {
$this->self = new IRCClient(
array(
'nickname' => $parameters['client.nickname'][0],
'username' => $parameters['client.username'],
'realname' => $parameters['client.realname'],
'hostname' => isset($parameters['client.hostname']) ? $parameters['client.hostname'] : ''
)
);
$parameters['classes.socket'] = isset($parameters['classes.socket']) ? $parameters['classes.socket'] : 'IRCSocket';
$parameters['classes.protocol_handlers'] = isset($parameters['classes.protocol_handlers']) ? $parameters['classes.protocol_handlers'] : array('_' => 'IRCProtocolHandler');
$parameters['classes.server_peer'] = isset($parameters['classes.server_peer']) ? $parameters['classes.server_peer'] : 'IRCServerPeer';
$parameters['classes.client_peer'] = isset($parameters['classes.client_peer']) ? $parameters['classes.client_peer'] : 'IRCClientPeer';
if (isset($parameters['client.hostname'])) {
$context = stream_context_create(array('socket' => array('bindto' => $parameters['client.hostname'] . ':0')));
$this->socket = new $parameters['classes.socket']($this, $parameters['server.hostname'], $parameters['server.port'], $context);
}
else {
$this->socket = new $parameters['classes.socket']($this, $parameters['server.hostname'], $parameters['server.port']);
}
foreach ($parameters['classes.protocol_handlers'] as $name => $class) {
$this->socket->setHandler($name, new $class());
}
$this->serverPeer = new $parameters['classes.server_peer']($this);
$this->clientPeer = new $parameters['classes.client_peer']($this);
$this->clientPeer->set($this->self);
$this->parameters = $parameters;
}
public function getServerPeer () {
return $this->serverPeer;
}
public function getClientPeer () {
return $this->clientPeer;
}
public function getSocket () {
return $this->socket;
}
public function getParameters () {
return $this->parameters;
}
public function getParameter ($name, $default = '') {
return $this->hasParameter($name) ? $this->parameters[$name] : $default;
}
public function hasParameter ($name) {
return isset($this->parameters[$name]);
}
public function getClient () {
return $this->self;
}
public function getDefaultHandler () {
return $this->getSocket()->hasHandler('_') ? $this->getSocket()->getHandler('_') : null;
}
}
?>