/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function installInfo(Request $request) { $package = $request->get('package'); $versions = ['dev' => [], 'stable' => []]; try { $info = $this->app['extend.info']->info($package, Bolt\Version::forComposer()); } catch (\Exception $e) { return $this->getJsonException($e); } if (isset($info->version) && is_array($info->version)) { foreach ($info->version as $version) { $versions[$version->stability][] = $version; } } return $this->json($versions); }
/** * Enforce the default JSON settings. * * @param array $json * * @return array */ private function setJsonDefaults(array $json) { $rootPath = $this->app['resources']->getPath('root'); $extensionsPath = $this->app['resources']->getPath('extensions'); $srcPath = $this->app['resources']->getPath('src'); $webPath = $this->app['resources']->getPath('web'); $pathToRoot = Path::makeRelative($rootPath, $extensionsPath); $pathToWeb = Path::makeRelative($webPath, $extensionsPath); $eventPath = Path::makeRelative($srcPath . '/Composer/EventListener', $extensionsPath); // Enforce standard settings $defaults = ['name' => 'bolt/extensions', 'description' => 'Bolt extension installation interface', 'license' => 'MIT', 'repositories' => ['packagist' => false, 'bolt' => ['type' => 'composer', 'url' => $this->app['extend.site'] . 'satis/']], 'minimum-stability' => $this->app['config']->get('general/extensions/stability', 'stable'), 'prefer-stable' => true, 'config' => ['discard-changes' => true, 'preferred-install' => 'dist'], 'provide' => ['bolt/bolt' => Bolt\Version::forComposer()], 'extra' => ['bolt-web-path' => $pathToWeb, 'bolt-root-path' => $pathToRoot], 'autoload' => ['psr-4' => ['Bolt\\Composer\\EventListener\\' => $eventPath]], 'scripts' => ['post-autoload-dump' => 'Bolt\\Composer\\EventListener\\PackageEventListener::dump', 'post-package-install' => 'Bolt\\Composer\\EventListener\\PackageEventListener::handle', 'post-package-update' => 'Bolt\\Composer\\EventListener\\PackageEventListener::handle']]; $json = Arr::mergeRecursiveDistinct($json, $defaults); ksort($json); return $json; }