Skip to content

Commit 5961fb9

Browse files
committed
release 1.3.14
1 parent e474b3f commit 5961fb9

295 files changed

Lines changed: 16454 additions & 15328 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

install.php

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

44
require_once('other/_functions.php');
55
require_once('other/config.php');
@@ -198,7 +198,7 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
198198
$count++;
199199
}
200200

201-
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) {
201+
if($mysqlcon->exec("INSERT INTO `$dbname`.`addons_config` (`param`,`value`) VALUES ('assign_groups_active','0'),('assign_groups_name',''),('assign_groups_excepted_groupids',''),('assign_groups_groupids',''),('assign_groups_limit','')") === false) {
202202
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
203203
$count++;
204204
}
@@ -297,7 +297,7 @@ function install($type, $host, $user, $pass, $dbname, $lang, $mysqlcon, &$err_ms
297297
$nextupinfomsg3 = $mysqlcon->quote("You are excepted from the Ranksystem. If you wish to rank contact an admin on the TS3 server.");
298298
$servernews = $mysqlcon->quote("<strong>Message</strong><br>This is an example Message.<br>Change this Message inside the webinterface.");
299299
$rankupmsg = $mysqlcon->quote('Hey, you reached a higher rank, since you already connected for %1$s days, %2$s hours and %3$s minutes to our TS3 server.[B]Keep it up![/B] ;-) ');
300-
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('default_date_format', $dateformat), ('default_language', 'en'), ('default_session_sametime', 'Strict'), ('default_header_origin', ''), ('default_header_xss', '1; mode=block'), ('default_header_contenttyp', '1'), ('default_header_frame', 'SAMEORIGIN'), ('logs_path', '{$logpath}'), ('logs_timezone', 'Europe/Berlin'), ('logs_debug_level', '5'), ('logs_rotation_size', '5'), ('rankup_boost_definition', ''), ('rankup_clean_clients_period', '86400'), ('rankup_clean_clients_switch', '1'), ('rankup_client_database_id_change_switch', '0'), ('rankup_definition', '31536000=>7=>0'), ('rankup_excepted_channel_id_list', ''), ('rankup_excepted_group_id_list', ''), ('rankup_excepted_mode', '0'), ('rankup_excepted_unique_client_id_list', ''), ('rankup_hash_ip_addresses_mode', '2'), ('rankup_ignore_idle_time', '600'), ('rankup_message_to_user', $rankupmsg), ('rankup_message_to_user_switch', '1'), ('rankup_next_message_1', $nextupinfomsg1), ('rankup_next_message_2', $nextupinfomsg2), ('rankup_next_message_3', $nextupinfomsg3), ('rankup_next_message_mode', '1'), ('rankup_time_assess_mode', '0'), ('stats_api_keys', ''), ('stats_column_active_time_switch', '0'), ('stats_column_current_group_since_switch', '1'), ('stats_column_current_server_group_switch', '1'), ('stats_column_client_db_id_switch', '0'), ('stats_column_client_name_switch', '1'), ('stats_column_idle_time_switch', '1'), ('stats_column_last_seen_switch', '1'), ('stats_column_nation_switch', '0'), ('stats_column_next_rankup_switch', '1'), ('stats_column_next_server_group_switch', '1'), ('stats_column_online_time_switch', '1'), ('stats_column_platform_switch', '0'), ('stats_column_rank_switch', '1'), ('stats_column_unique_id_switch', '0'), ('stats_column_default_sort', 'rank'), ('stats_column_default_order', 'asc'), ('stats_column_version_switch', '0'), ('stats_imprint_switch', '0'), ('stats_imprint_address', 'Max Mustermann<br>Musterstraße 13<br>05172 Musterhausen<br>Germany'), ('stats_imprint_address_url', 'https://site.url/imprint/'), ('stats_imprint_email', 'info@example.com'), ('stats_imprint_notes', NULL), ('stats_imprint_phone', '+49 171 1234567'), ('stats_imprint_privacypolicy', 'Add your own privacy policy here. (editable in the webinterface)'), ('stats_imprint_privacypolicy_url', 'https://site.url/privacy/'), ('stats_server_news', $servernews), ('stats_show_clients_in_highest_rank_switch', '1'), ('stats_show_excepted_clients_switch', '1'), ('stats_show_maxclientsline_switch', 0), ('stats_show_site_navigation_switch', '1'), ('stats_time_bronze','50'), ('stats_time_silver','100'), ('stats_time_gold','250'), ('stats_time_legend','500'), ('stats_connects_bronze','50'), ('stats_connects_silver','100'), ('stats_connects_gold','250'), ('stats_connects_legend','500'), ('teamspeak_avatar_download_delay', '0'), ('teamspeak_default_channel_id', '0'), ('teamspeak_host_address', '127.0.0.1'), ('teamspeak_query_command_delay', '0'), ('teamspeak_query_encrypt_switch', '0'), ('teamspeak_query_nickname', 'Ranksystem'), ('teamspeak_query_pass', ''), ('teamspeak_query_port', '10011'), ('teamspeak_query_user', 'serveradmin'), ('teamspeak_verification_channel_id', '0'), ('teamspeak_voice_port', '9987'), ('version_current_using', '{$rsversion}'), ('version_latest_available', '{$rsversion}'), ('version_update_channel', 'stable'), ('webinterface_access_count', '0'), ('webinterface_access_last', '0'), ('webinterface_admin_client_unique_id_list', ''), ('webinterface_advanced_mode', '0'), ('webinterface_fresh_installation', '1'), ('webinterface_pass', '{$pass}'), ('webinterface_user', '{$user}');") === false) {
300+
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('default_date_format', $dateformat), ('default_language', 'en'), ('default_session_sametime', 'Strict'), ('default_header_origin', ''), ('default_header_xss', '1; mode=block'), ('default_header_contenttyp', '1'), ('default_header_frame', 'SAMEORIGIN'), ('logs_path', '{$logpath}'), ('logs_timezone', 'Europe/Berlin'), ('logs_debug_level', '5'), ('logs_rotation_size', '5'), ('rankup_boost_definition', ''), ('rankup_clean_clients_period', '86400'), ('rankup_clean_clients_switch', '1'), ('rankup_client_database_id_change_switch', '0'), ('rankup_definition', '31536000=>7=>0'), ('rankup_excepted_channel_id_list', ''), ('rankup_excepted_group_id_list', ''), ('rankup_excepted_mode', '0'), ('rankup_excepted_unique_client_id_list', ''), ('rankup_hash_ip_addresses_mode', '2'), ('rankup_ignore_idle_time', '600'), ('rankup_message_to_user', $rankupmsg), ('rankup_message_to_user_switch', '1'), ('rankup_next_message_1', $nextupinfomsg1), ('rankup_next_message_2', $nextupinfomsg2), ('rankup_next_message_3', $nextupinfomsg3), ('rankup_next_message_mode', '1'), ('rankup_time_assess_mode', '0'), ('stats_api_keys', ''), ('stats_column_active_time_switch', '0'), ('stats_column_current_group_since_switch', '1'), ('stats_column_current_server_group_switch', '1'), ('stats_column_client_db_id_switch', '0'), ('stats_column_client_name_switch', '1'), ('stats_column_idle_time_switch', '1'), ('stats_column_last_seen_switch', '1'), ('stats_column_nation_switch', '0'), ('stats_column_next_rankup_switch', '1'), ('stats_column_next_server_group_switch', '1'), ('stats_column_online_time_switch', '1'), ('stats_column_platform_switch', '0'), ('stats_column_rank_switch', '1'), ('stats_column_unique_id_switch', '0'), ('stats_column_default_sort', 'lastseen'), ('stats_column_default_sort_2', 'rank'), ('stats_column_default_order', 'desc'), ('stats_column_default_order_2', 'asc'), ('stats_column_version_switch', '0'), ('stats_imprint_switch', '0'), ('stats_imprint_address', 'Max Mustermann<br>Musterstraße 13<br>05172 Musterhausen<br>Germany'), ('stats_imprint_address_url', 'https://site.url/imprint/'), ('stats_imprint_email', 'info@example.com'), ('stats_imprint_notes', NULL), ('stats_imprint_phone', '+49 171 1234567'), ('stats_imprint_privacypolicy', 'Add your own privacy policy here. (editable in the webinterface)'), ('stats_imprint_privacypolicy_url', 'https://site.url/privacy/'), ('stats_server_news', $servernews), ('stats_show_clients_in_highest_rank_switch', '1'), ('stats_show_excepted_clients_switch', '1'), ('stats_show_maxclientsline_switch', 0), ('stats_show_site_navigation_switch', '1'), ('stats_time_bronze','50'), ('stats_time_silver','100'), ('stats_time_gold','250'), ('stats_time_legend','500'), ('stats_connects_bronze','50'), ('stats_connects_silver','100'), ('stats_connects_gold','250'), ('stats_connects_legend','500'), ('teamspeak_avatar_download_delay', '0'), ('teamspeak_default_channel_id', '0'), ('teamspeak_host_address', '127.0.0.1'), ('teamspeak_query_command_delay', '0'), ('teamspeak_query_encrypt_switch', '0'), ('teamspeak_query_nickname', 'Ranksystem'), ('teamspeak_query_pass', ''), ('teamspeak_query_port', '10011'), ('teamspeak_query_user', 'serveradmin'), ('teamspeak_verification_channel_id', '0'), ('teamspeak_voice_port', '9987'), ('version_current_using', '{$rsversion}'), ('version_latest_available', '{$rsversion}'), ('version_update_channel', 'stable'), ('webinterface_access_count', '0'), ('webinterface_access_last', '0'), ('webinterface_admin_client_unique_id_list', ''), ('webinterface_advanced_mode', '0'), ('webinterface_fresh_installation', '1'), ('webinterface_pass', '{$pass}'), ('webinterface_user', '{$user}');") === false) {
301301
$err_msg = $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 2;
302302
} else {
303303
$err_msg = $lang['isntwiusr'].'<br><br>';

jobs/bot.php

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,6 @@ function run_bot(&$cfg) {
9999
global $mysqlcon, $db, $dbname, $dbtype, $lang, $phpcommand, $addons_config, $max_execution_time, $memory_limit, $ts3server;
100100

101101
enter_logfile($cfg,9,"Connect to TS3 Server (Address: \"".$cfg['teamspeak_host_address']."\" Voice-Port: \"".$cfg['teamspeak_voice_port']."\" Query-Port: \"".$cfg['teamspeak_query_port']."\" SSH: \"".$cfg['teamspeak_query_encrypt_switch']."\" Query-Slowmode: \"".number_format(($cfg['teamspeak_query_command_delay']/1000000),1)."\").");
102-
103-
try {
104-
if($mysqlcon->exec("DROP INDEX `snapshot_id` ON `$dbname`.`user_snapshot` (`id`)") === false) { } else {
105-
enter_logfile($cfg,4," [1.3.13] Dropped unneeded Index snapshot_id on table user_snapshot.");
106-
}
107-
if($mysqlcon->exec("DROP INDEX `snapshot_cldbid` ON `$dbname`.`user_snapshot` (`cldbid`)") === false) { } else {
108-
enter_logfile($cfg,4," [1.3.13] Dropped unneeded Index snapshot_cldbid on table user_snapshot.");
109-
}
110-
} catch (Exception $e) { }
111102

112103
try {
113104
if($cfg['temp_ts_no_reconnection'] != 1) {
@@ -253,7 +244,7 @@ function run_bot(&$cfg) {
253244
$serverinfo = $ts3server->serverInfo();
254245
$select_arr = array();
255246
$db_cache = array();
256-
$sqlexec2 .= update_groups($ts3server,$mysqlcon,$lang,$cfg,$dbname,$serverinfo,$db_cache,1);
247+
$sqlexec2 = update_groups($ts3server,$mysqlcon,$lang,$cfg,$dbname,$serverinfo,$db_cache,1);
257248
if($mysqlcon->exec($sqlexec2) === false) {
258249
enter_logfile($cfg,2,"Executing SQL commands failed: ".print_r($mysqlcon->errorInfo(), true));
259250
}
@@ -316,6 +307,8 @@ function run_bot(&$cfg) {
316307

317308
unset($groupslist,$errcnf,$checkgroups,$lastupdate,$updcld,$loglevel,$whoami,$ts3host,$max_execution_time,$memory_limit,$memory_limit);
318309
enter_logfile($cfg,9,"Config check [done]");
310+
} else {
311+
enter_logfile($cfg,9," Try to use the restored TS3 connection");
319312
}
320313

321314
enter_logfile($cfg,9,"Bot starts now his work!");
@@ -445,7 +438,7 @@ function run_bot(&$cfg) {
445438
}
446439
enter_logfile($cfg,6,"SQL executions needs: ".(number_format(round((microtime(true) - $startsql), 5),5)));
447440

448-
reset_rs($ts3server,$mysqlcon,$lang,$cfg,$dbname,$db_cache);
441+
reset_rs($ts3server,$mysqlcon,$lang,$cfg,$dbname,$phpcommand,$db_cache);
449442
db_ex_imp($ts3server,$mysqlcon,$lang,$cfg,$dbname,$db_cache);
450443

451444
unset($sqlexec,$select_arr,$sqldump);
@@ -497,17 +490,20 @@ function run_bot(&$cfg) {
497490
check_shutdown($cfg);
498491
}
499492

500-
if(in_array($e->getCode(), array('HY000','10054','70100','8'))) {
493+
$check_db_arr = array_flip(array('HY000',10054,70100));
494+
if(isset($check_db_arr[$e->getCode()])) {
501495
$cfg['temp_ts_no_reconnection'] = 1;
502496
try {
503497
$mysqlcon = db_connect($db['type'], $db['host'], $db['dbname'], $db['user'], $db['pass'], "no_exit");
504498
enter_logfile($cfg,9,"Connection to database restored");
505499
} catch (Exception $e) {
506500
enter_logfile($cfg,2,$lang['error'].print_r($mysqlcon->errorInfo(), true));
507501
}
502+
} else {
503+
$cfg['temp_ts_no_reconnection'] = 0;
508504
}
509505

510-
$cfg['temp_reconnect_attempts'] = $cfg['temp_reconnect_attempts'] + 1;
506+
$cfg['temp_reconnect_attempts']++;
511507
return $ts3server;
512508
} else {
513509
shutdown($mysqlcon,$cfg,1,"Critical TS3 error on core function!");

jobs/calc_user.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
205205
$db_cache['all_user'][$uid]['nextup'] = 0;
206206
}
207207
$db_cache['all_user'][$uid]['grpid'] = $rank['group'];
208-
break;
208+
if($rank['keep'] != 1) break;
209209
} else {
210210
$db_cache['all_user'][$uid]['nextup'] = $rank['time'] - $activetime;
211211
}

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.13';
3+
$cfg['version_latest_available'] = '1.3.14';
44
enter_logfile($cfg,5,"Check Ranksystem database for updates...");
55

66
function check_double_cldbid($mysqlcon,$cfg,$dbname) {
@@ -364,9 +364,6 @@ function check_writable($cfg,$mysqlcon) {
364364
}
365365

366366
if(version_compare($cfg['version_current_using'], '1.3.13', '<')) {
367-
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
368-
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
369-
370367
if($mysqlcon->exec("UPDATE `$dbname`.`user` SET `idle`=0 WHERE `idle`<0; UPDATE `$dbname`.`user` SET `count`=`idle` WHERE `count`<0; UPDATE `$dbname`.`user` SET `count`=`idle` WHERE `count`<`idle`;") === false) { }
371368
if($mysqlcon->exec("UPDATE `$dbname`.`user_snapshot` SET `idle`=0 WHERE `idle`<0; UPDATE `$dbname`.`user_snapshot` SET `count`=`idle` WHERE `count`<0; UPDATE `$dbname`.`user_snapshot` SET `count`=`idle` WHERE `count`<`idle`;") === false) { }
372369

@@ -393,7 +390,22 @@ function check_writable($cfg,$mysqlcon) {
393390
if($mysqlcon->exec("DROP INDEX `snapshot_cldbid` ON `$dbname`.`user_snapshot` (`cldbid`)") === false) { } else {
394391
enter_logfile($cfg,4," [1.3.13] Dropped unneeded Index snapshot_cldbid on table user_snapshot.");
395392
}
393+
} catch (Exception $e) { }
394+
}
395+
396+
if(version_compare($cfg['version_current_using'], '1.3.14', '<')) {
397+
if($mysqlcon->exec("DELETE FROM `$dbname`.`admin_addtime`;") === false) { }
398+
if($mysqlcon->exec("DELETE FROM `$dbname`.`addon_assign_groups`;") === false) { }
399+
400+
if($mysqlcon->exec("INSERT IGNORE INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_column_default_sort_2', 'rank'),('stats_column_default_order_2', 'asc') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`);") === false) { } else {
401+
enter_logfile($cfg,4," [1.3.14] Added new cfg_params values.");
402+
}
396403

404+
if($mysqlcon->exec("INSERT IGNORE INTO `$dbname`.`addons_config` (`param`,`value`) VALUES ('assign_groups_name','');") === false) { } else {
405+
enter_logfile($cfg,4," [1.3.14] Added new addons_config values.");
406+
}
407+
408+
try {
397409
if($mysqlcon->exec("CREATE INDEX `serverusage_timestamp` ON `$dbname`.`server_usage` (`timestamp`)") === false) { }
398410
if($mysqlcon->exec("CREATE INDEX `user_version` ON `$dbname`.`user` (`version`)") === false) { }
399411
if($mysqlcon->exec("CREATE INDEX `user_cldbid` ON `$dbname`.`user` (`cldbid` ASC,`uuid`,`rank`)") === false) { }

jobs/reset_rs.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?PHP
2-
function reset_rs($ts3,$mysqlcon,$lang,$cfg,$dbname,&$db_cache) {
2+
function reset_rs($ts3,$mysqlcon,$lang,$cfg,$dbname,$phpcommand,&$db_cache) {
33
$starttime = microtime(true);
44

55
if (in_array($db_cache['job_check']['reset_user_time']['timestamp'], ["1","2"], true) || in_array($db_cache['job_check']['reset_user_delete']['timestamp'], ["1","2"], true) || in_array($db_cache['job_check']['reset_group_withdraw']['timestamp'], ["1","2"], true) || in_array($db_cache['job_check']['reset_webspace_cache']['timestamp'], ["1","2"], true) || in_array($db_cache['job_check']['reset_usage_graph']['timestamp'], ["1","2"], true)) {
@@ -280,11 +280,11 @@ function rm_file_reset($folder,$cfg) {
280280
if($db_cache['job_check']['reset_stop_after']['timestamp'] == "1") {
281281
$path = substr(__DIR__, 0, -4);
282282
if (substr(php_uname(), 0, 7) == "Windows") {
283-
exec("start ".$phpcommand." ".$path."worker.php stop");
284-
file_put_contents(substr(__DIR__,0,-4).'logs\autostart_deactivated',"");
283+
pclose(popen("start /B cmd /C ".$phpcommand." ".$path."worker.php stop >NUL 2>NUL", "r"));
284+
file_put_contents($path.'logs\autostart_deactivated',"");
285285
} else {
286286
exec($phpcommand." ".$path."worker.php stop > /dev/null &");
287-
file_put_contents(substr(__DIR__,0,-4).'logs/autostart_deactivated',"");
287+
file_put_contents($path.'logs/autostart_deactivated',"");
288288
}
289289
shutdown($mysqlcon,$cfg,4,"Stop requested after Reset job. Wait for manually start.");
290290
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@
158158
$lang['stag0017'] = "verificate here..";
159159
$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.";
160160
$lang['stag0019'] = "You are excepted from this function because you own the servergroup: %s (ID: %s).";
161+
$lang['stag0020'] = "Title";
162+
$lang['stag0021'] = "Enter a title for this group. The title will be shown also on the statistics page.";
161163
$lang['stix0001'] = "حالة الخادم";
162164
$lang['stix0002'] = "مجموع المستخدمين";
163165
$lang['stix0003'] = "عرض التفاصيل";
@@ -573,6 +575,8 @@
573575
$lang['wishcolhadesc'] = "The TeamSpeak 3 server stores the IP address of each client. This we need for the Ranksystem to bind the website user of the statistics page with the related TeamSpeak user.<br><br>With this function you can active an encrypting / hashing of the IP addresses of TeamSpeak users. When enabled, only the hashed value will be stored in the database, instead of storing it in plain text. This is needed in some cases of your privacy legal; especially required due the EU-GDPR.<br><br><b>fast hashing (default):</b> IP addresses will be hashed. The salt is different for each ranksystem instance, but same for all users on the server. This makes it faster, but also weaker as the 'secure hashing'.<br><br><b>secure hashing:</b> IP addresses will be hashed. Each user will get his own salt, which makes it hard to decrypt the IP (=secure). This parameter is conform with the EU-GDPR. Contra: This variation affects the performance, especially on bigger TeamSpeak servers, it will slow down the statistics page on first site load very much. Also it inceases the needed resources.<br><br><b>disable hashing:</b> If this function is disabled the IP address of a user will be stored in plain text. This is the fastest option that requires the least resources.<br><br><br>In all variants the IP addresses of users will only be stored as long as the user is connected to the TS3 server (less data collection - EU-GDPR).<br><br>The IP addresses of users will only be stored once a user connected to the TS3 server. On changing this function the user needs to reconnect to the TS3 server to be able to get verified with the Ranksystem webpage.";
574576
$lang['wishcolot'] = "online time";
575577
$lang['wishdef'] = "default column sort";
578+
$lang['wishdef2'] = "2nd column sort";
579+
$lang['wishdef2desc'] = "Define the second sorting level for the List Rankup page.";
576580
$lang['wishdefdesc'] = "Define the default sorting column for the List Rankup page.";
577581
$lang['wishexcld'] = "excepted client";
578582
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excluded and therefore not participate in the Ranksystem.";
@@ -589,6 +593,8 @@
589593
$lang['wishnav'] = "show site-navigation";
590594
$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.";
591595
$lang['wishsort'] = "default sorting order";
596+
$lang['wishsort2'] = "2nd sorting order";
597+
$lang['wishsort2desc'] = "This will define the order for the second level sorting.";
592598
$lang['wishsortdesc'] = "Define the default sorting order for the List Rankup page.";
593599
$lang['wistcodesc'] = "Specify a required count of server-connects to meet the achievement.";
594600
$lang['wisttidesc'] = "Specify a required time (in hours) to meet the achievement.";

0 commit comments

Comments
 (0)