Skip to content

Commit

Permalink
release 1.3.23
Browse files Browse the repository at this point in the history
  • Loading branch information
Newcomer1989 committed Oct 18, 2023
1 parent 7633da2 commit 25d375a
Show file tree
Hide file tree
Showing 27 changed files with 761 additions and 258 deletions.
12 changes: 11 additions & 1 deletion install.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?PHP
$rsversion = '1.3.22';
$rsversion = '1.3.23';

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

if($mysqlcon->exec("CREATE TABLE IF NOT EXISTS `$dbname`.`admin_mrgclient` (
`uuid_source` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`uuid_target` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`timestamp` int(10) UNSIGNED NOT NULL default '0',
PRIMARY KEY (`uuid_source`)
);") === false) {
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}

if($count == 1) {
$err_msg = sprintf($lang['instdbsuc'], $dbname); $err_lvl = NULL;
$install_webuser = 1;
Expand Down
18 changes: 12 additions & 6 deletions jobs/bot.php
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ function run_bot(&$cfg) {
$looptime = $cfg['temp_count_laps'] = $cfg['temp_whole_laptime'] = $cfg['temp_count_laptime'] = 0; $cfg['temp_last_laptime'] = '';
usleep(3000000);

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) {
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) {
shutdown($mysqlcon,1,"Select on DB failed: ".print_r($mysqlcon->errorInfo(), true));
}

Expand Down Expand Up @@ -374,7 +374,10 @@ function run_bot(&$cfg) {
break;
case 7:
$db_cache['admin_addtime'] = $fetched_array;
break 2;
break;
case 8:
$db_cache['admin_mrgclient'] = $fetched_array;
break 2;
}
$get_db_data->nextRowset();
}
Expand All @@ -392,8 +395,8 @@ function run_bot(&$cfg) {
}

if(intval($db_cache['job_check']['reload_trigger']['timestamp']) == 1) {
unset($db_cache['addon_assign_groups'],$db_cache['admin_addtime']);
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) {
unset($db_cache['addon_assign_groups'],$db_cache['admin_addtime'],$db_cache['admin_mrgclient']);
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) {
shutdown($mysqlcon,1,"Select on DB failed: ".print_r($mysqlcon->errorInfo(), true));
}

Expand All @@ -410,11 +413,14 @@ function run_bot(&$cfg) {
$db_cache['admin_addtime'] = $fetched_array;
break;
case 3:
$db_cache['groups'] = $fetched_array;
$db_cache['admin_mrgclient'] = $fetched_array;
break;
case 4:
$db_cache['groups'] = $fetched_array;
break;
case 5:
$db_cache['channel'] = $fetched_array;
break 2;
break 2;
}
$get_db_data->nextRowset();
}
Expand Down
98 changes: 97 additions & 1 deletion jobs/calc_user.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,102 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d

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

if(isset($db_cache['admin_mrgclient']) && count($db_cache['admin_mrgclient']) != 0) {
foreach($db_cache['admin_mrgclient'] as $uuid_source => $value) {
$uuid_target = $value['uuid_target'];
if(isset($db_cache['all_user'][$uuid_source]) && isset($db_cache['all_user'][$uuid_target])) {
$source_isonline = $target_isonline = 0;
foreach($allclients as $client) {
if($client['client_unique_identifier'] == $uuid_source) {
$source_isonline = 1;
$source_cldbid = $client['client_database_id'];
$source_name = mb_convert_encoding($client['client_nickname'],'UTF-8','auto');
}
if($client['client_unique_identifier'] == $uuid_target) {
$target_isonline = 1;
$target_cldbid = $client['client_database_id'];
$target_name = mb_convert_encoding($client['client_nickname'],'UTF-8','auto');
}
}
$source_online = $db_cache['all_user'][$uuid_source]['count'];
$source_idle = $db_cache['all_user'][$uuid_source]['idle'];
$db_cache['all_user'][$uuid_target]['count'] += $source_online;
$db_cache['all_user'][$uuid_target]['idle'] += $source_idle;
$db_cache['all_user'][$uuid_source]['count'] = 0;
$db_cache['all_user'][$uuid_source]['idle'] = 0;

if($source_isonline != 1 || target_isonline != 1) {
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) {
enter_logfile(2,"Database error on selecting source user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
} else {
$source_cldbid = $user[$uuid_source]['cldbid'];
$target_cldbid = $user[$uuid_target]['cldbid'];
$source_name = $user[$uuid_source]['name'];
$target_name = $user[$uuid_target]['name'];
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`='0', `idle`='0' WHERE `uuid`='{$uuid_source}';\n";
$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";
}
}

if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_mrgclient` WHERE `timestamp`='{$value['timestamp']}' AND `uuid_source`='{$uuid_source}';") === false) {
enter_logfile(2,"Database error on updating user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
}
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) {
enter_logfile(2,"Database error on selecting user_snapshot of source user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
} 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) {
enter_logfile(2,"Database error on selecting user_snapshot of target user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
} else {
foreach($target_usersnap as $id => $target_snap) {
if(isset($source_usersnap[$id]) && $source_usersnap[$id]['count'] != NULL) {
$target_snap['count'] += $source_usersnap[$id]['count'];
$source_usersnap[$id]['count'] = 0;
$target_snap['idle'] += $source_usersnap[$id]['idle'];
$source_usersnap[$id]['idle'] = 0;
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='{$target_snap['count']}', `idle`='{$target_snap['idle']}' WHERE `cldbid`='{$target_cldbid}' AND `id`='{$id}';\n";
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
}
}
foreach($source_usersnap as $id => $source_snap) {
if(isset($target_usersnap[$id]) && $target_usersnap[$id]['count'] != NULL) {
$target_usersnap[$id]['count'] += $source_snap['count'];
$target_usersnap[$id]['idle'] += $source_snap['idle'];
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='{$target_usersnap[$id]['count']}', `idle`='{$target_usersnap[$id]['idle']}' WHERE `cldbid`='{$target_cldbid}' AND `id`='{$id}';\n";
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
} else {
$sqlexec .= "INSERT INTO `$dbname`.`user_snapshot` (`id`,`cldbid`,`count`,`idle`) VALUES ('{$id}','{$target_cldbid}','{$source_snap['count']}','{$source_snap['idle']}');\n";
$sqlexec .= "UPDATE `$dbname`.`user_snapshot` SET `count`='0', `idle`='0' WHERE `cldbid`='{$source_cldbid}' AND `id`='{$id}';\n";
}
}
}
enter_logfile(4,sprintf($lang['sccupcount3'],$source_name,$uuid_source,$source_cldbid,$target_name,$uuid_target,$target_cldbid,$source_online,$source_idle));
unset($user, $source_usersnap, $target_usersnap);


if(isset($value['source_delete']) && $value['source_delete'] == 1) {
if(($user = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` WHERE `uuid`='{$uuid_source}'")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
enter_logfile(2,"Database error on selecting user (admin function merge clients): ".print_r($mysqlcon->errorInfo(), true));
} else {
$temp_cldbid = $user[$uuid_source]['cldbid'];
$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";
enter_logfile(4,sprintf($lang['wihladm45'],$user[$uuid_source]['name'],$uuid,$source_cldbid).' ('.$lang['wihladm46'].')');
if(isset($db_cache['all_user'][$uuid_source])) unset($db_cache['all_user'][$uuid_source]);
if(isset($db_cache['admin_mrgclient'][$uuid_source])) unset($db_cache['admin_mrgclient'][$uuid_source]);
if(isset($db_cache['addon_assign_groups'][$uuid_source])) unset($db_cache['addon_assign_groups'][$uuid_source]);
}
unset($user);
}
} else {
if(!isset($db_cache['all_user'][$uuid_source])) {
enter_logfile(3,"Function merge client from $uuid_source to $uuid_target: Missing source client in Ranksystem database.");
}
if(!isset($db_cache['all_user'][$uuid_target])) {
enter_logfile(3,"Function merge client from $uuid_source to $uuid_target: Missing target client in Ranksystem database.");
}
}
}
unset($db_cache['admin_mrgclient']);
}

if(isset($db_cache['admin_addtime']) && count($db_cache['admin_addtime']) != 0) {
foreach($db_cache['admin_addtime'] as $uuid => $value) {
if(isset($db_cache['all_user'][$uuid])) {
Expand Down Expand Up @@ -84,7 +180,7 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
}
unset($db_cache['admin_addtime']);
}

foreach ($allclients as $client) {
$client_groups_rankup = array();
$name = $mysqlcon->quote((mb_substr(mb_convert_encoding($client['client_nickname'],'UTF-8','auto'),0,30)), ENT_QUOTES);
Expand Down
20 changes: 16 additions & 4 deletions jobs/check_db.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?PHP
function check_db($mysqlcon,$lang,&$cfg,$dbname) {
$cfg['version_latest_available'] = '1.3.22';
$cfg['version_latest_available'] = '1.3.23';
enter_logfile(5,"Check Ranksystem database for updates...");

function check_double_cldbid($mysqlcon,$cfg,$dbname) {
Expand Down Expand Up @@ -489,9 +489,6 @@ function check_writable($cfg,$mysqlcon) {
} else {
enter_logfile(4," [1.3.18] Updated new addons_config values.");
}

if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
}

if(version_compare($cfg['version_current_using'], '1.3.19', '<')) {
Expand Down Expand Up @@ -533,8 +530,23 @@ function check_writable($cfg,$mysqlcon) {
$cfg['stats_news_html'] = 'New Feature <a href="https://ts-ranksystem.com#voting" target="_blank">VOTING!</a> for the Ranksystem';
$cfg['teamspeak_news_bb'] = 'New Feature [URL=https://ts-ranksystem.com#voting]VOTING![/URL] for the Ranksystem';
}
}

if(version_compare($cfg['version_current_using'], '1.3.23', '<')) {
if($mysqlcon->exec("CREATE TABLE IF NOT EXISTS `$dbname`.`admin_mrgclient` (
`uuid_source` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`uuid_target` char(28) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`timestamp` int(10) UNSIGNED NOT NULL default '0',
PRIMARY KEY (`uuid_source`)
);") === false) {
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
enter_logfile(2," [1.3.23] Created new table admin_mrgclient failed. SQL error: ".$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true));
} else {
enter_logfile(4," [1.3.23] Created new table admin_mrgclient successfully.");
}

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

try {
Expand Down
Loading

0 comments on commit 25d375a

Please sign in to comment.