/** * Returns an array filled with all permission categories known to the server including * their ID, name and parent. * * @return array */ public function permissionTree() { $permtree = array(); foreach ($this->permissionCats() as $key => $val) { $permtree[$val]["permcatid"] = $val; $permtree[$val]["permcathex"] = "0x" . dechex($val); $permtree[$val]["permcatname"] = HelperString::factory(Convert::permissionCategory($val)); $permtree[$val]["permcatparent"] = $permtree[$val]["permcathex"][3] == 0 ? 0 : hexdec($permtree[$val]["permcathex"][2] . 0); $permtree[$val]["permcatchilren"] = 0; $permtree[$val]["permcatcount"] = 0; if (isset($permtree[$permtree[$val]["permcatparent"]])) { $permtree[$permtree[$val]["permcatparent"]]["permcatchilren"]++; } if ($permtree[$val]["permcatname"]->contains("/")) { $permtree[$val]["permcatname"] = $permtree[$val]["permcatname"]->section("/", 1)->trim(); } foreach ($this->permissionList() as $permission) { if ($permission["permid"]["permcatid"] == $val) { $permtree[$val]["permcatcount"]++; } } } return $permtree; }
/** * Returns all information available on this node. If $convert is enabled, some property * values will be converted to human-readable values. * * @param boolean $extend * @param boolean $convert * @return array */ public function getInfo($extend = true, $convert = false) { if ($extend) { $this->fetchNodeInfo(); } if ($convert) { $info = $this->nodeInfo; foreach ($info as $key => $val) { $key = String::factory($key); if ($key->contains("_bytes_")) { $info[$key->toString()] = Convert::bytes($val); } elseif ($key->contains("_bandwidth_")) { $info[$key->toString()] = Convert::bytes($val) . "/s"; } elseif ($key->contains("_packets_")) { $info[$key->toString()] = number_format($val, null, null, "."); } elseif ($key->contains("_packetloss_")) { $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString()) * 100) . "%"; } elseif ($key->endsWith("_uptime")) { $info[$key->toString()] = Convert::seconds($val); } elseif ($key->endsWith("_version")) { $info[$key->toString()] = Convert::version($val); } elseif ($key->endsWith("_icon_id")) { $info[$key->toString()] = $this->iconGetName($key)->filterDigits(); } } return $info; } return $this->nodeInfo; }
/** * Returns the HTML img tags which can be used to display the various icons for a * TeamSpeak_Node_Client object. * * @return string */ protected function getSuffixIconClient() { $html = ""; if ($this->currObj["client_is_priority_speaker"]) { $html .= $this->getImage("client_priority.png", "Priority Speaker"); } if ($this->currObj["client_is_channel_commander"]) { $html .= $this->getImage("client_cc.png", "Channel Commander"); } if ($this->currObj["client_is_talker"]) { $html .= $this->getImage("client_talker.png", "Talk Power granted"); } elseif ($cntp = $this->currObj->getParent()->channelGetById($this->currObj["cid"])->channel_needed_talk_power) { if ($cntp > $this->currObj["client_talk_power"]) { $html .= $this->getImage("client_mic_muted.png", "Insufficient Talk Power"); } } foreach ($this->currObj->memberOf() as $group) { if (!$group["iconid"]) { continue; } $type = $group instanceof \Teamspeak3\Node\Servergroup ? "Server Group" : "Channel Group"; if (!$group->iconIsLocal("iconid") && $this->ftclient) { if (!isset($this->cacheIcon[$group["iconid"]])) { $download = $group->getParent()->transferInitDownload(rand(0x0, 0xffff), 0, $group->iconGetName("iconid")); if ($this->ftclient == "data:image") { $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); } $this->cacheIcon[$group["iconid"]] = $download; } else { $download = $this->cacheIcon[$group["iconid"]]; } if ($this->ftclient == "data:image") { $html .= $this->getImage("data:" . \TeamSpeak3\Helper\Convert::imageMimeType($download) . ";base64," . base64_encode($download), $group . " [" . $type . "]", null, FALSE); } else { $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), $group . " [" . $type . "]", null, FALSE); } } elseif (in_array($group["iconid"], $this->cachedIcons)) { $html .= $this->getImage("group_icon_" . $group["iconid"] . ".png", $group . " [" . $type . "]"); } } if ($this->currObj["client_icon_id"]) { if (!$this->currObj->iconIsLocal("client_icon_id") && $this->ftclient) { if (!isset($this->cacheIcon[$this->currObj["client_icon_id"]])) { $download = $this->currObj->getParent()->transferInitDownload(rand(0x0, 0xffff), 0, $this->currObj->iconGetName("client_icon_id")); if ($this->ftclient == "data:image") { $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); } $this->cacheIcon[$this->currObj["client_icon_id"]] = $download; } else { $download = $this->cacheIcon[$this->currObj["client_icon_id"]]; } if ($this->ftclient == "data:image") { $html .= $this->getImage("data:" . \TeamSpeak3\Helper\Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Client Icon", null, FALSE); } else { $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Client Icon", null, FALSE); } } elseif (in_array($this->currObj["client_icon_id"], $this->cachedIcons)) { $html .= $this->getImage("group_icon_" . $this->currObj["client_icon_id"] . ".png", "Client Icon"); } } return $html; }