version check method update
This commit is contained in:
parent
e523979ad6
commit
df83efb84e
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
namespace App\Utilities;
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
use App\Models\Module\Module;
|
||||||
use App\Traits\SiteApi;
|
use App\Traits\SiteApi;
|
||||||
|
use App\Traits\Jobs;
|
||||||
|
use App\Jobs\Install\DisableModule;
|
||||||
|
use App\Jobs\Install\UninstallModule;
|
||||||
use App\Utilities\Date;
|
use App\Utilities\Date;
|
||||||
use GrahamCampbell\Markdown\Facades\Markdown;
|
use GrahamCampbell\Markdown\Facades\Markdown;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
|
@ -10,7 +14,7 @@ use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class Versions
|
class Versions
|
||||||
{
|
{
|
||||||
use SiteApi;
|
use SiteApi, Jobs;
|
||||||
|
|
||||||
public static function changelog()
|
public static function changelog()
|
||||||
{
|
{
|
||||||
|
|
@ -136,6 +140,8 @@ class Versions
|
||||||
$url = 'apps/' . $alias . '/version/' . $version . '/' . $info['akaunting'];
|
$url = 'apps/' . $alias . '/version/' . $version . '/' . $info['akaunting'];
|
||||||
|
|
||||||
$versions[$alias] = static::getLatestVersion($url, $version);
|
$versions[$alias] = static::getLatestVersion($url, $version);
|
||||||
|
|
||||||
|
static::enforceSubscriptionStatus($alias, $versions[$alias]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $versions;
|
return $versions;
|
||||||
|
|
@ -161,6 +167,10 @@ class Versions
|
||||||
|
|
||||||
$versions[$alias] = static::getLatestVersion($url, $version);
|
$versions[$alias] = static::getLatestVersion($url, $version);
|
||||||
|
|
||||||
|
if ($alias != 'core') {
|
||||||
|
static::enforceSubscriptionStatus($alias, $versions[$alias]);
|
||||||
|
}
|
||||||
|
|
||||||
Cache::put('versions', $versions, Date::now()->addHours(6));
|
Cache::put('versions', $versions, Date::now()->addHours(6));
|
||||||
|
|
||||||
return $versions[$alias];
|
return $versions[$alias];
|
||||||
|
|
@ -174,6 +184,7 @@ class Versions
|
||||||
$version->latest = $latest;
|
$version->latest = $latest;
|
||||||
$version->errors = false;
|
$version->errors = false;
|
||||||
$version->message = '';
|
$version->message = '';
|
||||||
|
$version->subscription = null;
|
||||||
|
|
||||||
if (! $body = static::getResponseBody('GET', $url, ['timeout' => 10])) {
|
if (! $body = static::getResponseBody('GET', $url, ['timeout' => 10])) {
|
||||||
return $version;
|
return $version;
|
||||||
|
|
@ -187,10 +198,60 @@ class Versions
|
||||||
$version->latest = $body->data->latest;
|
$version->latest = $body->data->latest;
|
||||||
$version->errors = $body->errors;
|
$version->errors = $body->errors;
|
||||||
$version->message = $body->message;
|
$version->message = $body->message;
|
||||||
|
$version->subscription = $body->data?->subscription ?? null;
|
||||||
|
|
||||||
return $version;
|
return $version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function enforceSubscriptionStatus($alias, $version): void
|
||||||
|
{
|
||||||
|
if (! $version->subscription) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($version->subscription->expired_at > Date::now()->startOfDay()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$status = 'active';
|
||||||
|
|
||||||
|
switch ($version->subscription->status) {
|
||||||
|
case 'expired':
|
||||||
|
case 'canceled':
|
||||||
|
$status = 'disabled';
|
||||||
|
break;
|
||||||
|
case 'chargeback':
|
||||||
|
case 'not_paid':
|
||||||
|
case 'none':
|
||||||
|
case 'refund':
|
||||||
|
$status = 'uninstalled';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($status == 'active') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$module_companies = Module::allCompanies()->alias($alias)->get();
|
||||||
|
|
||||||
|
foreach ($module_companies as $module) {
|
||||||
|
switch ($status) {
|
||||||
|
case 'disabled':
|
||||||
|
dispatch_sync(new DisableModule($alias, $module->company_id));
|
||||||
|
break;
|
||||||
|
case 'uninstalled':
|
||||||
|
dispatch_sync(new UninstallModule($alias, $module->company_id));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function getUpdates()
|
public static function getUpdates()
|
||||||
{
|
{
|
||||||
return Cache::remember('updates', Date::now()->addHours(6), function () {
|
return Cache::remember('updates', Date::now()->addHours(6), function () {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue