/** * @param \Notadd\Foundation\Extension\ExtensionManager $manager * @param \Notadd\Foundation\Setting\Contracts\SettingsRepository $settings * * @return true */ public function fire(ExtensionManager $manager, SettingsRepository $settings) { $name = $this->input->getArgument('name'); $extensions = $manager->getExtensionPaths(); if (!$extensions->offsetExists($name)) { $this->error("Extension {$name} do not exist!"); return false; } if (!$settings->get('extension.' . $name . '.installed')) { $this->error("Extension {$name} does not installed!"); return false; } $path = $extensions->get($name); if (Str::contains($path, $manager->getVendorPath())) { $this->error("Please remove extension {$name} from composer.json!"); return false; } $extensionFile = new JsonFile($path . DIRECTORY_SEPARATOR . 'composer.json'); $autoload = collect(json_decode($settings->get('extension.' . $name . '.autoload'), true)); if (!$autoload->isEmpty()) { $autoload->has('classmap') && collect($autoload->get('classmap'))->each(function ($value) use($path) { $path = str_replace($this->container->basePath() . '/', '', realpath($path . DIRECTORY_SEPARATOR . $value)) . '/'; if ($key = array_search($path, $this->backup['autoload']['classmap'], true)) { unset($this->backup['autoload']['classmap'][$key]); } }); $autoload->has('files') && collect($autoload->get('files'))->each(function ($value) use($path) { $path = str_replace($this->container->basePath() . '/', '', realpath($path . DIRECTORY_SEPARATOR . $value)); if ($key = array_search($path, $this->backup['autoload']['files'], true)) { unset($this->backup['autoload']['files'][$key]); } }); $autoload->has('psr-0') && collect($autoload->get('psr-0'))->each(function ($value, $key) use($path) { $path = str_replace($this->container->basePath() . '/', '', realpath($path . DIRECTORY_SEPARATOR . $value)) . '/'; unset($this->backup['autoload']['psr-0'][$key]); }); $autoload->has('psr-4') && collect($autoload->get('psr-4'))->each(function ($value, $key) use($path) { $path = str_replace($this->container->basePath() . '/', '', realpath($path . DIRECTORY_SEPARATOR . $value)) . '/'; unset($this->backup['autoload']['psr-4'][$key]); }); $this->json->addProperty('autoload', $this->backup['autoload']); $settings->set('extension.' . $name . '.autoload', json_encode([])); } $require = collect(json_decode($settings->get('extension.' . $name . '.require'), true)); if (!$require->isEmpty()) { $require->each(function ($version, $name) { unset($this->backup['require'][$name]); }); $this->json->addProperty('require', $this->backup['require']); $settings->set('extension.' . $name . '.require', json_encode([])); } $settings->set('extension.' . $name . '.installed', false); $this->updateComposer(true); $this->info("Extension {$name} is uninstalled!"); return true; }
/** * Optimization constructor. * * @param \Illuminate\Container\Container $container * @param \Notadd\Foundation\Setting\Contracts\SettingsRepository $settings * @param \Illuminate\View\Factory $view */ public function __construct(Container $container, SettingsRepository $settings, Factory $view) { $this->container = $container; $this->view = $view; $this->code = new Collection(); $this->meta = new Meta(); $this->settings = $settings; $this->code->put('{sitename}', $this->settings->get('seo.title', 'Notadd CMS')); $this->code->put('{keywords}', $this->settings->get('seo.keyword', 'Notadd CMS')); $this->code->put('{description}', $this->settings->get('seo.description', 'Notadd CMS')); }
/** * Command Handler. * * @param \Notadd\Foundation\Extension\ExtensionManager $manager * @param \Notadd\Foundation\Setting\Contracts\SettingsRepository $settings * * @return true * @throws \Exception */ public function fire(ExtensionManager $manager, SettingsRepository $settings) { $name = $this->input->getArgument('name'); $extensions = $manager->getExtensionPaths(); if (!$extensions->offsetExists($name)) { $this->error("Extension {$name} do not exist!"); return false; } if (!$settings->get('extension.' . $name . '.installed')) { $this->error("Extension {$name} does not installed!"); return false; } $path = $extensions->get($name); if (Str::contains($path, $manager->getVendorPath())) { $this->error("Please remove extension {$name} from composer.json!"); return false; } $this->composer->dumpAutoloads(); $settings->set('extension.' . $name . '.installed', false); $this->info("Extension {$name} is uninstalled!"); return true; }
/** * @param \Notadd\Foundation\Extension\ExtensionManager $manager * @param \Notadd\Foundation\Setting\Contracts\SettingsRepository $settings * * @return bool */ public function fire(ExtensionManager $manager, SettingsRepository $settings) { $this->name = $this->input->getArgument('name'); $extensions = $manager->getExtensionPaths(); if (!$extensions->offsetExists($this->name)) { $this->error("Extension {$this->name} do not exist!"); return false; } if ($settings->get("extension.{$this->name}.installed")) { $this->error("Extension {$this->name} is installed!"); return false; } $this->path = $extensions->get($this->name); if (Str::contains($this->path, $manager->getVendorPath())) { $this->error("Extension {$this->name} is installed!"); return false; } if ($this->files->exists($bootstrap = $this->path . DIRECTORY_SEPARATOR . 'bootstrap.php')) { $class = $this->files->getRequire($bootstrap); } else { $this->error('Extension files do not exists!'); return false; } $bootstrap = $this->container->make($class); $this->info = $bootstrap->getExtensionInfo(); $extensionFile = new JsonFile($this->path . DIRECTORY_SEPARATOR . 'composer.json'); $this->extension = collect($extensionFile->read()); $this->preInstall(); if ($bootstrap->install() === true) { $this->postInstall($settings); $this->updateComposer(true); $settings->set("extension.{$this->name}.installed", true); } else { $this->error('Extension install fail!'); return false; } $this->info("Extension {$this->name} is installed!"); return true; }
/** * Command handler. * * @param \Notadd\Foundation\Extension\ExtensionManager $manager * @param \Notadd\Foundation\Setting\Contracts\SettingsRepository $settings * * @return bool * @throws \Exception */ public function fire(ExtensionManager $manager, SettingsRepository $settings) { $this->name = $this->input->getArgument('name'); $extensions = $manager->getExtensionPaths(); if (!$extensions->offsetExists($this->name)) { $this->error("Extension {$this->name} do not exist!"); return false; } if ($settings->get("extension.{$this->name}.installed")) { $this->error("Extension {$this->name} is installed!"); return false; } $this->path = $extensions->get($this->name); if (Str::contains($this->path, $manager->getVendorPath())) { $this->error("Extension {$this->name} is installed!"); return false; } $this->postInstall($settings); $this->composer->dumpAutoloads(); $this->resetOpcache(); $settings->set("extension.{$this->name}.installed", true); $this->info("Extension {$this->name} is installed!"); return true; }