share(function (Application $app) { return new JsonValidator(); }); $app['plugins.manifest-validator'] = $app->share(function (Application $app) { return ManifestValidator::create($app); }); $app['plugins.plugins-validator'] = $app->share(function (Application $app) { return new PluginValidator($app['plugins.manifest-validator']); }); $app['plugins.import-strategy'] = $app->share(function (Application $app) { return new ImportStrategy(); }); $app['plugins.autoloader-generator'] = $app->share(function (Application $app) { return new AutoloaderGenerator($app['plugins.directory']); }); $app['plugins.guzzle'] = $app->share(function (Application $app) { return new Guzzle(); }); $app['plugins.composer-installer'] = $app->share(function (Application $app) { $binaries = $app['phraseanet.configuration']['binaries']; $phpBinary = isset($binaries['php_binary']) ? $binaries['php_binary'] : null; if (!is_executable($phpBinary)) { $finder = new ExecutableFinder(); $phpBinary = $finder->find('php'); } return new ComposerInstaller($app['plugins.directory'], $app['plugins.guzzle'], $phpBinary); }); $app['plugins.explorer'] = $app->share(function (Application $app) { return new PluginsExplorer($app['plugins.directory']); }); $app['plugins.importer'] = $app->share(function (Application $app) { return new Importer($app['plugins.import-strategy'], array( 'plugins.importer.folder-importer' => $app['plugins.importer.folder-importer'], )); }); $app['plugins.importer.folder-importer'] = $app->share(function (Application $app) { return new FolderImporter($app['filesystem']); }); } public function boot(Application $app) { } }