Skip to content

Commit 2336177

Browse files
committed
release 1.3.8
1 parent b3b06b4 commit 2336177

35 files changed

Lines changed: 853 additions & 729 deletions

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
![license: GPL v3](https://img.shields.io/badge/license-GPL%20v3-brightgreen.svg) ![forks](https://img.shields.io/github/forks/Newcomer1989/TSN-Ranksystem.svg) ![stars](https://img.shields.io/github/stars/Newcomer1989/TSN-Ranksystem.svg) [![GitHub issues](https://img.shields.io/github/issues/Newcomer1989/TSN-Ranksystem.svg)](https://github.com/Newcomer1989/TSN-Ranksystem/issues)
44

5-
The TSN Ranksystem is an easy to handle Level System to automatically grant ranks (servergroups) to users on a TeamSpeaks3 Server for online time or online activity. You can create your own servergroups, with permissions, icons etc. of your choice, and define these for the Ranksystem. Its open source and so its free to use under the GNU license with version 3.
5+
The TSN Ranksystem is an easy to handle Level System to automatically grant ranks (servergroups) to users on a TeamSpeak Server for online time or online activity. You can create your own servergroups, with permissions, icons etc. of your choice, and define these for the Ranksystem. Its open source and so its free to use under the GNU license with version 3.
66

7-
#### Official website: [TS-Ranksystem.com](http://ts-ranksystem.com)
7+
#### Official website: [TS-Ranksystem.com](https://ts-ranksystem.com)

api/index.php

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@
6262
foreach ($json as $sgid => $sqlpart) {
6363
if ($sqlpart['icondate'] != 0 && $sqlpart['sgidname'] == 'ServerIcon') {
6464
$json[$sgid]['iconpath'] = './tsicons/servericon.png';
65-
} elseif ($sqlpart['icondate'] != 0) {
66-
$json[$sgid]['iconpath'] = './tsicons/'.$sgid.'.png';
65+
} elseif ($sqlpart['iconid'] != 0) {
66+
$json[$sgid]['iconpath'] = './tsicons/'.$sqlpart['iconid'].'.png';
6767
}
6868
}
6969
}
@@ -98,6 +98,7 @@
9898
$json = $dbdata->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE);
9999
} elseif (isset($_GET['user'])) {
100100
$uuid = $name = '----------_none_selected_----------';
101+
$filter = '';
101102
$part = $cldbid = 0;
102103
if(isset($_GET['uuid'])) {
103104
$uuid = htmlspecialchars_decode($_GET['uuid']);
@@ -109,10 +110,17 @@
109110
$name = htmlspecialchars_decode($_GET['name']);
110111
}
111112
if(isset($_GET['part'])) {
112-
$part = (htmlspecialchars_decode($_GET['part']) - 1) * 10;
113+
$part = (htmlspecialchars_decode($_GET['part']) - 1) * 100;
114+
}
115+
if(isset($_GET['online']) && $uuid == '----------_none_selected_----------' && $name == '----------_none_selected_----------' && $cldbid == 0) {
116+
$filter = '`online`=1';
117+
} elseif(isset($_GET['online'])) {
118+
$filter = '(`uuid` LIKE :uuid OR `cldbid` LIKE :cldbid OR `name` LIKE :name) AND `online`=1';
119+
} else {
120+
$filter = '(`uuid` LIKE :uuid OR `cldbid` LIKE :cldbid OR `name` LIKE :name)';
113121
}
114122

115-
if($uuid == '----------_none_selected_----------' && $name == '----------_none_selected_----------' && $cldbid == 0) {
123+
if($uuid == '----------_none_selected_----------' && $name == '----------_none_selected_----------' && $filter == '' && $cldbid == 0) {
116124
$json = array(
117125
"usage" => array(
118126
"uuid" => array(
@@ -130,20 +138,27 @@
130138
"usage" => "Use \$_GET parameter 'name' and add as value a name or a part of it",
131139
"example" => "/api/?user&name=Newcomer1989"
132140
),
141+
"online" => array(
142+
"desc" => "Get the online TeamSpeak user",
143+
"usage" => "Use \$_GET parameter 'online' without any value",
144+
"example" => "/api/?user&online"
145+
),
133146
"part" => array(
134-
"desc" => "Define, which part of the result you want to get. This is needed, when more then 10 clients are inside the result. At default you will get the first 10 clients. To get the next 10 clients, you will need to answer for part 2.",
147+
"desc" => "Define, which part of the result you want to get. This is needed, when more then 10 clients are inside the result. At default you will get the first 100 clients. To get the next 100 clients, you will need to answer for part 2.",
135148
"usage" => "Use \$_GET parameter 'part' and add as value a number above 1",
136149
"example" => "/api/?user&name=TeamSpeakUser&part=2"
137150
)
138151
)
139152
);
140153
} else {
141-
$dbdata = $mysqlcon->prepare("SELECT `uuid`,`cldbid`,`rank`,`count`,`name`,`idle`,`cldgroup`,`online`,`nextup`,`lastseen`,`grpid`,`except`,`grpsince` FROM `$dbname`.`user` WHERE (`uuid` LIKE :uuid OR `cldbid` LIKE :cldbid OR `name` LIKE :name) LIMIT :start, :limit");
142-
$dbdata->bindValue(':uuid', '%'.$uuid.'%', PDO::PARAM_STR);
143-
$dbdata->bindValue(':cldbid', (int) $cldbid, PDO::PARAM_INT);
144-
$dbdata->bindValue(':name', '%'.$name.'%', PDO::PARAM_STR);
154+
$dbdata = $mysqlcon->prepare("SELECT `uuid`,`cldbid`,`rank`,`count`,`name`,`idle`,`cldgroup`,`online`,`nextup`,`lastseen`,`grpid`,`except`,`grpsince` FROM `$dbname`.`user` WHERE {$filter} LIMIT :start, :limit");
155+
if($filter != '`online`=1') {
156+
$dbdata->bindValue(':uuid', '%'.$uuid.'%', PDO::PARAM_STR);
157+
$dbdata->bindValue(':cldbid', (int) $cldbid, PDO::PARAM_INT);
158+
$dbdata->bindValue(':name', '%'.$name.'%', PDO::PARAM_STR);
159+
}
145160
$dbdata->bindValue(':start', (int) $part, PDO::PARAM_INT);
146-
$dbdata->bindValue(':limit', (int) 10, PDO::PARAM_INT);
161+
$dbdata->bindValue(':limit', (int) 100, PDO::PARAM_INT);
147162
$dbdata->execute();
148163
$json = $dbdata->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE);
149164
}

install.php

Lines changed: 42 additions & 20 deletions
Large diffs are not rendered by default.

jobs/bot.php

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,31 @@ function sendmessage($ts3, $cfg, $uuid, $msg, $erromsg=NULL, $errcode=NULL, $suc
175175
}
176176
}
177177

178+
function mime2extension($mimetype) {
179+
$mimearr = [
180+
'image/bmp' => 'bmp',
181+
'image/x-bmp' => 'bmp',
182+
'image/x-bitmap' => 'bmp',
183+
'image/x-xbitmap' => 'bmp',
184+
'image/x-win-bitmap' => 'bmp',
185+
'image/x-windows-bmp' => 'bmp',
186+
'image/ms-bmp' => 'bmp',
187+
'image/x-ms-bmp' => 'bmp',
188+
'image/gif' => 'gif',
189+
'image/jpeg' => 'jpg',
190+
'image/pjpeg' => 'jpg',
191+
'image/x-portable-bitmap' => 'pbm',
192+
'image/x-portable-graymap' => 'pgm',
193+
'image/png' => 'png',
194+
'image/x-png' => 'png',
195+
'image/x-portable-pixmap' => 'ppm',
196+
'image/svg+xml' => 'svg',
197+
'image/x-xbitmap' => 'xbm',
198+
'image/x-xpixmap' => 'xpm'
199+
];
200+
return isset($mimearr[$mimetype]) ? $mimearr[$mimetype] : FALSE;
201+
}
202+
178203
function run_bot() {
179204
global $cfg, $mysqlcon, $dbname, $dbtype, $lang, $phpcommand, $addons_config, $max_execution_time, $memory_limit;
180205

@@ -394,10 +419,8 @@ function run_bot() {
394419
while(1) {
395420
$sqlexec = '';
396421
$starttime = microtime(true);
397-
$weekago = time() - 604800;
398-
$monthago = time() - 2592000;
399422

400-
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`user`; SELECT MAX(`timestamp`) AS `timestamp` FROM `$dbname`.`user_snapshot`; SELECT `version`, COUNT(`version`) AS `count` FROM `$dbname`.`user` GROUP BY `version` ORDER BY `count` DESC; SELECT MAX(`timestamp`) AS `timestamp` FROM `$dbname`.`server_usage`; SELECT * FROM `$dbname`.`job_check`; SELECT `uuid` FROM `$dbname`.`stats_user`; SELECT `timestamp` FROM `$dbname`.`user_snapshot` WHERE `timestamp`>$weekago ORDER BY `timestamp` ASC LIMIT 1; SELECT `timestamp` FROM `$dbname`.`user_snapshot` WHERE `timestamp`>$monthago ORDER BY `timestamp` ASC LIMIT 1; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; ")) === false) {
423+
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`user`; SELECT `version`, COUNT(`version`) AS `count` FROM `$dbname`.`user` GROUP BY `version` ORDER BY `count` DESC; SELECT MAX(`timestamp`) AS `timestamp` FROM `$dbname`.`server_usage`; SELECT * FROM `$dbname`.`job_check`; SELECT `uuid` FROM `$dbname`.`stats_user`; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; ")) === false) {
401424
shutdown($mysqlcon,$cfg,1,"Select on DB failed: ".print_r($mysqlcon->errorInfo(), true));
402425
}
403426

@@ -412,33 +435,24 @@ function run_bot() {
412435
$select_arr['all_user'] = $fetched_array;
413436
break;
414437
case 2:
415-
$select_arr['max_timestamp_user_snapshot'] = $fetched_array;
438+
$select_arr['count_version_user'] = $fetched_array;
416439
break;
417440
case 3:
418-
$select_arr['count_version_user'] = $fetched_array;
441+
$select_arr['max_timestamp_server_usage'] = $fetched_array;
419442
break;
420443
case 4:
421-
$select_arr['max_timestamp_server_usage'] = $fetched_array;
444+
$select_arr['job_check'] = $fetched_array;
422445
break;
423446
case 5:
424-
$select_arr['job_check'] = $fetched_array;
425-
break;
426-
case 6:
427447
$select_arr['uuid_stats_user'] = $fetched_array;
428448
break;
429-
case 7:
430-
$select_arr['usersnap_min_week'] = $fetched_array;
431-
break;
432-
case 8:
433-
$select_arr['usersnap_min_month'] = $fetched_array;
434-
break;
435-
case 9:
449+
case 6:
436450
$select_arr['groups'] = $fetched_array;
437451
break;
438-
case 10:
452+
case 7:
439453
$select_arr['addon_assign_groups'] = $fetched_array;
440454
break;
441-
case 11:
455+
case 8:
442456
$select_arr['admin_addtime'] = $fetched_array;
443457
break 2;
444458
}

jobs/calc_serverstats.php

Lines changed: 19 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -31,57 +31,23 @@ function calc_serverstats($ts3,$mysqlcon,$cfg,$dbname,$dbtype,$serverinfo,$selec
3131

3232
// Event Handling each 6 hours
3333
// Duplicate users Table in snapshot Table
34-
if(key($select_arr['max_timestamp_user_snapshot']) == NULL || ($nowtime - key($select_arr['max_timestamp_user_snapshot'])) > 21600) {
34+
if(($nowtime - $select_arr['job_check']['last_snapshot_time']['timestamp']) > 21600) {
3535
if(isset($select_arr['all_user'])) {
36+
$nextid = $select_arr['job_check']['last_snapshot_id']['timestamp'] + 1;
37+
if ($nextid > 121) $nextid = $nextid - 121;
38+
3639
$allinsertsnap = '';
3740
foreach ($select_arr['all_user'] as $uuid => $insertsnap) {
38-
$allinsertsnap = $allinsertsnap . "('{$nowtime}','{$uuid}',{$insertsnap['count']},{$insertsnap['idle']}),";
41+
if(isset($insertsnap['cldbid']) && $insertsnap['cldbid'] != NULL) {
42+
$allinsertsnap = $allinsertsnap . "({$nextid},{$insertsnap['cldbid']},".round($insertsnap['count']).",".round($insertsnap['idle'])."),";
43+
}
3944
}
4045
$allinsertsnap = substr($allinsertsnap, 0, -1);
4146
if ($allinsertsnap != '') {
42-
$sqlexec .= "INSERT INTO `$dbname`.`user_snapshot` (`timestamp`,`uuid`,`count`,`idle`) VALUES $allinsertsnap; ";
47+
$sqlexec .= "DELETE FROM `$dbname`.`user_snapshot` WHERE `id`={$nextid}; INSERT INTO `$dbname`.`user_snapshot` (`id`,`cldbid`,`count`,`idle`) VALUES $allinsertsnap; UPDATE `$dbname`.`job_check` SET `timestamp`={$nextid} WHERE `job_name`='last_snapshot_id'; UPDATE `$dbname`.`job_check` SET `timestamp`={$nowtime} WHERE `job_name`='last_snapshot_time'; ";
4348
}
4449
unset($allinsertsnap);
4550
}
46-
$fp = eval(base64_decode("Zm9wZW4oc3Vic3RyKF9fRElSX18sMCwtNCkuInN0YXRzL25hdi5waHAiLCAiciIpOw=="));
47-
if(!$fp) {
48-
$error_fp_open = 1;
49-
} else {
50-
$buffer=array();
51-
while($line = fgets($fp, 4096)) {
52-
array_push($buffer, $line);
53-
}
54-
fclose($fp);
55-
$checkarr = array_flip(array('PD9QSFAgZWNobyAnPGxpJy4oYmFzZW5hbWUoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pID09ICJpbmZvLnBocCIgPyAnIGNsYXNzPSJhY3RpdmUiPicgOiAnPicpOyA/PgoJCQkJCQk8YSBocmVmPSJpbmZvLnBocCI+PGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSI+PC9pPiZuYnNwOzw/UEhQIGVjaG8gJGxhbmdbJ3N0bnYwMDMwJ107ID8+PC9hPg=='));
56-
$countcheck = 0;
57-
foreach($buffer as $line) {
58-
if(isset($checkarr[substr(base64_encode($line), 0, 132)])) {
59-
$countcheck++;
60-
}
61-
}
62-
unset($fp, $checkarr, $buffer);
63-
}
64-
$fp = eval(base64_decode("Zm9wZW4oc3Vic3RyKF9fRElSX18sMCwtNCkuInN0YXRzL2luZm8ucGhwIiwgInIiKTs="));
65-
if(!$fp) {
66-
$error_fp_open = 1;
67-
} else {
68-
$buffer=array();
69-
while($line = fgets($fp, 4096)) {
70-
array_push($buffer, $line);
71-
}
72-
fclose($fp);
73-
foreach($buffer as $line) {
74-
if(strstr(base64_encode($line), "PHA+VGhlIDxhIGhyZWY9Ii8vdHMtcmFua3N5c3RlbS5jb20iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPlJhbmtzeXN0ZW08L2E+IHdhcyBjb2RlZCBieSA8c3Ryb25nPk5ld2NvbWVyMTk4OTwvc3Ryb25nPiBDb3B5cmlnaHQgJmNvcHk7IDIwMDktMjAxOSBwb3dlcmVkIGJ5IDxhIGhyZWY9Ii8vdHMtbi5uZXQvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj5UUy1OLk5FVDwvYT48L3A+")) {
75-
$countcheck++;
76-
}
77-
}
78-
unset($fp, $buffer);
79-
}
80-
81-
if((isset($countcheck) && $countcheck != 3 && !isset($error_fp_open)) || !file_exists(substr(__DIR__,0,-4).base64_decode("c3RhdHMvaW5mby5waHA="))) {
82-
//eval(base64_decode("c2h1dGRvd24oJG15c3FsY29uLCAkbG9ncGF0aCwgJHRpbWV6b25lLCAxLCAnUEhQIFNBTSBpcyBtaXNzZWQuIEluc3RhbGxhdGlvbiBvZiBQSFAgU0FNIGlzIHJlcXVpcmVkIScpOwoJCQkJCQk="));
83-
eval(base64_decode("JGNoID0gY3VybF9pbml0KCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICdodHRwczovL3RzLW4ubmV0L3JhbmtzeXN0ZW0vJy4kdXBjaGFubmVsKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFRkVSRVIsICdUU04gUmFua3N5c3RlbScpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAnVmlvbGF0ZWQgQ29weXJpZ2h0Jyk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCxmYWxzZSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUixmYWxzZSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9NQVhSRURJUlMsIDEwKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsgY3VybF9leGVjKCRjaCk7Y3VybF9jbG9zZSgkY2gpOw=="));
84-
}
8551
}
8652

8753
$total_user = count($select_arr['all_user']);
@@ -426,12 +392,17 @@ function calc_serverstats($ts3,$mysqlcon,$cfg,$dbname,$dbtype,$serverinfo,$selec
426392

427393
// Calc Values for server stats
428394
if($select_arr['job_check']['calc_server_stats']['timestamp'] < ($nowtime - 900)) {
429-
if(($entry_snapshot_count = $mysqlcon->query("SELECT count(DISTINCT(`timestamp`)) AS `timestamp` FROM `$dbname`.`user_snapshot`")->fetch(PDO::FETCH_ASSOC)) === false) {
395+
$weekago = $select_arr['job_check']['last_snapshot_id']['timestamp'] - 28;
396+
$monthago = $select_arr['job_check']['last_snapshot_id']['timestamp'] - 120;
397+
if ($weekago < 1) $weekago = $weekago + 121;
398+
if ($monthago < 1) $monthago = $monthago + 121;
399+
400+
if(($entry_snapshot_count = $mysqlcon->query("SELECT count(DISTINCT(`id`)) AS `id` FROM `$dbname`.`user_snapshot`")->fetch(PDO::FETCH_ASSOC)) === false) {
430401
enter_logfile($cfg,2,"calc_serverstats 19:".print_r($mysqlcon->errorInfo(), true));
431402
}
432-
if ($entry_snapshot_count['timestamp'] > 27) {
403+
if ($entry_snapshot_count['id'] > 28) {
433404
// Calc total_online_week
434-
if(($snapshot_count_week = $mysqlcon->query("SELECT (SELECT SUM(`count`) FROM `$dbname`.`user_snapshot` WHERE `timestamp`=(SELECT MAX(`timestamp`) FROM `$dbname`.`user_snapshot`)) - (SELECT SUM(`count`) FROM `$dbname`.`user_snapshot` WHERE `timestamp`=(SELECT MIN(`s2`.`timestamp`) AS `value2` FROM (SELECT DISTINCT(`timestamp`) FROM `$dbname`.`user_snapshot` ORDER BY `timestamp` DESC LIMIT 28) AS `s2`, `$dbname`.`user_snapshot` AS `s1` WHERE `s1`.`timestamp`=`s2`.`timestamp`) AND `uuid` IN (SELECT `uuid` FROM `$dbname`.`user`)) AS `count`")->fetch(PDO::FETCH_ASSOC)) === false) {
405+
if(($snapshot_count_week = $mysqlcon->query("SELECT (SELECT SUM(`count`) FROM `user_snapshot` WHERE `id`={$select_arr['job_check']['last_snapshot_id']['timestamp']}) - (SELECT SUM(`count`) FROM `user_snapshot` WHERE `id`={$weekago}) AS `count`;")->fetch(PDO::FETCH_ASSOC)) === false) {
435406
enter_logfile($cfg,2,"calc_serverstats 20:".print_r($mysqlcon->errorInfo(), true));
436407
}
437408
if($snapshot_count_week['count'] == NULL) {
@@ -442,9 +413,9 @@ function calc_serverstats($ts3,$mysqlcon,$cfg,$dbname,$dbtype,$serverinfo,$selec
442413
} else {
443414
$total_online_week = 0;
444415
}
445-
if ($entry_snapshot_count['timestamp'] > 119) {
416+
if ($entry_snapshot_count['id'] > 120) {
446417
// Calc total_online_month
447-
if(($snapshot_count_month = $mysqlcon->query("SELECT (SELECT SUM(`count`) FROM `$dbname`.`user_snapshot` WHERE `timestamp`=(SELECT MAX(`timestamp`) FROM `$dbname`.`user_snapshot`)) - (SELECT SUM(`count`) FROM `$dbname`.`user_snapshot` WHERE `timestamp`=(SELECT MIN(`s2`.`timestamp`) AS `value2` FROM (SELECT DISTINCT(`timestamp`) FROM `$dbname`.`user_snapshot` ORDER BY `timestamp` DESC LIMIT 120) AS `s2`, `$dbname`.`user_snapshot` AS `s1` WHERE `s1`.`timestamp`=`s2`.`timestamp`) AND `uuid` IN (SELECT `uuid` FROM `$dbname`.`user`)) AS `count`")->fetch(PDO::FETCH_ASSOC)) === false) {
418+
if(($snapshot_count_month = $mysqlcon->query("SELECT (SELECT SUM(`count`) FROM `user_snapshot` WHERE `id`={$select_arr['job_check']['last_snapshot_id']['timestamp']}) - (SELECT SUM(`count`) FROM `user_snapshot` WHERE `id`={$monthago}) AS `count`;")->fetch(PDO::FETCH_ASSOC)) === false) {
448419
enter_logfile($cfg,2,"calc_serverstats 21:".print_r($mysqlcon->errorInfo(), true));
449420
}
450421
if($snapshot_count_month['count'] == NULL) {
@@ -455,7 +426,7 @@ function calc_serverstats($ts3,$mysqlcon,$cfg,$dbname,$dbtype,$serverinfo,$selec
455426
} else {
456427
$total_online_month = 0;
457428
}
458-
$sqlexec .= "UPDATE `$dbname`.`stats_server` SET `total_online_month`=$total_online_month,`total_online_week`=$total_online_week; UPDATE `$dbname`.`job_check` SET `timestamp`=$nowtime WHERE `job_name`='calc_server_stats'; ";
429+
$sqlexec .= "UPDATE `$dbname`.`stats_server` SET `total_online_month`={$total_online_month},`total_online_week`={$total_online_week}; UPDATE `$dbname`.`job_check` SET `timestamp`={$nowtime} WHERE `job_name`='calc_server_stats'; ";
459430

460431
if ($select_arr['job_check']['get_version']['timestamp'] < ($nowtime - 43200)) {
461432
$ch = curl_init();

0 commit comments

Comments
 (0)