update extra modules

This commit is contained in:
Denis Duliçi 2021-02-02 18:35:42 +03:00
parent e146712a6f
commit 885b4c18fc
3 changed files with 60 additions and 3 deletions

View File

@ -24,9 +24,7 @@ class InstallExtraModules
return;
}
$module = module($event->alias);
$extra_modules = $module->get('extra-modules');
$extra_modules = module($event->alias)->get('extra-modules');
if (empty($extra_modules)) {
return;

View File

@ -0,0 +1,58 @@
<?php
namespace App\Listeners\Module;
use App\Events\Install\UpdateFinished as Event;
use App\Utilities\Console;
use App\Utilities\Versions;
use Illuminate\Support\Facades\App;
class UpdateExtraModules
{
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(Event $event)
{
if (App::environment('testing')) {
return;
}
$extra_modules = module($event->alias)->get('extra-modules');
if (empty($extra_modules)) {
return;
}
foreach ($extra_modules as $alias => $level) {
// Don't update if the module is "suggested"
if ($level != 'required') {
continue;
}
$installed_version = module_version($alias);
$latest_version = Versions::latest($alias);
// Skip if no update available
if (version_compare($installed_version, $latest_version, '>=')) {
continue;
}
$company_id = session('company_id');
$command = "update {$alias} {$company_id} {$latest_version}";
if (true !== $result = Console::run($command)) {
$message = !empty($result) ? $result : trans('modules.errors.finish', ['module' => $alias]);
logger($message);
// Stop the propagation of event if the required module failed to update
return false;
}
}
}
}

View File

@ -14,6 +14,7 @@ class Event extends Provider
protected $listen = [
'App\Events\Install\UpdateFinished' => [
'App\Listeners\Update\CreateModuleUpdatedHistory',
'App\Listeners\Module\UpdateExtraModules',
'App\Listeners\Update\V20\Version200',
'App\Listeners\Update\V20\Version203',
'App\Listeners\Update\V20\Version205',