/**
* @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;
}