/** * @return Collection */ public function getPlugins() { if (is_null($this->plugins)) { $plugins = new Collection(); $installed = []; $resource = opendir(base_path('plugins')); // traverse plugins dir while ($filename = @readdir($resource)) { if ($filename == "." || $filename == "..") { continue; } $path = base_path('plugins') . "/" . $filename; if (is_dir($path)) { if (file_exists($path . "/package.json")) { // load packages installed $installed[$filename] = json_decode($this->filesystem->get($path . "/package.json"), true); } } } closedir($resource); foreach ($installed as $path => $package) { // Instantiates an Plugin object using the package path and package.json file. $plugin = new Plugin($this->getPluginsDir() . '/' . $path, $package); // Per default all plugins are installed if they are registered in composer. $plugin->setInstalled(true); $plugin->setNameSpace(Arr::get($package, 'namespace')); $plugin->setVersion(Arr::get($package, 'version')); $plugin->setEnabled($this->isEnabled($plugin->name)); $plugins->put($plugin->name, $plugin); } $this->plugins = $plugins->sortBy(function ($plugin, $name) { return $plugin->name; }); } return $this->plugins; }