3namespace PlanetTeamSpeak\TeamSpeak3Framework\Adapter;
5use PlanetTeamSpeak\TeamSpeak3Framework\Adapter\ServerQuery\Event;
6use PlanetTeamSpeak\TeamSpeak3Framework\Adapter\ServerQuery\Reply;
7use PlanetTeamSpeak\TeamSpeak3Framework\Exception\AdapterException;
8use PlanetTeamSpeak\TeamSpeak3Framework\Exception\ServerQueryException;
9use PlanetTeamSpeak\TeamSpeak3Framework\Helper\Profiler;
10use PlanetTeamSpeak\TeamSpeak3Framework\Helper\Signal;
11use PlanetTeamSpeak\TeamSpeak3Framework\Helper\StringHelper;
12use PlanetTeamSpeak\TeamSpeak3Framework\Node\Host;
13use PlanetTeamSpeak\TeamSpeak3Framework\Node\Node;
14use PlanetTeamSpeak\TeamSpeak3Framework\TeamSpeak3;
15use PlanetTeamSpeak\TeamSpeak3Framework\Transport\Transport;
58 protected function syn(): void
61 $this->transport->setAdapter($this);
63 Profiler::init(spl_object_hash($this));
71 Signal::getInstance()->emit(
"serverqueryConnected", $this);
107 if (strstr($cmd,
"\r") || strstr($cmd,
"\n")) {
108 throw new AdapterException(
"illegal characters in command '" . $query .
"'");
109 } elseif (in_array($query, $this->block)) {
113 Signal::getInstance()->emit(
"serverqueryCommandStarted", $cmd);
117 $this->timer = time();
132 $reply =
new Reply($rpl, $cmd, $this->
getHost(), $throw);
134 Signal::getInstance()->emit(
"serverqueryCommandFinished", $cmd, $reply);
168 public function prepare(
string $cmd, array $params = []): string
173 foreach ($params as $ident => $value) {
176 if (is_array($value)) {
177 $value = array_values($value);
179 for ($i = 0; $i < count($value); $i++) {
180 if ($value[$i] ===
null) {
182 } elseif ($value[$i] ===
false) {
184 } elseif ($value[$i] ===
true) {
186 } elseif ($value[$i] instanceof
Node) {
187 $value[$i] = $value[$i]->getId();
190 $cells[$i][] = $ident . StringHelper::factory($value[$i])->escape()->toUtf8();
193 if ($value ===
null) {
195 } elseif ($value ===
false) {
197 } elseif ($value ===
true) {
199 } elseif ($value instanceof
Node) {
200 $value = $value->getId();
203 $args[] = $ident . StringHelper::factory($value)->escape()->toUtf8();
207 foreach (array_keys($cells) as $ident) {
258 if ($this->host ===
null) {
259 $this->host =
new Host($this);
initTransport(array $options, string $transport=TCP::class)
Provides methods to analyze and format a ServerQuery event.
Provides methods to analyze and format a ServerQuery reply.
prepare(string $cmd, array $params=[])
request(string $cmd, bool $throw=true)
Enhanced exception class for PlanetTeamSpeak\TeamSpeak3Framework\Adapter\Adapter objects.
Enhanced exception class for PlanetTeamSpeak\TeamSpeak3Framework\Adapter\ServerQuery objects.
Class describing a TeamSpeak 3 server instance and all it's parameters.
const SEPARATOR_CELL
protocol cell separator
const SEPARATOR_PAIR
protocol pair separator
const SEPARATOR_LIST
protocol list separator
Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport.