Files
TSN-Ranksystem/jobs/handle_messages.php
2016-10-30 21:38:27 +01:00

129 lines
5.9 KiB
PHP

<?PHP
function handle_messages(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host) {
global $lang, $logpath, $timezone, $nextupinfo, $nextupinfomsg1, $nextupinfomsg2, $nextupinfomsg3, $mysqlcon, $dbname, $grouptime, $substridle, $slowmode, $currvers, $newversion, $adminuuid;
if($host->whoami()["client_unique_identifier"] != $event["invokeruid"]) { //check whoami need to slowmode or is already stored?
$uuid = $event["invokeruid"];
if(strstr($event["msg"], 'nextup') && $nextupinfo == 1) {
//enter_logfile($logpath,$timezone,6,"Client ".$event["invokername"]." (".$event["invokeruid"].") sent textmessage: ".$event["msg"]);
if(($dbuserdata = $mysqlcon->query("SELECT count,nextup,idle,except FROM $dbname.user WHERE uuid='$uuid'")) === false) {
enter_logfile($logpath,$timezone,2,"handle_messages 1:".print_r($mysqlcon->errorInfo(), true));
}
$user = $dbuserdata->fetchAll(PDO::FETCH_ASSOC);
$nextup = $user[0]['nextup'];
$dtF = new DateTime("@0");
$dtT = new DateTime("@$nextup");
$days = $dtF->diff($dtT)->format('%a');
$hours = $dtF->diff($dtT)->format('%h');
$mins = $dtF->diff($dtT)->format('%i');
$secs = $dtF->diff($dtT)->format('%s');
if(($dbgroups = $mysqlcon->query("SELECT * FROM $dbname.groups")) === false) {
enter_logfile($logpath,$timezone,2,"handle_messages 2:".print_r($mysqlcon->errorInfo(), true));
}
$servergroups = $dbgroups->fetchAll(PDO::FETCH_ASSOC);
foreach($servergroups as $servergroup) {
$sqlhisgroup[$servergroup['sgid']] = $servergroup['sgidname'];
}
ksort($grouptime);
$countgrp = count($grouptime);
$grpcount=0;
foreach ($grouptime as $time => $groupid) {
$grpcount++;
if ($substridle == 1) {
$activetime = $user[0]['count'] - $user[0]['idle'];
} else {
$activetime = $user[0]['count'];
}
if ($activetime < $time || $grpcount == $countgrp && $nextup <= 0) {
check_shutdown($timezone,$logpath); usleep($slowmode);
if ($grpcount == $countgrp && $nextup == 0) {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message(sprintf($nextupinfomsg2, $days, $hours, $mins, $secs, $sqlhisgroup[$groupid]));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 3:".$e->getCode().': '.$e->getMessage());
}
} elseif ($user[0]['except'] == 1) {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message(sprintf($nextupinfomsg3, $days, $hours, $mins, $secs, $sqlhisgroup[$groupid]));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 4:".$e->getCode().': '.$e->getMessage());
}
} else {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message(sprintf($nextupinfomsg1, $days, $hours, $mins, $secs, $sqlhisgroup[$groupid]));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 5:".$e->getCode().': '.$e->getMessage());
}
}
}
}
}
if(strstr($event["msg"], 'version')) {
if(version_compare(substr($newversion, 0, 5), substr($currvers, 0, 5), '>') && $newversion != '') {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message(sprintf($lang['upmsg'], $currvers, $newversion));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 6:".$e->getCode().': '.$e->getMessage());
}
} else {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message(sprintf($lang['msg0001'], $currvers));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 7:".$e->getCode().': '.$e->getMessage());
}
}
}
if(strstr($event["msg"], 'help') || strstr($event["msg"], 'info') || strstr($event["msg"], 'commands')) {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message($lang['msg0002']);
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 8:".$e->getCode().': '.$e->getMessage());
}
}
if((strstr($event["msg"], 'shutdown') || strstr($event["msg"], 'quit') || strstr($event["msg"], 'stop')) && $event["invokeruid"] == $adminuuid) {
enter_logfile($logpath,$timezone,5,sprintf($lang['msg0004'], $event["invokername"], $event["invokeruid"]));
$path = substr(__DIR__, 0, -4);
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message($lang['msg0005']);
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 9:".$e->getCode().': '.$e->getMessage());
}
exec("php ".$path."worker.php stop");
} elseif (strstr($event["msg"], 'shutdown') || strstr($event["msg"], 'exit')) {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message($lang['msg0003']);
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 10:".$e->getCode().': '.$e->getMessage());
}
}
if((strstr($event["msg"], 'restart') || strstr($event["msg"], 'reboot')) && $event["invokeruid"] == $adminuuid) {
enter_logfile($logpath,$timezone,5,sprintf($lang['msg0007'], $event["invokername"], $event["invokeruid"]));
$path = substr(__DIR__, 0, -4);
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message($lang['msg0006']);
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 11:".$e->getCode().': '.$e->getMessage());
}
if (substr(php_uname(), 0, 7) == "Windows") {
exec("start php ".$path."worker.php restart");
} else {
exec("php ".$path."worker.php restart > /dev/null 2>/dev/null &");
}
} elseif (strstr($event["msg"], 'shutdown') || strstr($event["msg"], 'exit')) {
try {
$host->serverGetSelected()->clientGetByUid($event["invokeruid"])->message($lang['msg0003']);
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"handle_messages 12:".$e->getCode().': '.$e->getMessage());
}
}
}
}
?>