Skip to content

Commit cebee01

Browse files
author
Your Name
committed
Merge branch 'develop'
2 parents ee25765 + d340ffe commit cebee01

35 files changed

+394
-157
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# TS3 Ranksystem
2-
![compat](https://jvmerkle.de/badges/latest-tsn-rs-compat.svg) ![build](https://img.shields.io/docker/cloud/build/jvmerkle/ts3-ranksystem.svg) ![auto](https://img.shields.io/docker/cloud/automated/jvmerkle/ts3-ranksystem.svg) ![pulls](https://img.shields.io/docker/pulls/jvmerkle/ts3-ranksystem.svg)
2+
![compat](https://jvmerkle.de/badges/latest-tsn-rs-compat.svg) ![pulls](https://img.shields.io/docker/pulls/jvmerkle/ts3-ranksystem.svg)
33

44
System that automatically grants ranks in the form of server groups for online time or online activity to users, using the given server groups of the TS3 server.
55

install.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?PHP
2-
$rsversion = '1.3.19';
2+
$rsversion = '1.3.21';
33

44
require_once('other/_functions.php');
55
require_once('other/config.php');
@@ -79,7 +79,16 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
7979
$err_lvl = 2;
8080
} else {
8181
$count = 1;
82-
if(($mysqlcon->exec("DROP DATABASE `$dbname`")) === false) { }
82+
$stmt = $mysqlcon->query('SHOW DATABASES');
83+
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
84+
if ($row['Database'] == $dbname) {
85+
$dbExists = true;
86+
break;
87+
}
88+
}
89+
if ($dbExists) {
90+
if(($mysqlcon->exec("DROP DATABASE `$dbname`")) === false) { }
91+
}
8392

8493
if($mysqlcon->exec("CREATE DATABASE `$dbname`") === false) {
8594
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
@@ -168,7 +177,7 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
168177
$count++;
169178
}
170179

171-
if($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`) VALUES ('calc_user_limit'),('calc_user_lastscan'),('calc_user_removed'),('check_update'),('database_export'),('get_version'),('clean_db'),('clean_clients'),('calc_donut_chars'),('calc_server_stats'),('get_avatars'),('last_snapshot_id'),('last_snapshot_time'),('last_update'),('reload_trigger'),('reset_user_time'),('reset_user_delete'),('reset_group_withdraw'),('reset_webspace_cache'),('reset_usage_graph'),('reset_stop_after'),('runtime_check'),('update_channel'),('update_groups')") === false) {
180+
if($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`) VALUES ('calc_user_limit'),('calc_user_lastscan'),('calc_user_removed'),('check_update'),('clean_user_iphash'),('database_export'),('get_version'),('clean_db'),('clean_clients'),('calc_donut_chars'),('calc_server_stats'),('get_avatars'),('last_snapshot_id'),('last_snapshot_time'),('last_update'),('reload_trigger'),('reset_user_time'),('reset_user_delete'),('reset_group_withdraw'),('reset_webspace_cache'),('reset_usage_graph'),('reset_stop_after'),('runtime_check'),('update_channel'),('update_groups')") === false) {
172181
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
173182
$count++;
174183
}

jobs/addon_channelinfo_toplist.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,12 @@ function addon_channelinfo_toplist(&$addons_config,$ts3,$mysqlcon,$cfg,$dbname,$
9292
$smarty->assign('CLIENT_NEXT_RANKUP_TIME_'.($nr + 1),$userdata[$nr]['nextup']);
9393

9494
$smarty->assign('CLIENT_CURRENT_RANK_GROUP_ID_'.($nr + 1),$userdata[$nr]['grpid']);
95-
if(isset($db_cache['groups'][$userdata[$nr]['grpid']]['sgidname'])) {
95+
if(isset($db_cache['groups'][$userdata[$nr]['grpid']]['sgidname']) && $userdata[$nr]['grpid'] != 0) {
9696
$smarty->assign('CLIENT_CURRENT_RANK_GROUP_NAME_'.($nr + 1),substr($db_cache['groups'][$userdata[$nr]['grpid']]['sgidname'],1,-1));
9797
} else {
9898
$smarty->assign('CLIENT_CURRENT_RANK_GROUP_NAME_'.($nr + 1),'unknown_group');
9999
}
100-
if(isset($db_cache['groups'][$userdata[$nr]['grpid']]['iconid']) && isset($db_cache['groups'][$userdata[$nr]['grpid']]['ext'])) {
100+
if(isset($db_cache['groups'][$userdata[$nr]['grpid']]['iconid']) && isset($db_cache['groups'][$userdata[$nr]['grpid']]['ext']) && $userdata[$nr]['grpid'] != 0) {
101101
$smarty->assign('CLIENT_CURRENT_RANK_GROUP_ICON_URL_'.($nr + 1),'tsicons/'.$db_cache['groups'][$userdata[$nr]['grpid']]['iconid'].'.'.$db_cache['groups'][$userdata[$nr]['grpid']]['ext']);
102102
} else {
103103
$smarty->assign('CLIENT_CURRENT_RANK_GROUP_ICON_URL_'.($nr + 1),'file_not_found');

jobs/bot.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ function run_bot(&$cfg) {
145145

146146
enter_logfile($cfg,9," Select virtual server...");
147147
try {
148-
if(version_compare($ts3version['version'],'3.4.0','>=')) {
148+
if(version_compare($ts3version['version'],'3.4.0','>=') || version_compare($ts3version['version'],'3.0.0','<=')) {
149149
usleep($cfg['teamspeak_query_command_delay']);
150150
$ts3server = $ts3host->serverGetByPort($cfg['teamspeak_voice_port'], $cfg['teamspeak_query_nickname']);
151151
} else {

jobs/calc_serverstats.php

Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -380,41 +380,39 @@ function calc_serverstats($ts3,$mysqlcon,&$cfg,$dbname,$dbtype,$serverinfo,&$db_
380380
}
381381
$sqlexec .= "UPDATE `$dbname`.`stats_server` SET `total_online_month`={$total_online_month},`total_online_week`={$total_online_week};\nUPDATE `$dbname`.`job_check` SET `timestamp`={$nowtime} WHERE `job_name`='calc_server_stats';\n";
382382

383-
// if ($db_cache['job_check']['get_version']['timestamp'] < ($nowtime - 43199)) {
384-
// $db_cache['job_check']['get_version']['timestamp'] = $nowtime;
385-
// enter_logfile($cfg,6,"Get the latest Ranksystem Version.");
386-
// $ch = curl_init();
387-
// curl_setopt($ch, CURLOPT_URL, 'https://ts-n.net/ranksystem/'.$cfg['version_update_channel']);
388-
// curl_setopt($ch, CURLOPT_REFERER, 'TSN Ranksystem');
389-
// curl_setopt($ch, CURLOPT_USERAGENT,
390-
// $cfg['version_current_using'].";".
391-
// php_uname("s").";".
392-
// php_uname("r").";".
393-
// phpversion().";".
394-
// $dbtype.";".
395-
// $cfg['teamspeak_host_address'].";".
396-
// $cfg['teamspeak_voice_port'].";".
397-
// ";". #old installation path
398-
// $total_user.";".
399-
// $user_today.";".
400-
// $user_week.";".
401-
// $user_month.";".
402-
// $user_quarter.";".
403-
// $total_online_week.";".
404-
// $total_online_month.";".
405-
// $total_active_time.";".
406-
// $total_inactive_time.";".
407-
// $cfg['temp_ts_version'].";".
408-
// $cfg['temp_db_version']
409-
// );
410-
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
411-
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
412-
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
413-
// curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
414-
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
415-
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
416-
// $cfg['version_latest_available'] = curl_exec($ch);
417-
// curl_close($ch);
383+
//if ($db_cache['job_check']['get_version']['timestamp'] < ($nowtime - 43199)) {
384+
// $db_cache['job_check']['get_version']['timestamp'] = $nowtime;
385+
// enter_logfile($cfg,6,"Get the latest Ranksystem Version.");
386+
// $ch = curl_init();
387+
// curl_setopt($ch, CURLOPT_URL, 'https://ts-n.net/ranksystem/'.$cfg['version_update_channel']);
388+
// curl_setopt($ch, CURLOPT_REFERER, 'TSN Ranksystem');
389+
// curl_setopt($ch, CURLOPT_USERAGENT,
390+
// $cfg['version_current_using'].";".
391+
// php_uname("s").";".
392+
// php_uname("r").";".
393+
// phpversion().";".
394+
// $dbtype.";".
395+
// $cfg['teamspeak_host_address'].";".
396+
// $cfg['teamspeak_voice_port'].";".
397+
// ";". #old installation path
398+
// $total_user.";".
399+
// $user_today.";".
400+
// $user_week.";".
401+
// $user_month.";".
402+
// $user_quarter.";".
403+
// $total_online_week.";".
404+
// $total_online_month.";".
405+
// $total_active_time.";".
406+
// $total_inactive_time.";".
407+
// $cfg['temp_ts_version'].";".
408+
// $cfg['temp_db_version']
409+
// );
410+
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
411+
// curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
412+
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
413+
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
414+
// $cfg['version_latest_available'] = curl_exec($ch);
415+
// curl_close($ch);
418416

419417
// if(version_compare($cfg['version_latest_available'], $cfg['version_current_using'], '>') && $cfg['version_latest_available'] != NULL) {
420418
// enter_logfile($cfg,4,$lang['upinf']);
@@ -435,14 +433,20 @@ function calc_serverstats($ts3,$mysqlcon,&$cfg,$dbname,$dbtype,$serverinfo,&$db_
435433
// }
436434

437435
//Calc Rank
436+
$dbversion = $mysqlcon->getAttribute(PDO::ATTR_SERVER_VERSION);
437+
preg_match("/^[0-9\.-]+/", $dbversion, $version_number);
438438
if ($cfg['rankup_time_assess_mode'] == 1) {
439-
$sqlexec .= "SET @a:=0;\nUPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT @a:=@a+1 `nr`,`uuid` FROM `$dbname`.`user` WHERE `except`<2 ORDER BY (`count` - `idle`) DESC) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`nr`;\n";
440-
//MySQL 8 or above
441-
//UPDATE `user` AS `u` INNER JOIN (SELECT RANK() OVER (ORDER BY (`count` - `idle`) DESC) AS `rank`, `uuid` FROM `$dbname`.`user` WHERE `except`<2) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`rank`;
439+
if(version_compare($version_number[0], '10.6', '>=') || version_compare($version_number[0], '5.5.5-10.6', '>=')) {
440+
$sqlexec .= "UPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT RANK() OVER (ORDER BY (`count` - `idle`) DESC) AS `rank`, `uuid` FROM `$dbname`.`user` WHERE `except`<2) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`rank`;\n";
441+
} else {
442+
$sqlexec .= "SET @a:=0;\nUPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT @a:=@a+1 `nr`,`uuid` FROM `$dbname`.`user` WHERE `except`<2 ORDER BY (`count` - `idle`) DESC) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`nr`;\n";
443+
}
442444
} else {
443-
$sqlexec .= "SET @a:=0;\nUPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT @a:=@a+1 `nr`,`uuid` FROM `$dbname`.`user` WHERE `except`<2 ORDER BY `count` DESC) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`nr`;\n";
444-
//MySQL 8 or above
445-
//UPDATE `user` AS `u` INNER JOIN (SELECT RANK() OVER (ORDER BY `count` DESC) AS `rank`, `uuid` FROM `$dbname`.`user` WHERE `except`<2) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`rank`;
445+
if(version_compare($version_number[0], '10.6', '>=') || version_compare($version_number[0], '5.5.5-10.6', '>=')) {
446+
$sqlexec .= "UPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT RANK() OVER (ORDER BY `count` DESC) AS `rank`, `uuid` FROM `$dbname`.`user` WHERE `except`<2) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`rank`;\n";
447+
} else {
448+
$sqlexec .= "SET @a:=0;\nUPDATE `$dbname`.`user` AS `u` INNER JOIN (SELECT @a:=@a+1 `nr`,`uuid` FROM `$dbname`.`user` WHERE `except`<2 ORDER BY `count` DESC) AS `s` USING (`uuid`) SET `u`.`rank`=`s`.`nr`;\n";
449+
}
446450
}
447451
}
448452

0 commit comments

Comments
 (0)