fixed module installation
This commit is contained in:
parent
1d886b8810
commit
811cb36a03
|
|
@ -10,13 +10,21 @@ use Symfony\Component\Console\Input\InputArgument;
|
|||
|
||||
abstract class Module extends Command
|
||||
{
|
||||
public string $alias;
|
||||
|
||||
public int $company_id;
|
||||
|
||||
public string $locale;
|
||||
|
||||
public object|null $model;
|
||||
|
||||
public int|null $old_company_id;
|
||||
|
||||
protected function prepare()
|
||||
{
|
||||
$this->alias = Str::kebab($this->argument('alias'));
|
||||
$this->company_id = $this->argument('company');
|
||||
$this->company_id = (int) $this->argument('company');
|
||||
$this->locale = $this->argument('locale');
|
||||
|
||||
$this->module = module($this->alias);
|
||||
}
|
||||
|
||||
protected function changeRuntime()
|
||||
|
|
@ -33,11 +41,11 @@ abstract class Module extends Command
|
|||
|
||||
protected function revertRuntime()
|
||||
{
|
||||
session()->forget('company_id');
|
||||
|
||||
if (!empty($this->old_company_id)) {
|
||||
company($this->old_company_id)->makeCurrent();
|
||||
if (empty($this->old_company_id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
company($this->old_company_id)->makeCurrent();
|
||||
}
|
||||
|
||||
protected function getModel()
|
||||
|
|
@ -56,7 +64,7 @@ abstract class Module extends Command
|
|||
ModelHistory::create([
|
||||
'company_id' => $this->company_id,
|
||||
'module_id' => $this->model->id,
|
||||
'version' => $this->module->get('version'),
|
||||
'version' => module($this->alias)->get('version'),
|
||||
'description' => trans('modules.' . $action, ['module' => $this->alias]),
|
||||
'created_from' => source_name(),
|
||||
'created_by' => user_id(),
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class UninstallModule extends Command
|
|||
event(new Uninstalled($this->alias, $this->company_id));
|
||||
|
||||
// Delete files
|
||||
$this->module->delete();
|
||||
module($this->alias)->delete();
|
||||
|
||||
$this->revertRuntime();
|
||||
|
||||
|
|
|
|||
|
|
@ -36,26 +36,11 @@ class ModuleActivator implements ActivatorInterface
|
|||
return true;
|
||||
}
|
||||
|
||||
$alias = $module->getAlias();
|
||||
|
||||
if (! isset($this->statuses[$alias])) {
|
||||
if (empty($this->company_id)) {
|
||||
$company_id = $this->getCompanyId();
|
||||
|
||||
if (empty($company_id)) {
|
||||
return false;
|
||||
if (! isset($this->statuses[$module->getAlias()])) {
|
||||
return $active;
|
||||
}
|
||||
|
||||
$this->company_id = $company_id;
|
||||
}
|
||||
|
||||
$model = Model::companyId($this->company_id)->alias($alias)->first();
|
||||
$status = $model ? $model->enabled : $active;
|
||||
|
||||
$this->setActive($module, $status);
|
||||
}
|
||||
|
||||
return $this->statuses[$alias] === $active;
|
||||
return $this->statuses[$module->getAlias()] === $active;
|
||||
}
|
||||
|
||||
public function enable(Module $module): void
|
||||
|
|
@ -72,15 +57,33 @@ class ModuleActivator implements ActivatorInterface
|
|||
{
|
||||
$this->statuses[$module->getAlias()] = $active;
|
||||
|
||||
Model::updateOrCreate([
|
||||
$this->flushCache();
|
||||
|
||||
if (empty($this->company_id)) {
|
||||
$company_id = $this->getCompanyId();
|
||||
|
||||
if (empty($company_id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->company_id = $company_id;
|
||||
}
|
||||
|
||||
$model = Model::companyId($this->company_id)->alias($module->getAlias())->first();
|
||||
|
||||
if (! empty($model)) {
|
||||
$model->enabled = $active;
|
||||
$model->save();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Model::create([
|
||||
'company_id' => $this->company_id,
|
||||
'alias' => $module->getAlias(),
|
||||
], [
|
||||
'enabled' => $active,
|
||||
'created_from' => 'core::activator',
|
||||
]);
|
||||
|
||||
$this->flushCache();
|
||||
}
|
||||
|
||||
public function delete(Module $module): void
|
||||
|
|
|
|||
|
|
@ -30,13 +30,15 @@ class DisableCommand extends Command
|
|||
{
|
||||
$this->prepare();
|
||||
|
||||
if (!$this->getModel()) {
|
||||
if (! $this->getModel()) {
|
||||
$this->info("Module [{$this->alias}] not found.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->model->enabled) {
|
||||
$this->comment("Module [{$this->alias}] is already disabled.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,13 +30,15 @@ class EnableCommand extends Command
|
|||
{
|
||||
$this->prepare();
|
||||
|
||||
if (!$this->getModel()) {
|
||||
if (! $this->getModel()) {
|
||||
$this->info("Module [{$this->alias}] not found.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->model->enabled) {
|
||||
$this->comment("Module [{$this->alias}] is already enabled.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class InstallCommand extends Command
|
|||
|
||||
if ($this->getModel()) {
|
||||
$this->comment("Module [{$this->alias}] is already installed.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue