ts-website/include/adminlist.php

103 lines
3.3 KiB
PHP
Raw Normal View History

2016-06-28 21:18:59 +00:00
<?php
require_once __DIR__ . "/tsutils.php";
require_once __DIR__ . "/../lib/phpfastcache/autoload.php";
use phpFastCache\Util;
use phpFastCache\CacheManager;
Util\Languages::setEncoding("UTF-8");
$cache = CacheManager::Files();
$adminlist = $cache->get('adminlist');
// $cache->clean();
if (is_null($adminlist)) {
$adminlist = array(getAdminList(), date('d-m-Y H:i:s'));
$cache->set('adminlist', $adminlist, 30);
}
2016-06-28 21:18:59 +00:00
// FUNCTIONS
function getAdminList() {
global $config;
2016-07-25 14:14:04 +00:00
global $lang;
2016-07-01 20:34:55 +00:00
$admingroups = $config["adminlist"];
$localIcons = array(100, 200, 300, 400, 500, 600);
2016-07-01 20:34:55 +00:00
2016-06-28 21:18:59 +00:00
try {
$tsAdmin = TeamSpeak3::factory(getTeamspeakURI(). "#no_query_clients");
2016-07-01 20:34:55 +00:00
2016-06-28 21:18:59 +00:00
$output = "";
2016-07-01 20:34:55 +00:00
foreach ($admingroups as $group) {
2016-07-01 20:34:55 +00:00
if(!array_key_exists((string) $group, $tsAdmin->serverGroupList()))
2016-06-28 21:18:59 +00:00
continue;
2016-07-01 20:34:55 +00:00
$group = $tsAdmin->serverGroupGetById($group);
2016-07-01 20:34:55 +00:00
$icon = '';
2016-07-01 20:34:55 +00:00
if($group["iconid"]) {
if(!$group->iconIsLocal("iconid")) {
$groupicon = getGroupIcon($tsAdmin, $group);
if($groupicon) {
2016-07-10 16:46:04 +00:00
$icon = '<img src="data:' . TeamSpeak3_Helper_Convert::imageMimeType($groupicon) . ';base64,' . base64_encode($groupicon) . '" alt="Ikona grupy" /> ';
}
} elseif(in_array($group["iconid"], $localIcons)) {
2016-07-10 16:46:04 +00:00
$icon = '<img src="lib/ts3phpframework/images/viewer/group_icon_' . $group["iconid"] . '.png" alt="Ikona grupy" /> ';
}
}
2016-07-01 20:34:55 +00:00
$output .= "<p class=\"groupname\">$icon$group</p>";
2016-07-01 20:34:55 +00:00
$clients = $group->clientList();
2016-07-01 20:34:55 +00:00
if(empty($clients)) {
2016-07-25 14:14:04 +00:00
$output .= '<p class="text-center"><i>' . translate($lang["adminlist"]["emptygroup"]) . '</i></p>';
continue;
}
2016-07-01 20:34:55 +00:00
foreach ($clients as $userInfo) {
2016-06-28 21:18:59 +00:00
$user = getClientByDbid($tsAdmin, $userInfo['cldbid']);
2016-07-01 20:34:55 +00:00
2016-06-28 21:18:59 +00:00
if(!$user) {
2016-07-25 14:14:04 +00:00
$output .= '<p><span class="label label-primary iconspacer">' . $userInfo['client_nickname'] . '</span><span class="label label-danger pullright">' . translate($lang["adminlist"]["status"]["offline"]) . '</span></p>';
2016-06-28 21:18:59 +00:00
continue;
}
2016-07-01 20:34:55 +00:00
2016-07-25 14:14:04 +00:00
$output .= '<p><img src="lib/ts3phpframework/images/viewer/' . $user->getIcon() . '.png" alt="Status użytkownika">' . '<span class="label label-primary">' . $user . '</span>' . ($user['client_away'] ? '<span class="label label-warning pullright">' . translate($lang["adminlist"]["status"]["away"]) . '</span>' : '<span class="label label-success pullright">' . translate($lang["adminlist"]["status"]["online"]) . '</span>') . '</p>';
2016-06-28 21:18:59 +00:00
}
}
2016-07-01 20:34:55 +00:00
2016-06-28 21:18:59 +00:00
return $output;
} catch(TeamSpeak3_Exception $e) {
2016-07-25 14:14:04 +00:00
return '<div class="alert alert-danger"><p class="text-center">' . translate($lang["general"]["scripterror"], [$e->getCode(), $e->getMessage()]) . '</p></div>';
2016-06-28 21:18:59 +00:00
}
2016-07-01 20:34:55 +00:00
2016-06-28 21:18:59 +00:00
}
function getClientByDbid($tsAdmin, $cldbid) {
try {
return $tsAdmin->clientGetByDbid($cldbid);
} catch(TeamSpeak3_Exception $e) {
return false;
}
}
function getGroupIcon($tsAdmin, $group) {
try {
return $group->iconDownload();
} catch(TeamSpeak3_Exception $e) {
return false;
}
}
2016-06-28 21:18:59 +00:00
// echo getAdminList();