From 9d7854dda62468e420c26a6e531bacf47351f499 Mon Sep 17 00:00:00 2001 From: czbadaro Date: Thu, 22 Apr 2021 17:49:42 -0300 Subject: [PATCH] Gratis premium account (#156) * skip premdays and lastdays calculation when premdays = 65535 (gratis premium in TFS) * TFS consider 65535 as gratis premium account and PHP_INT_MAX does not assume this value * adds condition of premdays=65535 and standardize the label "gratis premium account" with tibia client * adjust the label "days" when there is only one day of premium account * adjusted premium account status * Some small adjustment * Sorry, typo. Co-authored-by: slawkens --- system/libs/pot/OTS_Account.php | 6 ++++++ system/pages/accountmanagement.php | 5 +++-- system/pages/admin/accounts.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/system/libs/pot/OTS_Account.php b/system/libs/pot/OTS_Account.php index ec994d3d..e380d2fc 100644 --- a/system/libs/pot/OTS_Account.php +++ b/system/libs/pot/OTS_Account.php @@ -42,6 +42,8 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '', 'country' => '','web_flags' => 0, 'lastday' => 0, 'premdays' => 0, 'created' => 0); public static $cache = array(); + + const GRATIS_PREMIUM_DAYS = 65535; /** * Creates new account. * @@ -382,6 +384,10 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable global $config; if(isset($config['lua']['freePremium']) && getBoolean($config['lua']['freePremium'])) return -1; + if($this->data['premdays'] == self::GRATIS_PREMIUM_DAYS){ + return self::GRATIS_PREMIUM_DAYS; + } + $ret = ceil($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday']))); return $ret > 0 ? $ret : 0; } diff --git a/system/pages/accountmanagement.php b/system/pages/accountmanagement.php index eaf402d9..498fe895 100644 --- a/system/pages/accountmanagement.php +++ b/system/pages/accountmanagement.php @@ -60,7 +60,8 @@ $errors = array(); if($action == '') { - $freePremium = isset($config['lua']['freePremium']) && getBoolean($config['lua']['freePremium']); + $freePremium = isset($config['lua']['freePremium']) && getBoolean($config['lua']['freePremium']) || $account_logged->getPremDays() == OTS_Account::GRATIS_PREMIUM_DAYS; + $dayOrDays = $account_logged->getPremDays() == 1 ? 'day' : 'days'; /** * @var OTS_Account $account_logged */ @@ -68,7 +69,7 @@ $errors = array(); if(!$account_logged->isPremium()) $account_status = 'Free Account'; else - $account_status = 'Premium Account, ' . ($freePremium ? 'Unlimited' : $account_logged->getPremDays() . ' days left') . ''; + $account_status = '' . ($freePremium ? 'Gratis Premium Account' : 'Premium Account, ' . $account_logged->getPremDays() . ' '.$dayOrDays.' left') . ''; if(empty($recovery_key)) $account_registered = 'No'; diff --git a/system/pages/admin/accounts.php b/system/pages/admin/accounts.php index 28835768..f9cc2121 100644 --- a/system/pages/admin/accounts.php +++ b/system/pages/admin/accounts.php @@ -182,7 +182,7 @@ if ($id > 0) { } $lastDay = 0; - if($p_days != 0 && $p_days != PHP_INT_MAX ) { + if($p_days != 0 && $p_days != OTS_Account::GRATIS_PREMIUM_DAYS) { $lastDay = time(); } else if ($lastDay != 0) { $lastDay = 0;