From 9d92a11fb7cb6d7a1619d79c12faaa0b1c01f980 Mon Sep 17 00:00:00 2001 From: slawkens Date: Mon, 27 Oct 2025 14:34:53 +0100 Subject: [PATCH] Fix the premium checks, introduced in v1.8.3 --- system/libs/pot/OTS_Account.php | 17 +++++++---------- system/src/Models/Account.php | 22 +++++++++++++--------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/system/libs/pot/OTS_Account.php b/system/libs/pot/OTS_Account.php index a5007e3b..f617bbfc 100644 --- a/system/libs/pot/OTS_Account.php +++ b/system/libs/pot/OTS_Account.php @@ -445,16 +445,11 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable if(isset($this->data['premium_ends_at']) || isset($this->data['premend']) || (isCanary() && isset($this->data['lastday']))) { - $col = (isset($this->premium_ends_at) ? 'premium_ends_at' : (isset($this->data['lastday']) ? 'lastday' : 'premend')); + $col = (isset($this->data['premium_ends_at']) ? 'premium_ends_at' : (isset($this->data['lastday']) ? 'lastday' : 'premend')); $ret = ceil(($this->data[$col] - time()) / (24 * 60 * 60)); return max($ret, 0); } - if (isCanary() && isset($this->data['lastday'])) { - $ret = ceil(($this->data['lastday'] - time()) / 86400); - return max($ret, 0); - } - if($this->data['premdays'] == 0) { return 0; } @@ -479,12 +474,14 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function isPremium() { - if(isset($this->data['premium_ends_at'])) { - return $this->data['premium_ends_at'] > time(); + if(isset($this->data['premium_ends_at']) || isset($this->data['premend']) || + (isCanary() && isset($this->data['lastday']))) { + $col = (isset($this->data['premium_ends_at']) ? 'premium_ends_at' : (isset($this->data['lastday']) ? 'lastday' : 'premend')); + return $this->data[$col] > time(); } - if(isset($this->data['premend'])) { - return $this->data['premend'] > time(); + if($this->data['premdays'] == self::GRATIS_PREMIUM_DAYS){ + return true; } return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); diff --git a/system/src/Models/Account.php b/system/src/Models/Account.php index fdd7d540..5f2de268 100644 --- a/system/src/Models/Account.php +++ b/system/src/Models/Account.php @@ -10,6 +10,8 @@ use Illuminate\Database\Eloquent\Model; */ class Account extends Model { + const GRATIS_PREMIUM_DAYS = 65535; + protected $table = 'accounts'; public $timestamps = false; @@ -34,9 +36,9 @@ class Account extends Model { public function getPremiumDaysAttribute() { if(isset($this->premium_ends_at) || isset($this->premend) || - (isCanary() && isset($this->data['lastday']))) { - $col = (isset($this->premium_ends_at) ? 'premium_ends_at' : (isset($this->data['lastday']) ? 'lastday' : 'premend')); - $ret = ceil(($this->{$col}- time()) / (24 * 60 * 60)); + (isCanary() && isset($this->lastday))) { + $col = (isset($this->premium_ends_at) ? 'premium_ends_at' : (isset($this->lastday) ? 'lastday' : 'premend')); + $ret = ceil(($this->{$col} - time()) / (24 * 60 * 60)); return max($ret, 0); } @@ -44,8 +46,8 @@ class Account extends Model { return 0; } - if($this->premdays == 65535){ - return 65535; + if($this->premdays == self::GRATIS_PREMIUM_DAYS){ + return self::GRATIS_PREMIUM_DAYS; } $ret = ceil($this->premdays - ((int)date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->lastday))) - date("z", $this->lastday))); @@ -54,12 +56,14 @@ class Account extends Model { public function getIsPremiumAttribute() { - if(isset($this->premium_ends_at)) { - return $this->premium_ends_at > time(); + if(isset($this->premium_ends_at) || isset($this->premend) || + (isCanary() && isset($this->lastday))) { + $col = (isset($this->premium_ends_at) ? 'premium_ends_at' : (isset($this->lastday) ? 'lastday' : 'premend')); + return $this->{$col} > time(); } - if(isset($this->premend)) { - return $this->premend > time(); + if($this->premdays == self::GRATIS_PREMIUM_DAYS){ + return true; } return ($this->premdays - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->lastday))) - date("z", $this->lastday)) > 0);