D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
drmariampharmacy.com
/
app
/
Traits
/
Filename :
ActivationClass.php
back
Copy
<?php namespace App\Traits; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; trait ActivationClass { public function is_local(): bool { return true; } public function getDomain(): string { return str_replace(["http://", "https://", "www."], "", url('/')); } public function getSystemAddonCacheKey(string|null $app = 'default'): string { return str_replace('-', '_', Str::slug('cache_system_addons_for_' . $app . '_' . $this->getDomain())); } public function getAddonsConfig(): array { if (file_exists(base_path('config/system-addons.php'))) { return include(base_path('config/system-addons.php')); } $apps = ['admin_panel', 'vendor_panel', 'user_app', 'vendor_app', 'deliveryman_app', 'theme_lifestyle']; $appConfig = []; foreach ($apps as $app) { $appConfig[$app] = [ "active" => "0", "username" => "", "purchase_key" => "", "software_id" => "", "domain" => "", "software_type" => $app == 'admin_panel' ? "product" : 'addon', ]; } return $appConfig; } public function getCacheTimeoutByDays(int $days = 3): int { return 60 * 60 * 24 * $days; } public function getRequestConfig(string|null $username = null, string|null $purchaseKey = null, string|null $softwareId = null, string|null $softwareType = null): array { $activeStatus = base64_encode(1); if(!$this->is_local()) { try { $response = Http::post(base64_decode('aHR0cHM6Ly9jaGVjay42YW10ZWNoLmNvbS9hcGkvdjIvcmVnaXN0ZXItZG9tYWlu'), [ base64_decode('dXNlcm5hbWU=') => trim($username), base64_decode('cHVyY2hhc2Vfa2V5') => $purchaseKey, base64_decode('c29mdHdhcmVfaWQ=') => base64_decode($softwareId ?? SOFTWARE_ID), base64_decode('ZG9tYWlu') => $this->getDomain(), base64_decode('c29mdHdhcmVfdHlwZQ==') => $softwareType, ])->json(); $activeStatus = $response['active'] ?? base64_encode(1); } catch (\Exception $exception) { $activeStatus = base64_encode(1); } } return [ "active" => base64_decode($activeStatus), "username" => trim($username), "purchase_key" => $purchaseKey, "software_id" => $softwareId ?? SOFTWARE_ID, "domain" => $this->getDomain(), "software_type" => $softwareType, ]; } public function checkActivationCache(string|null $app) { return true; if ($this->is_local() || is_null($app) || env('DEVELOPMENT_ENVIRONMENT', false) || env('APP_MODE') == 'demo') { return true; } $config = $this->getAddonsConfig(); $cacheKey = $this->getSystemAddonCacheKey(app: $app); if (isset($config[$app]) && (!isset($config[$app]['active']) || $config[$app]['active'] == 0)) { Cache::forget($cacheKey); return false; } else { $appConfig = $config[$app]; return Cache::remember($cacheKey, $this->getCacheTimeoutByDays(days: 1), function () use ($app, $appConfig) { $response = $this->getRequestConfig(username: $appConfig['username'], purchaseKey: $appConfig['purchase_key'], softwareId: $appConfig['software_id'], softwareType: $appConfig['software_type'] ?? base64_decode('cHJvZHVjdA==')); $this->updateActivationConfig(app: $app, response: $response); return (bool)$response['active']; }); } } public function updateActivationConfig($app, $response): void { $config = $this->getAddonsConfig(); $config[$app] = $response; $configContents = "<?php return " . var_export($config, true) . ";"; file_put_contents(base_path('config/system-addons.php'), $configContents); } }