diff -r 000000000000 -r 7f95f8617b0b vendor/bundles/Sensio/Bundle/DistributionBundle/Controller/ConfiguratorController.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/Sensio/Bundle/DistributionBundle/Controller/ConfiguratorController.php Sat Sep 24 15:40:41 2011 +0200 @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Sensio\Bundle\DistributionBundle\Controller; + +use Symfony\Component\DependencyInjection\ContainerAware; +use Symfony\Component\HttpFoundation\RedirectResponse; + +/** + * ConfiguratorController. + * + * @author Fabien Potencier + */ +class ConfiguratorController extends ContainerAware +{ + /** + * @return Response A Response instance + */ + public function stepAction($index = 0) + { + $configurator = $this->container->get('sensio.distribution.webconfigurator'); + + $step = $configurator->getStep($index); + $form = $this->container->get('form.factory')->create($step->getFormType(), $step); + + $request = $this->container->get('request'); + if ('POST' === $request->getMethod()) { + $form->bindRequest($request); + if ($form->isValid()) { + $configurator->mergeParameters($step->update($form->getData())); + $configurator->write(); + + $index++; + + if ($index < $configurator->getStepCount()) { + return new RedirectResponse($this->container->get('router')->generate('_configurator_step', array('index' => $index))); + } + + return new RedirectResponse($this->container->get('router')->generate('_configurator_final')); + } + } + + return $this->container->get('templating')->renderResponse($step->getTemplate(), array( + 'form' => $form->createView(), + 'index' => $index, + 'count' => $configurator->getStepCount(), + 'version' => $this->getVersion(), + )); + } + + public function checkAction() + { + $configurator = $this->container->get('sensio.distribution.webconfigurator'); + + // Trying to get as much requirements as possible + $majors = $configurator->getRequirements(); + $minors = $configurator->getOptionalSettings(); + + $url = $this->container->get('router')->generate('_configurator_step', array('index' => 0)); + + if (empty($majors) && empty($minors)) { + return new RedirectResponse($url); + } + + return $this->container->get('templating')->renderResponse('SensioDistributionBundle::Configurator/check.html.twig', array( + 'majors' => $majors, + 'minors' => $minors, + 'url' => $url, + 'version' => $this->getVersion(), + )); + } + + public function finalAction() + { + $configurator = $this->container->get('sensio.distribution.webconfigurator'); + $configurator->clean(); + + try { + $welcomeUrl = $this->container->get('router')->generate('_welcome'); + } catch (\Exception $e) { + $welcomeUrl = null; + } + + return $this->container->get('templating')->renderResponse('SensioDistributionBundle::Configurator/final.html.twig', array( + 'welcome_url' => $welcomeUrl, + 'parameters' => $configurator->render(), + 'ini_path' => $this->container->getParameter('kernel.root_dir').'/config/parameters.ini', + 'is_writable' => $configurator->isFileWritable(), + 'version' => $this->getVersion(), + )); + } + + public function getVersion() + { + $kernel = $this->container->get('kernel'); + + return $kernel::VERSION; + } +}