From a92689d3e3a0a0a61e86bbd57a55ff18c5a1e463 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Mon, 3 Feb 2020 18:57:31 +0300 Subject: [PATCH] fixed install/update locale --- app/Console/Commands/CompanySeed.php | 2 +- app/Console/Commands/FinishUpdate.php | 10 ++++++++-- app/Console/Commands/Install.php | 3 ++- app/Console/Commands/Update.php | 8 ++++---- app/Console/Commands/UserSeed.php | 2 +- app/Http/Controllers/Install/Language.php | 6 +++--- app/Listeners/Update/V20/Version200.php | 16 ++++++++++++---- app/Traits/Modules.php | 5 +++-- app/Utilities/Overrider.php | 4 +--- app/Utilities/Updater.php | 17 ++++++++++++----- database/seeds/Modules.php | 13 +++++++++++-- .../module/Commands/InstallCommand.php | 7 +++++-- 12 files changed, 63 insertions(+), 30 deletions(-) diff --git a/app/Console/Commands/CompanySeed.php b/app/Console/Commands/CompanySeed.php index 0ea097263..f4e140a7f 100644 --- a/app/Console/Commands/CompanySeed.php +++ b/app/Console/Commands/CompanySeed.php @@ -19,7 +19,7 @@ class CompanySeed extends Command * @var string */ protected $description = 'Seed for specific company'; - + /** * Create a new command instance. * diff --git a/app/Console/Commands/FinishUpdate.php b/app/Console/Commands/FinishUpdate.php index 1f330c226..87b0f432b 100644 --- a/app/Console/Commands/FinishUpdate.php +++ b/app/Console/Commands/FinishUpdate.php @@ -3,6 +3,7 @@ namespace App\Console\Commands; use App\Events\Install\UpdateFinished; +use App\Models\Common\Company; use Illuminate\Console\Command; class FinishUpdate extends Command @@ -12,7 +13,7 @@ class FinishUpdate extends Command * * @var string */ - protected $signature = 'update:finish {alias} {company_id} {new} {old}'; + protected $signature = 'update:finish {alias} {company} {new} {old}'; /** * The console command description. @@ -43,7 +44,7 @@ class FinishUpdate extends Command $this->call('cache:clear'); $alias = $this->argument('alias'); - $company_id = $this->argument('company_id'); + $company_id = $this->argument('company'); $new = $this->argument('new'); $old = $this->argument('old'); @@ -53,6 +54,11 @@ class FinishUpdate extends Command throw new \Exception(trans('modules.errors.finish', ['module' => $alias])); } + // Set locale for modules + if ($alias != 'core') { + app()->setLocale(Company::find($company_id)->locale); + } + session(['company_id' => $company_id]); setting()->setExtraColumns(['company_id' => $company_id]); diff --git a/app/Console/Commands/Install.php b/app/Console/Commands/Install.php index b41745f2d..8e759f50b 100644 --- a/app/Console/Commands/Install.php +++ b/app/Console/Commands/Install.php @@ -27,7 +27,7 @@ class Install extends Command * * @var string */ - protected $signature = 'install + protected $signature = 'install {--db-host=localhost : Database host} {--db-port=3306 : Port of the database host} {--db-name= : Name of the database} @@ -64,6 +64,7 @@ class Install extends Command $this->line('Setting locale ' . $this->locale); Session::put(self::OPT_LOCALE, $this->locale); + app()->setLocale($this->locale); $this->prompt(); diff --git a/app/Console/Commands/Update.php b/app/Console/Commands/Update.php index 2ac902e80..120c32810 100644 --- a/app/Console/Commands/Update.php +++ b/app/Console/Commands/Update.php @@ -23,7 +23,7 @@ class Update extends Command * * @var string */ - protected $signature = 'update {alias} {company_id} {new=latest}'; + protected $signature = 'update {alias} {company} {new=latest}'; /** * The console command description. @@ -31,7 +31,7 @@ class Update extends Command * @var string */ protected $description = 'Allows to update Akaunting and modules directly through CLI'; - + /** * Create a new command instance. */ @@ -55,8 +55,8 @@ class Update extends Command $this->old = $this->getOldVersion(); - session(['company_id' => $this->argument('company_id')]); - setting()->setExtraColumns(['company_id' => $this->argument('company_id')]); + session(['company_id' => $this->argument('company')]); + setting()->setExtraColumns(['company_id' => $this->argument('company')]); if (!$path = $this->download()) { return self::CMD_ERROR; diff --git a/app/Console/Commands/UserSeed.php b/app/Console/Commands/UserSeed.php index f8df0a63d..172e1930b 100644 --- a/app/Console/Commands/UserSeed.php +++ b/app/Console/Commands/UserSeed.php @@ -19,7 +19,7 @@ class UserSeed extends Command * @var string */ protected $description = 'Seed for specific user'; - + /** * Create a new command instance. * diff --git a/app/Http/Controllers/Install/Language.php b/app/Http/Controllers/Install/Language.php index 5c91d2b23..067f04ee5 100644 --- a/app/Http/Controllers/Install/Language.php +++ b/app/Http/Controllers/Install/Language.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Install; -use Session; use Illuminate\Http\Request; use Illuminate\Routing\Controller; @@ -28,7 +27,8 @@ class Language extends Controller public function store(Request $request) { // Set locale - Session::put('locale', $request['lang']); + session(['locale' => $request->get('lang')]); + app()->setLocale($request->get('lang')); $response['redirect'] = route('install.database'); @@ -43,7 +43,7 @@ class Language extends Controller public function getLanguages() { $response = [ - 'languages' => $languages = language()->allowed(), + 'languages' => language()->allowed(), ]; return response()->json($response); diff --git a/app/Listeners/Update/V20/Version200.php b/app/Listeners/Update/V20/Version200.php index ca540b481..cb85740b4 100644 --- a/app/Listeners/Update/V20/Version200.php +++ b/app/Listeners/Update/V20/Version200.php @@ -81,6 +81,8 @@ class Version200 extends Listener $companies = Company::cursor(); foreach ($companies as $company) { + session(['company_id' => $company->id]); + $this->updateSettings($company); $this->createEmailTemplates($company); @@ -97,12 +99,16 @@ class Version200 extends Listener public function updateSettings($company) { - // Clear current settings + // Set the active company settings + setting()->setExtraColumns(['company_id' => $company->id]); setting()->forgetAll(); + setting()->load(true); - session(['company_id' => $company->id]); - - Overrider::load('settings'); + // Override settings + config(['app.url' => url('/')]); + config(['app.timezone' => setting('general.timezone', 'UTC')]); + date_default_timezone_set(config('app.timezone')); + app()->setLocale(setting('general.default_locale')); $updated_settings = [ 'company.name' => 'general.company_name', @@ -325,6 +331,8 @@ class Version200 extends Listener $companies = $user->companies; foreach ($companies as $company) { + app()->setLocale($company->locale); + Artisan::call('user:seed', [ 'user' => $user->id, 'company' => $company->id, diff --git a/app/Traits/Modules.php b/app/Traits/Modules.php index 2036bab5c..e05c95d96 100644 --- a/app/Traits/Modules.php +++ b/app/Traits/Modules.php @@ -407,12 +407,13 @@ trait Modules $data = [ 'path' => $path, 'name' => Str::studly($module->alias), - 'alias' => $module->alias + 'alias' => $module->alias, ]; $company_id = session('company_id'); + $locale = app()->getLocale(); - Console::run("php artisan module:install {$module->alias} {$company_id}"); + Console::run("php artisan module:install {$module->alias} {$company_id} {$locale}"); return [ 'success' => true, diff --git a/app/Utilities/Overrider.php b/app/Utilities/Overrider.php index b1801390c..e20bce3ae 100644 --- a/app/Utilities/Overrider.php +++ b/app/Utilities/Overrider.php @@ -51,9 +51,7 @@ class Overrider // Locale if (session('locale') == '') { - //App::setLocale(setting('default.locale')); - //Session::put('locale', setting('default.locale')); - config(['app.locale' => setting('default.locale')]); + app()->setLocale(setting('default.locale')); } // Set app url dynamically diff --git a/app/Utilities/Updater.php b/app/Utilities/Updater.php index 6da6ee3d3..5da47b197 100644 --- a/app/Utilities/Updater.php +++ b/app/Utilities/Updater.php @@ -5,6 +5,7 @@ namespace App\Utilities; use App\Events\Install\UpdateCopied; use App\Events\Install\UpdateDownloaded; use App\Events\Install\UpdateUnzipped; +use App\Models\Module\Module; use App\Utilities\Console; use App\Traits\SiteApi; use Artisan; @@ -125,14 +126,20 @@ class Updater public static function finish($alias, $new, $old) { - $company_id = session('company_id'); + if ($alias == 'core') { + $companies = [session('company_id')]; + } else { + $companies = Module::alias($alias)->where('company_id', '<>', '0')->pluck('company_id')->toArray(); + } - $command = "php artisan update:finish {$alias} {$company_id} {$new} {$old}"; + foreach ($companies as $company) { + $command = "php artisan update:finish {$alias} {$company} {$new} {$old}"; - if (true !== $result = Console::run($command)) { - $message = !empty($result) ? $result : trans('modules.errors.finish', ['module' => $alias]); + if (true !== $result = Console::run($command)) { + $message = !empty($result) ? $result : trans('modules.errors.finish', ['module' => $alias]); - throw new \Exception($message); + throw new \Exception($message); + } } } diff --git a/database/seeds/Modules.php b/database/seeds/Modules.php index 0b5257e34..66b7578d3 100644 --- a/database/seeds/Modules.php +++ b/database/seeds/Modules.php @@ -26,7 +26,16 @@ class Modules extends Seeder { $company_id = $this->command->argument('company'); - Artisan::call('module:install', ['alias' => 'offline-payments', 'company_id' => $company_id]); - Artisan::call('module:install', ['alias' => 'paypal-standard', 'company_id' => $company_id]); + Artisan::call('module:install', [ + 'alias' => 'offline-payments', + 'company' => $company_id, + 'locale' => session('locale', app()->getLocale()), + ]); + + Artisan::call('module:install', [ + 'alias' => 'paypal-standard', + 'company' => $company_id, + 'locale' => session('locale', app()->getLocale()), + ]); } } diff --git a/overrides/akaunting/module/Commands/InstallCommand.php b/overrides/akaunting/module/Commands/InstallCommand.php index d182cf28f..0257108db 100644 --- a/overrides/akaunting/module/Commands/InstallCommand.php +++ b/overrides/akaunting/module/Commands/InstallCommand.php @@ -19,7 +19,7 @@ class InstallCommand extends Command * * @var string */ - protected $signature = 'module:install {alias} {company_id}'; + protected $signature = 'module:install {alias} {company} {locale=en-GB}'; /** * The console command description. @@ -36,12 +36,15 @@ class InstallCommand extends Command public function handle() { $alias = Str::kebab($this->argument('alias')); - $company_id = $this->argument('company_id'); + $company_id = $this->argument('company'); + $locale = $this->argument('locale'); $old_company_id = session('company_id'); session(['company_id' => $company_id]); + app()->setLocale($locale); + $module = module($alias); $model = Module::create([