Skip to content

Commit 25d375a

Browse files
committed
release 1.3.23
1 parent 7633da2 commit 25d375a

27 files changed

Lines changed: 761 additions & 258 deletions

install.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?PHP
2-
$rsversion = '1.3.22';
2+
$rsversion = '1.3.23';
33

44
require_once('other/_functions.php');
55
require_once('other/config.php');
@@ -479,6 +479,16 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
479479
$count++;
480480
}
481481

482+
if($mysqlcon->exec("CREATE TABLE IF NOT EXISTS `$dbname`.`admin_mrgclient` (
483+
`uuid_source` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
484+
`uuid_target` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
485+
`timestamp` int(10) UNSIGNED NOT NULL default '0',
486+
PRIMARY KEY (`uuid_source`)
487+
);") === false) {
488+
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
489+
$count++;
490+
}
491+
482492
if($count == 1) {
483493
$err_msg = sprintf($lang['instdbsuc'], $dbname); $err_lvl = NULL;
484494
$install_webuser = 1;

jobs/bot.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ function run_bot(&$cfg) {
343343
$looptime = $cfg['temp_count_laps'] = $cfg['temp_whole_laptime'] = $cfg['temp_count_laptime'] = 0; $cfg['temp_last_laptime'] = '';
344344
usleep(3000000);
345345

346-
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`user`; SELECT MAX(`timestamp`) AS `timestamp` FROM `$dbname`.`server_usage`; SELECT * FROM `$dbname`.`job_check`; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`channel`; SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; ")) === false) {
346+
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`user`; SELECT MAX(`timestamp`) AS `timestamp` FROM `$dbname`.`server_usage`; SELECT * FROM `$dbname`.`job_check`; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`channel`; SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; SELECT * FROM `$dbname`.`admin_mrgclient`; ")) === false) {
347347
shutdown($mysqlcon,1,"Select on DB failed: ".print_r($mysqlcon->errorInfo(), true));
348348
}
349349

@@ -374,7 +374,10 @@ function run_bot(&$cfg) {
374374
break;
375375
case 7:
376376
$db_cache['admin_addtime'] = $fetched_array;
377-
break 2;
377+
break;
378+
case 8:
379+
$db_cache['admin_mrgclient'] = $fetched_array;
380+
break 2;
378381
}
379382
$get_db_data->nextRowset();
380383
}
@@ -392,8 +395,8 @@ function run_bot(&$cfg) {
392395
}
393396

394397
if(intval($db_cache['job_check']['reload_trigger']['timestamp']) == 1) {
395-
unset($db_cache['addon_assign_groups'],$db_cache['admin_addtime']);
396-
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`channel`;")) === false) {
398+
unset($db_cache['addon_assign_groups'],$db_cache['admin_addtime'],$db_cache['admin_mrgclient']);
399+
if(($get_db_data = $mysqlcon->query("SELECT * FROM `$dbname`.`addon_assign_groups`; SELECT * FROM `$dbname`.`admin_addtime`; SELECT * FROM `$dbname`.`admin_mrgclient`; SELECT * FROM `$dbname`.`groups`; SELECT * FROM `$dbname`.`channel`;")) === false) {
397400
shutdown($mysqlcon,1,"Select on DB failed: ".print_r($mysqlcon->errorInfo(), true));
398401
}
399402

@@ -410,11 +413,14 @@ function run_bot(&$cfg) {
410413
$db_cache['admin_addtime'] = $fetched_array;
411414
break;
412415
case 3:
413-
$db_cache['groups'] = $fetched_array;
416+
$db_cache['admin_mrgclient'] = $fetched_array;
414417
break;
415418
case 4:
419+
$db_cache['groups'] = $fetched_array;
420+
break;
421+
case 5:
416422
$db_cache['channel'] = $fetched_array;
417-
break 2;
423+
break 2;
418424
}
419425
$get_db_data->nextRowset();
420426
}

jobs/calc_user.php

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,102 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
2323

2424
$multipleonline = $updatedata = $insertdata = array();
2525

26+
if(isset($db_cache['admin_mrgclient']) && count($db_cache['admin_mrgclient']) != 0) {
27+
foreach($db_cache['admin_mrgclient'] as $uuid_source => $value) {
28+
$uuid_target = $value['uuid_target'];
29+
if(isset($db_cache['all_user'][$uuid_source]) && isset($db_cache['all_user'][$uuid_target])) {
30+
$source_isonline = $target_isonline = 0;
31+
foreach($allclients as $client) {
32+
if($client['client_unique_identifier'] == $uuid_source) {
33+
$source_isonline = 1;
34+
$source_cldbid = $client['client_database_id'];
35+
$source_name = mb_convert_encoding($client['client_nickname'],'UTF-8','auto');
36+
}
37+
if($client['client_unique_identifier'] == $uuid_target) {
38+
$target_isonline = 1;
39+
$target_cldbid = $client['client_database_id'];
40+
$target_name = mb_convert_encoding($client['client_nickname'],'UTF-8','auto');
41+
}
42+
}
43+
$source_online = $db_cache['all_user'][$uuid_source]['count'];
44+
$source_idle = $db_cache['all_user'][$uuid_source]['idle'];
45+
$db_cache['all_user'][$uuid_target]['count'] += $source_online;
46+
$db_cache['all_user'][$uuid_target]['idle'] += $source_idle;
47+
$db_cache['all_user'][$uuid_source]['count'] = 0;
48+
$db_cache['all_user'][$uuid_source]['idle'] = 0;
49+
50+
if($source_isonline != 1 || target_isonline != 1) {
51+
if(($user = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` WHERE `uuid` in ('{$uuid_source}','{$uuid_target}')")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
52+
enter_logfile(2,"Database error on selecting source user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
53+
} else {
54+
$source_cldbid = $user[$uuid_source]['cldbid'];
55+
$target_cldbid = $user[$uuid_target]['cldbid'];
56+
$source_name = $user[$uuid_source]['name'];
57+
$target_name = $user[$uuid_target]['name'];
58+
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`='0', `idle`='0' WHERE `uuid`='{$uuid_source}';\n";
59+
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`='{$db_cache['all_user'][$uuid_target]['count']}', `idle`='{$db_cache['all_user'][$uuid_target]['idle']}' WHERE `uuid`='{$uuid_target}';\n";
60+
}
61+
}
62+
63+
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_mrgclient` WHERE `timestamp`='{$value['timestamp']}' AND `uuid_source`='{$uuid_source}';") === false) {
64+
enter_logfile(2,"Database error on updating user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
65+
}
66+
if(($source_usersnap = $mysqlcon->query("SELECT `id`,`cldbid`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `cldbid`={$source_cldbid}")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
67+
enter_logfile(2,"Database error on selecting user_snapshot of source user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
68+
} elseif(($target_usersnap = $mysqlcon->query("SELECT `id`,`cldbid`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `cldbid`={$target_cldbid}")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
69+
enter_logfile(2,"Database error on selecting user_snapshot of target user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
70+
} else {
71+
foreach($target_usersnap as $id => $target_snap) {
72+
if(isset($source_usersnap[$id]) && $source_usersnap[$id]['count'] != NULL) {
73+
$target_snap['count'] += $source_usersnap[$id]['count'];
74+
$source_usersnap[$id]['count'] = 0;
75+
$target_snap['idle'] += $source_usersnap[$id]['idle'];
76+
$source_usersnap[$id]['idle'] = 0;
77+
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='{$target_snap['count']}', `idle`='{$target_snap['idle']}' WHERE `cldbid`='{$target_cldbid}' AND `id`='{$id}';\n";
78+
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
79+
}
80+
}
81+
foreach($source_usersnap as $id => $source_snap) {
82+
if(isset($target_usersnap[$id]) && $target_usersnap[$id]['count'] != NULL) {
83+
$target_usersnap[$id]['count'] += $source_snap['count'];
84+
$target_usersnap[$id]['idle'] += $source_snap['idle'];
85+
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='{$target_usersnap[$id]['count']}', `idle`='{$target_usersnap[$id]['idle']}' WHERE `cldbid`='{$target_cldbid}' AND `id`='{$id}';\n";
86+
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
87+
} else {
88+
$sqlexec .= "INSERT INTO `$dbname`.`user_snapshot` (`id`,`cldbid`,`count`,`idle`) VALUES ('{$id}','{$target_cldbid}','{$source_snap['count']}','{$source_snap['idle']}');\n";
89+
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
90+
}
91+
}
92+
}
93+
enter_logfile(4,sprintf($lang['sccupcount3'],$source_name,$uuid_source,$source_cldbid,$target_name,$uuid_target,$target_cldbid,$source_online,$source_idle));
94+
unset($user, $source_usersnap, $target_usersnap);
95+
96+
97+
if(isset($value['source_delete']) && $value['source_delete'] == 1) {
98+
if(($user = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` WHERE `uuid`='{$uuid_source}'")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
99+
enter_logfile(2,"Database error on selecting user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
100+
} else {
101+
$temp_cldbid = $user[$uuid_source]['cldbid'];
102+
$sqlexec .= "DELETE FROM `$dbname`.`addon_assign_groups` WHERE `uuid`='{$uuid_source}';\nDELETE FROM `$dbname`.`admin_mrgclient` WHERE `uuid_source`='{$uuid_source}';\nDELETE FROM `$dbname`.`stats_user` WHERE `uuid`='{$uuid_source}';\nDELETE FROM `$dbname`.`user` WHERE `uuid`='{$uuid_source}';\nDELETE FROM `$dbname`.`user_iphash` WHERE `uuid`='{$uuid_source}';\nDELETE FROM `$dbname`.`user_snapshot` WHERE `cldbid`='{$temp_cldbid}';\n";
103+
enter_logfile(4,sprintf($lang['wihladm45'],$user[$uuid_source]['name'],$uuid,$source_cldbid).' ('.$lang['wihladm46'].')');
104+
if(isset($db_cache['all_user'][$uuid_source])) unset($db_cache['all_user'][$uuid_source]);
105+
if(isset($db_cache['admin_mrgclient'][$uuid_source])) unset($db_cache['admin_mrgclient'][$uuid_source]);
106+
if(isset($db_cache['addon_assign_groups'][$uuid_source])) unset($db_cache['addon_assign_groups'][$uuid_source]);
107+
}
108+
unset($user);
109+
}
110+
} else {
111+
if(!isset($db_cache['all_user'][$uuid_source])) {
112+
enter_logfile(3,"Function merge client from $uuid_source to $uuid_target: Missing source client in Ranksystem database.");
113+
}
114+
if(!isset($db_cache['all_user'][$uuid_target])) {
115+
enter_logfile(3,"Function merge client from $uuid_source to $uuid_target: Missing target client in Ranksystem database.");
116+
}
117+
}
118+
}
119+
unset($db_cache['admin_mrgclient']);
120+
}
121+
26122
if(isset($db_cache['admin_addtime']) && count($db_cache['admin_addtime']) != 0) {
27123
foreach($db_cache['admin_addtime'] as $uuid => $value) {
28124
if(isset($db_cache['all_user'][$uuid])) {
@@ -84,7 +180,7 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
84180
}
85181
unset($db_cache['admin_addtime']);
86182
}
87-
183+
88184
foreach ($allclients as $client) {
89185
$client_groups_rankup = array();
90186
$name = $mysqlcon->quote((mb_substr(mb_convert_encoding($client['client_nickname'],'UTF-8','auto'),0,30)), ENT_QUOTES);

jobs/check_db.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?PHP
22
function check_db($mysqlcon,$lang,&$cfg,$dbname) {
3-
$cfg['version_latest_available'] = '1.3.22';
3+
$cfg['version_latest_available'] = '1.3.23';
44
enter_logfile(5,"Check Ranksystem database for updates...");
55

66
function check_double_cldbid($mysqlcon,$cfg,$dbname) {
@@ -489,9 +489,6 @@ function check_writable($cfg,$mysqlcon) {
489489
} else {
490490
enter_logfile(4," [1.3.18] Updated new addons_config values.");
491491
}
492-
493-
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
494-
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
495492
}
496493

497494
if(version_compare($cfg['version_current_using'], '1.3.19', '<')) {
@@ -533,8 +530,23 @@ function check_writable($cfg,$mysqlcon) {
533530
$cfg['stats_news_html'] = 'New Feature <a href="https://ts-ranksystem.com#voting" target="_blank">VOTING!</a> for the Ranksystem';
534531
$cfg['teamspeak_news_bb'] = 'New Feature [URL=https://ts-ranksystem.com#voting]VOTING![/URL] for the Ranksystem';
535532
}
533+
}
534+
535+
if(version_compare($cfg['version_current_using'], '1.3.23', '<')) {
536+
if($mysqlcon->exec("CREATE TABLE IF NOT EXISTS `$dbname`.`admin_mrgclient` (
537+
`uuid_source` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
538+
`uuid_target` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
539+
`timestamp` int(10) UNSIGNED NOT NULL default '0',
540+
PRIMARY KEY (`uuid_source`)
541+
);") === false) {
542+
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
543+
enter_logfile(2," [1.3.23] Created new table admin_mrgclient failed. SQL error: ".$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true));
544+
} else {
545+
enter_logfile(4," [1.3.23] Created new table admin_mrgclient successfully.");
546+
}
536547

537548
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
549+
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_mrgclient`;") === false) { }
538550
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
539551

540552
try {

0 commit comments

Comments
 (0)