Fix #446 TFS 1.3 premium time

which was implemented here: https://github.com/otland/forgottenserver/pull/2813
and merged 28th october 2020.
This commit is contained in:
Znote
2020-10-31 14:29:29 +01:00
parent a88d3710fb
commit fa5fac75a7
4 changed files with 28 additions and 14 deletions

View File

@@ -1113,14 +1113,22 @@ function user_account_id_from_name($id) {
// Add additional premium days to account id
function user_account_add_premdays($accid, $days) {
global $tfs_10_hasPremDays; // Initialized in engine/init.php
$accid = (int)$accid;
$days = (int)$days;
if (config('ServerEngine') !== 'OTHIRE') {
$data = mysql_select_single("SELECT `premdays` FROM `accounts` WHERE `id`='$accid';");
$tmp = $data['premdays'];
$tmp += $days;
mysql_update("UPDATE `accounts` SET `premdays`='$tmp' WHERE `id`='$accid'");
if ($tfs_10_hasPremDays) {
$data = mysql_select_single("SELECT `premdays` FROM `accounts` WHERE `id`='$accid';");
$tmp = $data['premdays'];
$tmp += $days;
mysql_update("UPDATE `accounts` SET `premdays`='$tmp' WHERE `id`='$accid'");
} else {
mysql_update(" UPDATE `accounts`
SET `premium_ends_at` = GREATEST(CAST(`premium_ends_at` as signed) - UNIX_TIMESTAMP(CURDATE()), 0) + ({$days} * 86400) + UNIX_TIMESTAMP(CURDATE())
WHERE `id`='{$accid}';
");
}
} else {
$data = mysql_select_single("SELECT `premend` FROM `accounts` WHERE `id`='$accid';");
$tmp = $data['premend'];

View File

@@ -50,11 +50,22 @@ if (isset($_SESSION['token'])) {
}
Token::generate();
$tfs_10_hasPremDays = true; // https://github.com/otland/forgottenserver/pull/2813
if (user_logged_in() === true) {
$session_user_id = getSession('user_id');
if ($config['ServerEngine'] !== 'OTHIRE')
$user_data = user_data($session_user_id, 'id', 'name', 'password', 'email', 'premdays');
else
if ($config['ServerEngine'] !== 'OTHIRE') {
if ($config['ServerEngine'] == 'TFS_10') {
$hasPremDays = mysql_select_single("SHOW COLUMNS from `accounts` WHERE `Field` = 'premdays'");
if ($hasPremDays === false) {
$tfs_10_hasPremDays = false;
$user_data = user_data($session_user_id, 'id', 'name', 'password', 'email', 'premium_ends_at');
$user_data['premdays'] = ($user_data['premium_ends_at'] - time() > 0) ? floor(($user_data['premium_ends_at'] - time()) / 86400) : 0;
} else {
$user_data = user_data($session_user_id, 'id', 'name', 'password', 'email', 'premdays');
}
}
} else
$user_data = user_data($session_user_id, 'id', 'password', 'email', 'premend');
$user_znote_data = user_znote_account_data($session_user_id, 'ip', 'created', 'points', 'cooldown', 'flag' ,'active_email');
}