From 885b4c18fc13d8f2ee8a80db70e0a35af75072a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Duli=C3=A7i?= Date: Tue, 2 Feb 2021 18:35:42 +0300 Subject: [PATCH] update extra modules --- app/Listeners/Module/InstallExtraModules.php | 4 +- app/Listeners/Module/UpdateExtraModules.php | 58 ++++++++++++++++++++ app/Providers/Event.php | 1 + 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 app/Listeners/Module/UpdateExtraModules.php diff --git a/app/Listeners/Module/InstallExtraModules.php b/app/Listeners/Module/InstallExtraModules.php index b56baf9ca..a17e538e1 100644 --- a/app/Listeners/Module/InstallExtraModules.php +++ b/app/Listeners/Module/InstallExtraModules.php @@ -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; diff --git a/app/Listeners/Module/UpdateExtraModules.php b/app/Listeners/Module/UpdateExtraModules.php new file mode 100644 index 000000000..886c654b8 --- /dev/null +++ b/app/Listeners/Module/UpdateExtraModules.php @@ -0,0 +1,58 @@ +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; + } + } + } +} diff --git a/app/Providers/Event.php b/app/Providers/Event.php index 61979b159..260ee43d1 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -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',