diff --git a/app/Console/Commands/BillReminder.php b/app/Console/Commands/BillReminder.php index c0d14b9ec..b3a3df581 100644 --- a/app/Console/Commands/BillReminder.php +++ b/app/Console/Commands/BillReminder.php @@ -24,14 +24,6 @@ class BillReminder extends Command * @var string */ protected $description = 'Send reminders for bills'; - - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } /** * Execute the console command. diff --git a/app/Console/Commands/FinishUpdate.php b/app/Console/Commands/FinishUpdate.php index 86d37f444..8d3b32f06 100644 --- a/app/Console/Commands/FinishUpdate.php +++ b/app/Console/Commands/FinishUpdate.php @@ -22,14 +22,6 @@ class FinishUpdate extends Command */ protected $description = 'Finish the update process through CLI'; - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Commands/InvoiceReminder.php b/app/Console/Commands/InvoiceReminder.php index b03216960..7c76f1fe0 100644 --- a/app/Console/Commands/InvoiceReminder.php +++ b/app/Console/Commands/InvoiceReminder.php @@ -24,14 +24,6 @@ class InvoiceReminder extends Command * @var string */ protected $description = 'Send reminders for invoices'; - - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } /** * Execute the console command. diff --git a/app/Console/Commands/RecurringCheck.php b/app/Console/Commands/RecurringCheck.php index bb945e904..68d0d646a 100644 --- a/app/Console/Commands/RecurringCheck.php +++ b/app/Console/Commands/RecurringCheck.php @@ -38,14 +38,6 @@ class RecurringCheck extends Command */ protected $today; - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -118,7 +110,7 @@ class RecurringCheck extends Command if ($this->today->eq(Date::parse($model->paid_at->format('Y-m-d')))) { break; } - + $model->cloneable_relations = []; // Create new record @@ -162,7 +154,7 @@ class RecurringCheck extends Command $clone->$date_field = $this->today->format('Y-m-d'); $clone->due_at = $this->today->copy()->addDays($diff_days)->format('Y-m-d'); $clone->save(); - + return $clone; } } diff --git a/app/Console/Commands/SampleData.php b/app/Console/Commands/SampleData.php index e5017865a..43cf3d266 100755 --- a/app/Console/Commands/SampleData.php +++ b/app/Console/Commands/SampleData.php @@ -12,7 +12,7 @@ class SampleData extends Command * * @var string */ - protected $signature = 'sample-data:seed {--count=100 : total records for each item}'; + protected $signature = 'sample-data:seed {--count=100 : total records for each item}'; /** * The console command description. @@ -21,16 +21,6 @@ class SampleData extends Command */ protected $description = 'Seed for sample data'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Console/Commands/Update.php b/app/Console/Commands/Update.php index 5747777d9..dbd02ff15 100644 --- a/app/Console/Commands/Update.php +++ b/app/Console/Commands/Update.php @@ -32,14 +32,6 @@ class Update extends Command */ protected $description = 'Allows to update Akaunting and modules directly through CLI'; - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * @@ -51,7 +43,11 @@ class Update extends Command $this->alias = $this->argument('alias'); - $this->new = $this->getNewVersion(); + if (false === $this->new = $this->getNewVersion()) { + $this->error('Not able to get the latest version of ' . $this->alias . '!'); + + return self::CMD_ERROR; + } $this->old = $this->getOldVersion(); @@ -79,15 +75,7 @@ class Update extends Command public function getNewVersion() { - $new = $this->argument('new'); - - if ($new == 'latest') { - $modules = ($this->alias == 'core') ? [] : [$this->alias]; - - $new = Versions::latest($modules)[$this->alias]->data->latest; - } - - return $new; + return ($this->argument('new') == 'latest') ? Versions::latest($this->alias) : $this->argument('new'); } public function getOldVersion() diff --git a/app/Console/Commands/UpdateAll.php b/app/Console/Commands/UpdateAll.php new file mode 100644 index 000000000..c61167ad0 --- /dev/null +++ b/app/Console/Commands/UpdateAll.php @@ -0,0 +1,74 @@ +info('Starting update...'); + + // Update core + if ($this->runUpdate('core') !== true) { + $this->error('Not able to update core!'); + + return; + } + + // Update modules + $modules = module()->all(); + + foreach ($modules as $module) { + $alias = $module->get('alias'); + + if ($this->runUpdate($alias) !== true) { + $this->error('Not able to update ' . $alias . '!'); + } + } + + $this->info('Update finished.'); + } + + protected function runUpdate($alias) + { + $this->info('Updating ' . $alias . '...'); + + $company_id = $this->argument('company'); + + $command = "php artisan update {$alias} {$company_id}"; + + if (true !== $result = Console::run($command, true)) { + $message = !empty($result) ? $result : trans('modules.errors.finish', ['module' => $alias]); + + $this->error($message); + + return false; + } + + return true; + } +} diff --git a/app/Console/Commands/UserSeed.php b/app/Console/Commands/UserSeed.php index f3af20276..d7e63618f 100644 --- a/app/Console/Commands/UserSeed.php +++ b/app/Console/Commands/UserSeed.php @@ -20,16 +20,6 @@ class UserSeed extends Command */ protected $description = 'Seed for specific user'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - /** * Execute the console command. * diff --git a/app/Utilities/Updater.php b/app/Utilities/Updater.php index 106f94232..973741677 100644 --- a/app/Utilities/Updater.php +++ b/app/Utilities/Updater.php @@ -158,7 +158,7 @@ class Updater $modules = module()->all(); - $versions = Versions::latest($modules); + $versions = Versions::all($modules); foreach ($versions as $alias => $latest_version) { $installed_version = ($alias == 'core') ? version('short') : module($alias)->get('version'); diff --git a/app/Utilities/Versions.php b/app/Utilities/Versions.php index e6c6c3aa6..de798909e 100644 --- a/app/Utilities/Versions.php +++ b/app/Utilities/Versions.php @@ -2,9 +2,11 @@ namespace App\Utilities; +use Akaunting\Module\Module; use App\Traits\SiteApi; use Cache; use Date; +use Illuminate\Support\Arr; use Parsedown; class Versions @@ -52,7 +54,18 @@ class Versions return $output; } - public static function latest($modules = []) + public static function latest($alias) + { + $versions = static::all($alias); + + if (empty($versions[$alias]) || empty($versions[$alias]->data)) { + return false; + } + + return $versions[$alias]->data->latest; + } + + public static function all($modules = null) { // Get data from cache $versions = Cache::get('versions'); @@ -70,8 +83,18 @@ class Versions $versions['core'] = static::getLatestVersion($url, $info['akaunting']); + $modules = Arr::wrap($modules); + // Then modules foreach ($modules as $module) { + if (is_string($module)) { + $module = module($module); + } + + if (!$module instanceof Module) { + continue; + } + $alias = $module->get('alias'); $version = $module->get('version'); @@ -85,7 +108,7 @@ class Versions return $versions; } - public static function getLatestVersion($url, $latest) + protected static function getLatestVersion($url, $latest) { if (!$data = static::getResponseData('GET', $url, ['timeout' => 10])) { return $latest;