pluginDir = $pluginDir; $this->validator = $validator; } /** * @return Plugin[] An array containing plugins */ public function listPlugins() { $finder = new Finder(); $finder ->depth(0) ->in($this->pluginDir) ->directories(); $plugins = array(); foreach ($finder as $pluginDir) { $manifest = $error = null; $name = $pluginDir->getBasename(); try { $manifest = $this->validator->validatePlugin((string) $pluginDir); } catch (PluginValidationException $e) { $error = $e; } $plugins[$name] = new Plugin($name, $manifest, $error); } return $plugins; } public function hasPlugin($name) { $plugins = $this->listPlugins(); return isset($plugins[$name]); } }