App\services\PluginManager::getPlugins PHP Method

getPlugins() public method

public getPlugins ( ) : Collection
return Illuminate\Support\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;
    }

Usage Example

コード例 #1
0
 public function manage(Request $request, PluginManager $plugins)
 {
     if ($request->has('action') && $request->has('id')) {
         $id = $request->get('id');
         if ($plugins->getPlugins()->has($id)) {
             $plugin = $plugins->getPlugin($id);
             switch ($request->get('action')) {
                 case 'enable':
                     $plugins->enable($id);
                     return redirect('admin/plugins/manage');
                     break;
                 case 'disable':
                     $plugins->disable($id);
                     return redirect('admin/plugins/manage');
                     break;
                 case 'delete':
                     if ($request->isMethod('post')) {
                         event(new Events\PluginWasDeleted($plugin));
                         $plugins->uninstall($id);
                         return json('插件已被成功删除', 0);
                     }
                     break;
                 case 'config':
                     if ($plugin->isEnabled() && $plugin->hasConfigView()) {
                         return View::file($plugin->getViewPath('config'));
                     } else {
                         abort(404);
                     }
                     break;
                 default:
                     # code...
                     break;
             }
         }
     }
     $data = ['installed' => $plugins->getPlugins(), 'enabled' => $plugins->getEnabledPlugins()];
     return view('admin.plugins', $data);
 }
All Usage Examples Of App\services\PluginManager::getPlugins