Skip to content

Commit 66c8831

Browse files
committed
release 1.3.11
1 parent b45feec commit 66c8831

29 files changed

Lines changed: 409 additions & 170 deletions

install.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?PHP
22
require_once('other/config.php');
3-
$rsversion = '1.3.10';
3+
$rsversion = '1.3.11';
44
?>
55
<!DOCTYPE html>
66
<html>
@@ -194,7 +194,7 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
194194
$count++;
195195
}
196196

197-
if($mysqlcon->exec("INSERT INTO `$dbname`.`addons_config` (`param`,`value`) VALUES ('assign_groups_active','0'),('assign_groups_groupids',''),('assign_groups_limit','')") === false) {
197+
if($mysqlcon->exec("INSERT INTO `$dbname`.`addons_config` (`param`,`value`) VALUES ('assign_groups_active','0'),('assign_groups_excepted_groupids',''),('assign_groups_groupids',''),('assign_groups_limit','')") === false) {
198198
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
199199
$count++;
200200
}

jobs/calc_userstats.php

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,&$db_cache) {
1414
}
1515

1616
$sqlhis = array_slice($db_cache['all_user'],$job_begin ,10);
17-
18-
$sqlfile = $cfg['logs_path'].'temp_sqlhis.sql';
19-
$sqldump = fopen($sqlfile, 'wa+');
20-
fwrite($sqldump, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($cfg['logs_timezone']))->format("Y-m-d H:i:s.u ").' SQL: '.print_r($sqlhis, true)."\n");
21-
fclose($sqldump);
2217

2318
$cldbids = '';
2419
foreach ($sqlhis as $uuid => $userstats) {
@@ -38,37 +33,37 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,&$db_cache) {
3833
}
3934

4035
$allupdateuuid = '';
41-
36+
4237
foreach ($sqlhis as $uuid => $userstats) {
4338
check_shutdown($cfg); usleep($cfg['teamspeak_query_command_delay']);
44-
try {
45-
$clientinfo = $ts3->clientInfoDb($userstats['cldbid']);
46-
$keybase = array_search($db_cache['job_check']['last_snapshot_id']['timestamp'], array_column($userdata[$userstats['cldbid']], 'id'));
47-
$keyweek = array_search($weekago, array_column($userdata[$userstats['cldbid']], 'id'));
48-
$keymonth = array_search($monthago, array_column($userdata[$userstats['cldbid']], 'id'));
4939

50-
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keyweek]) && $userdata[$userstats['cldbid']][$keyweek]['id'] == $weekago) {
51-
$count_week = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keyweek]['count'];
52-
$idle_week = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keyweek]['idle'];
53-
$active_week = $count_week - $idle_week;
54-
} else {
55-
$count_week = 0;
56-
$idle_week = 0;
57-
$active_week = 0;
58-
}
59-
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keymonth]) && $userdata[$userstats['cldbid']][$keymonth]['id'] == $monthago) {
60-
$count_month = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keymonth]['count'];
61-
$idle_month = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keymonth]['idle'];
62-
$active_month = $count_month - $idle_month;
63-
} else {
64-
$count_month = 0;
65-
$idle_month = 0;
66-
$active_month = 0;
67-
}
40+
$keybase = array_search($db_cache['job_check']['last_snapshot_id']['timestamp'], array_column($userdata[$userstats['cldbid']], 'id'));
41+
$keyweek = array_search($weekago, array_column($userdata[$userstats['cldbid']], 'id'));
42+
$keymonth = array_search($monthago, array_column($userdata[$userstats['cldbid']], 'id'));
6843

44+
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keyweek]) && $userdata[$userstats['cldbid']][$keyweek]['id'] == $weekago) {
45+
$count_week = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keyweek]['count'];
46+
$idle_week = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keyweek]['idle'];
47+
$active_week = $count_week - $idle_week;
48+
} else {
49+
$count_week = 0;
50+
$idle_week = 0;
51+
$active_week = 0;
52+
}
53+
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keymonth]) && $userdata[$userstats['cldbid']][$keymonth]['id'] == $monthago) {
54+
$count_month = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keymonth]['count'];
55+
$idle_month = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keymonth]['idle'];
56+
$active_month = $count_month - $idle_month;
57+
} else {
58+
$count_month = 0;
59+
$idle_month = 0;
60+
$active_month = 0;
61+
}
62+
63+
try {
64+
$clientinfo = $ts3->clientInfoDb($userstats['cldbid']);
6965
$clientdesc = $mysqlcon->quote($clientinfo['client_description'], ENT_QUOTES);
7066
if($clientinfo['client_totalconnections'] > 16777215) $clientinfo['client_totalconnections'] = 16777215;
71-
$allupdateuuid .= "('$uuid',$count_week,$count_month,$idle_week,$idle_month,$active_week,$active_month,{$clientinfo['client_totalconnections']},'{$clientinfo['client_base64HashClientUID']}',{$clientinfo['client_total_bytes_uploaded']},{$clientinfo['client_total_bytes_downloaded']},$clientdesc,$nowtime),";
7267
} catch (Exception $e) {
7368
if($e->getCode() == 512 || $e->getCode() == 1281) {
7469
enter_logfile($cfg,6,"Client (uuid: ".$uuid." cldbid: ".$userstats['cldbid'].") known by Ranksystem is missing in TS database, perhaps its already deleted or cldbid changed. Try to search for client by uuid.");
@@ -78,10 +73,19 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,&$db_cache) {
7873
enter_logfile($cfg,4," Client (uuid: ".$uuid." cldbid: ".$userstats['cldbid'].") known by the Ranksystem changed its cldbid. New cldbid is ".$getcldbid[0].".");
7974
if($cfg['rankup_client_database_id_change_switch'] == 1) {
8075
$db_cache['all_user'][$uuid]['cldbid'] = $getcldbid[0];
81-
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`=0,`idle`=0 WHERE `uuid`='$uuid';\nUPDATE `$dbname`.`stats_user` SET `count_week`=0,`count_month`=0,`idle_week`=0,`idle_month`=0,`achiev_time`=0,`achiev_time_perc`=0,`active_week`=0,`active_month`=0 WHERE `uuid`='$uuid';\nDELETE FROM `$dbname`.`user_snapshot` WHERE `cldbid`='{$userstats['cldbid']}';\n";
76+
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`=0,`idle`=0 WHERE `uuid`='$uuid';\nUPDATE `$dbname`.`stats_user` SET `count_week`=0,`count_month`=0,`idle_week`=0,`idle_month`=0,`active_week`=0,`active_month`=0 WHERE `uuid`='$uuid';\nDELETE FROM `$dbname`.`user_snapshot` WHERE `cldbid`='{$userstats['cldbid']}';\n";
8277
enter_logfile($cfg,4," ".sprintf($lang['changedbid'], $userstats['name'], $uuid, $userstats['cldbid'], $getcldbid[0]));
8378
} else {
8479
$sqlexec .= "UPDATE `$dbname`.`user` SET `cldbid`={$getcldbid[0]} WHERE `uuid`='$uuid';\n";
80+
// select current user_snapshot entries and insert this with the new database-ID
81+
foreach($userdata[$userstats['cldbid']] as $id => $data) {
82+
$allinsert .= "('{$getcldbid[0]}',$id,{$data['count']},{$data['idle']}),";
83+
}
84+
if ($allinsert != '') {
85+
$allinsert = substr($allinsert, 0, -1);
86+
$sqlexec .= "INSERT INTO `$dbname`.`user_snapshot` (`cldbid`,`id`,`count`,`idle`) VALUES $allinsert ON DUPLICATE KEY UPDATE `count_week`=VALUES(`count_week`),`count_month`=VALUES(`count_month`),`idle_week`=VALUES(`idle_week`);\nDELETE FROM `$dbname`.`user_snapshot` WHERE `cldbid`='{$userstats['cldbid']}';\n";
87+
}
88+
unset($allinsert);
8589
enter_logfile($cfg,4," Store new cldbid ".$getcldbid[0]." for client (uuid: ".$uuid." old cldbid: ".$userstats['cldbid'].")");
8690
}
8791
} else {
@@ -91,13 +95,19 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,&$db_cache) {
9195
if($e->getCode() == 2568) {
9296
enter_logfile($cfg,4,$e->getCode() . ': ' . $e->getMessage()."; Error due command clientdbfind (permission: b_virtualserver_client_dbsearch needed).");
9397
} else {
94-
enter_logfile($cfg,6,$e->getCode() . ': ' . $e->getMessage()."; Client (uuid: ".$uuid." cldbid: ".$userstats['cldbid'].") is missing in TS database, it seems to be deleted. Run !clean to correct this.");
98+
enter_logfile($cfg,6,$e->getCode() . ': ' . $e->getMessage()."; Client (uuid: ".$uuid." cldbid: ".$userstats['cldbid'].") is missing in TS database, it seems to be deleted. Run the !clean command to correct this.");
99+
$sqlexec .= "UPDATE `$dbname`.`stats_user` SET `count_week`=0,`count_month`=0,`idle_week`=0,`idle_month`=0,`active_week`=0,`active_month`=0,`removed`=1 WHERE `uuid`='$uuid';\n";
95100
}
96101
}
97102
} else {
98103
enter_logfile($cfg,2,$lang['errorts3'].$e->getCode().': '.$e->getMessage()."; Error due command clientdbinfo for client-database-ID {$userstats['cldbid']} (permission: b_virtualserver_client_dbinfo needed).");
99104
}
105+
106+
$clientdesc = $clientinfo['client_base64HashClientUID'] = $mysqlcon->quote('', ENT_QUOTES);
107+
$clientinfo['client_totalconnections'] = $clientinfo['client_total_bytes_uploaded'] = $clientinfo['client_total_bytes_downloaded'] = 0;
100108
}
109+
110+
$allupdateuuid .= "('$uuid',$count_week,$count_month,$idle_week,$idle_month,$active_week,$active_month,{$clientinfo['client_totalconnections']},'{$clientinfo['client_base64HashClientUID']}',{$clientinfo['client_total_bytes_uploaded']},{$clientinfo['client_total_bytes_downloaded']},$clientdesc,$nowtime),";
101111
}
102112
unset($sqlhis,$userdataweekbegin,$userdataend,$userdatamonthbegin,$clientinfo,$count_week,$idle_week,$active_week,$count_month,$idle_month,$active_month,$clientdesc);
103113

jobs/check_db.php

Lines changed: 10 additions & 5 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.10';
3+
$cfg['version_latest_available'] = '1.3.11';
44
enter_logfile($cfg,5,"Check Ranksystem database for updates...");
55

66
function check_double_cldbid($mysqlcon,$cfg,$dbname) {
@@ -336,16 +336,21 @@ function check_writable($cfg,$mysqlcon) {
336336
}
337337

338338
if(version_compare($cfg['version_current_using'], '1.3.10', '<')) {
339-
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
340-
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
341-
342339
if($mysqlcon->exec("ALTER TABLE `$dbname`.`stats_user` ADD COLUMN `last_calculated` int(10) UNSIGNED NOT NULL default '0';") === false) { } else {
343340
enter_logfile($cfg,4," [1.3.10] Added new stats_user values.");
344341
}
345-
346342
if($mysqlcon->exec("ALTER TABLE `$dbname`.`stats_user` MODIFY COLUMN `total_connections` MEDIUMINT(8) UNSIGNED NOT NULL default '0';") === false) { } else {
347343
enter_logfile($cfg,4," [1.3.10] Adjusted table stats_user successfully.");
348344
}
345+
}
346+
347+
if(version_compare($cfg['version_current_using'], '1.3.11', '<')) {
348+
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
349+
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
350+
351+
if($mysqlcon->exec("INSERT INTO `$dbname`.`addons_config` (`param`,`value`) VALUES ('assign_groups_excepted_groupids','');") === false) { } else {
352+
enter_logfile($cfg,4," [1.3.11] Adjusted table addons_config successfully.");
353+
}
349354

350355
if($mysqlcon->exec("CREATE INDEX `snapshot_id` ON `$dbname`.`user_snapshot` (`id`)") === false) { }
351356
if($mysqlcon->exec("CREATE INDEX `snapshot_cldbid` ON `$dbname`.`user_snapshot` (`cldbid`)") === false) { }

jobs/reset_rs.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function reset_rs($ts3,$mysqlcon,$lang,$cfg,$dbname,&$db_cache) {
8080
} else {
8181
enter_logfile($cfg,4," Reset Server statistics summary (table: stats_server)");
8282
}
83-
if($mysqlcon->exec("UPDATE `$dbname`.`stats_user` SET `rank`='0', `count_week`='0', `count_month`='0', `idle_week`='0', `idle_month`='0', `achiev_count`='0', `achiev_time`='0', `achiev_connects`='0', `achiev_time_perc`='0', `achiev_connects_perc`='0', `total_connections`='0', `active_week`='0', `active_month`='0';") === false) {
83+
if($mysqlcon->exec("UPDATE `$dbname`.`stats_user` SET `count_week`='0', `count_month`='0', `idle_week`='0', `idle_month`='0', `total_connections`='0', `active_week`='0', `active_month`='0';") === false) {
8484
enter_logfile($cfg,2," Executing SQL commands failed: ".print_r($mysqlcon->errorInfo(), true));
8585
$err++;
8686
} else {

languages/core_ar_العربية_arab.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
$lang['api'] = "API";
66
$lang['apikey'] = "API Key";
77
$lang['asc'] = "ascending";
8+
$lang['autooff'] = "autostart is deactivated";
89
$lang['botoff'] = "Bot is stopped.";
910
$lang['boton'] = "Bot is running...";
1011
$lang['brute'] = "Much incorrect logins detected on the webinterface. Blocked login for 300 seconds! Last access from IP %s.";
@@ -151,6 +152,8 @@
151152
$lang['stag0015'] = "%sيمكن العثور على TeamSpeak%s. يرجى النقر هنا للتحقق من نفسك أولا.";
152153
$lang['stag0016'] = "verification needed!";
153154
$lang['stag0017'] = "verificate here..";
155+
$lang['stag0018'] = "A list of excepted servergroups. If a user owns one of this servergroups, he will not be able to use the Add-on.";
156+
$lang['stag0019'] = "You are excepted from this function because you own the servergroup: %s (ID: %s).";
154157
$lang['stix0001'] = "حالة الخادم";
155158
$lang['stix0002'] = "مجموع المستخدمين";
156159
$lang['stix0003'] = "عرض التفاصيل";
@@ -528,8 +531,12 @@
528531
$lang['wishexgrpdesc'] = "Show clients in list_rankup.php, which are in the list 'client exception' and shouldn't be conside for the Ranksystem.";
529532
$lang['wishhicld'] = "Clients in highest Level";
530533
$lang['wishhiclddesc'] = "Show clients in list_rankup.php, which reached the highest level in the Ranksystem.";
531-
$lang['wishmax'] = "show max. Clients";
532-
$lang['wishmaxdesc'] = "Show the max. Clients as line inside the server usage graph on 'stats/' page.";
534+
$lang['wishmax'] = "Server usage graph";
535+
$lang['wishmax0'] = "show all stats";
536+
$lang['wishmax1'] = "hide max. clients";
537+
$lang['wishmax2'] = "hide channel";
538+
$lang['wishmax3'] = "hide max. clients + channel";
539+
$lang['wishmaxdesc'] = "Choose which stats should be displayed on the server usage graph on 'stats/' page.<br><br>By default, all stats are visible. You can hide here some stats, if needed.";
533540
$lang['wishnav'] = "show site-navigation";
534541
$lang['wishnavdesc'] = "Show the site navigation on 'stats/' page.<br><br>If this option is deactivated on the stats page the site navigation will be hidden.<br>You can then take each site i.e. 'stats/list_rankup.php' and embed this as frame in your existing website or bulletin board.";
535542
$lang['wishsort'] = "default sorting order";

languages/core_az_Azərbaycan_az.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
$lang['api'] = "API";
66
$lang['apikey'] = "API Key";
77
$lang['asc'] = "yüksələn";
8+
$lang['autooff'] = "autostart is deactivated";
89
$lang['botoff'] = "Bot dayandırılıb.";
910
$lang['boton'] = "Bot çalışır...";
1011
$lang['brute'] = "Veb interfeysə çox yanlış girişlər aşkar olundu. Giriş 300 saniyə ərzində bloklandı! IP %s ünvanından giriş oldu.";
@@ -151,6 +152,8 @@
151152
$lang['stag0015'] = "TeamSpeak serverində tapıla bilmədiniz. Xahiş edirik, burada özünüzü doğrulamaq üçün %sburaya basın%s.";
152153
$lang['stag0016'] = "Onaysız!";
153154
$lang['stag0017'] = "Onaylama";
155+
$lang['stag0018'] = "A list of excepted servergroups. If a user owns one of this servergroups, he will not be able to use the Add-on.";
156+
$lang['stag0019'] = "You are excepted from this function because you own the servergroup: %s (ID: %s).";
154157
$lang['stix0001'] = "Server statistika";
155158
$lang['stix0002'] = "Ümumi istifadəçi";
156159
$lang['stix0003'] = "Ətraflı məlumat";
@@ -528,8 +531,12 @@
528531
$lang['wishexgrpdesc'] = "Müştərilərə göstər list_rankup.php, siyahıda olanlar 'client exception' və shouldn't Ranksystem üçün nəzərə alınmalıdır.";
529532
$lang['wishhicld'] = "Ən yüksək səviyyəli müştərilər";
530533
$lang['wishhiclddesc'] = "Müştərilərə göstər list_rankup.php, Ranksystem-da ən yüksək səviyyəyə çatdı.";
531-
$lang['wishmax'] = "show max. Clients";
532-
$lang['wishmaxdesc'] = "Show the max. Clients as line inside the server usage graph on 'stats/' page.";
534+
$lang['wishmax'] = "Server usage graph";
535+
$lang['wishmax0'] = "show all stats";
536+
$lang['wishmax1'] = "hide max. clients";
537+
$lang['wishmax2'] = "hide channel";
538+
$lang['wishmax3'] = "hide max. clients + channel";
539+
$lang['wishmaxdesc'] = "Choose which stats should be displayed on the server usage graph on 'stats/' page.<br><br>By default, all stats are visible. You can hide here some stats, if needed.";
533540
$lang['wishnav'] = "sayt-naviqasiya göstər";
534541
$lang['wishnavdesc'] = "Saytın naviqasiyasını göstər 'stats/' səhifəsi.<br><br>Bu seçim stats səhifəsində ləğv olunarsa, sayt naviqasiyası gizlənəcəkdir.<br>Daha sonra hər bir saytı məs. 'stats/list_rankup.php' və mövcud saytda və ya reklam lövhəsində bir çərçivə kimi əlavə edin.";
535542
$lang['wishsort'] = "susmaya görə sıralama qaydası ";

languages/core_cz_Čeština_cz.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
$lang['api'] = "API";
66
$lang['apikey'] = "API Key";
77
$lang['asc'] = "vzestupně";
8+
$lang['autooff'] = "autostart is deactivated";
89
$lang['botoff'] = "Bot je zastaven.";
910
$lang['boton'] = "Bot je spuštěn...";
1011
$lang['brute'] = "Mnoho nepovedených přihlášení do Ranksystému. Přihlášení bylo zablokováno na 300 sekund! Poslední přístup byl z IP adresy %s.";
@@ -151,6 +152,8 @@
151152
$lang['stag0015'] = "Nemohl jsem tě najít na TeamSpeak serveru. %sKlikni zde%s pro ověření své identity.";
152153
$lang['stag0016'] = "Je třeba ověření!";
153154
$lang['stag0017'] = "Ověření zde..";
155+
$lang['stag0018'] = "A list of excepted servergroups. If a user owns one of this servergroups, he will not be able to use the Add-on.";
156+
$lang['stag0019'] = "You are excepted from this function because you own the servergroup: %s (ID: %s).";
154157
$lang['stix0001'] = "Statistiky serveru";
155158
$lang['stix0002'] = "Celkem uživatelů";
156159
$lang['stix0003'] = "Zobrazit podrobnosti";
@@ -528,8 +531,12 @@
528531
$lang['wishexgrpdesc'] = "Zobrazte klienty v seznamu_rankup.php, které jsou v seznamu 'výjimka pro klienty' a neměli by se považovat za systém Ranks.";
529532
$lang['wishhicld'] = "Klienti na nejvyšší úrovni";
530533
$lang['wishhiclddesc'] = "Zobrazit klienty v seznamu_rankup.php, který dosáhl nejvyšší úrovně v systému Ranks.";
531-
$lang['wishmax'] = "show max. Clients";
532-
$lang['wishmaxdesc'] = "Show the max. Clients as line inside the server usage graph on 'stats/' page.";
534+
$lang['wishmax'] = "Server usage graph";
535+
$lang['wishmax0'] = "show all stats";
536+
$lang['wishmax1'] = "hide max. clients";
537+
$lang['wishmax2'] = "hide channel";
538+
$lang['wishmax3'] = "hide max. clients + channel";
539+
$lang['wishmaxdesc'] = "Choose which stats should be displayed on the server usage graph on 'stats/' page.<br><br>By default, all stats are visible. You can hide here some stats, if needed.";
533540
$lang['wishnav'] = "zobrazit navigaci na webu";
534541
$lang['wishnavdesc'] = "Zobrazit stránku navigace na stránce 'statistiky'.<br><br>Pokud je tato možnost deaktivována na stránce statistik, navigace na webu bude skryta. 'stats / list_rankup.php' a vložte jej jako rámeček do stávajícího webu nebo do tabulky.";
535542
$lang['wishsort'] = "default sorting order";

0 commit comments

Comments
 (0)