Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
 /**
  * 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'));
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  * @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;
 }
Esempio n. 5
0
 /**
  * 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;
 }