vendor/bundles/Sensio/Bundle/DistributionBundle/Configurator/Step/DoctrineStep.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/bundles/Sensio/Bundle/DistributionBundle/Configurator/Step/DoctrineStep.php Sat Sep 24 15:40:41 2011 +0200
@@ -0,0 +1,143 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sensio\Bundle\DistributionBundle\Configurator\Step;
+
+use Sensio\Bundle\DistributionBundle\Configurator\Form\DoctrineStepType;
+use Symfony\Component\Validator\Constraints as Assert;
+
+/**
+ * Doctrine Step.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class DoctrineStep implements StepInterface
+{
+ /**
+ * @Assert\Choice(callback="getDriverKeys")
+ */
+ public $driver;
+
+ /**
+ * @Assert\NotBlank
+ */
+ public $host;
+
+ /**
+ * @Assert\Min(0)
+ */
+ public $port;
+
+ /**
+ * @Assert\NotBlank
+ */
+ public $name;
+
+ /**
+ * @Assert\NotBlank
+ */
+ public $user;
+
+ public $password;
+
+ public function __construct(array $parameters)
+ {
+ foreach ($parameters as $key => $value) {
+ if (0 === strpos($key, 'database_')) {
+ $parameters[substr($key, 9)] = $value;
+ $key = substr($key, 9);
+ $this->$key = $value;
+ }
+ }
+ }
+
+ /**
+ * @see StepInterface
+ */
+ public function getFormType()
+ {
+ return new DoctrineStepType();
+ }
+
+ /**
+ * @see StepInterface
+ */
+ public function checkRequirements()
+ {
+ $messages = array();
+
+ if (!class_exists('\PDO')) {
+ $messages[] = 'PDO extension is mandatory.';
+ } else {
+ $drivers = \PDO::getAvailableDrivers();
+ if (0 == count($drivers)) {
+ $messages[] = 'Please install PDO drivers.';
+ }
+ }
+
+ return $messages;
+ }
+
+ /**
+ * @see StepInterface
+ */
+ public function checkOptionalSettings()
+ {
+ return array();
+ }
+
+ /**
+ * @see StepInterface
+ */
+ public function update(StepInterface $data)
+ {
+ $parameters = array();
+
+ foreach ($data as $key => $value) {
+ $parameters['database_'.$key] = $value;
+ }
+
+ return $parameters;
+ }
+
+ /**
+ * @see StepInterface
+ */
+ public function getTemplate()
+ {
+ return 'SensioDistributionBundle:Configurator/Step:doctrine.html.twig';
+ }
+
+ /**
+ * @return array
+ */
+ static public function getDriverKeys()
+ {
+ return array_keys(static::getDrivers());
+ }
+
+ /**
+ * @return array
+ */
+ static public function getDrivers()
+ {
+ return array(
+ 'pdo_mysql' => 'MySQL (PDO)',
+ 'pdo_sqlite' => 'SQLite (PDO)',
+ 'pdo_pgsql' => 'PosgreSQL (PDO)',
+ 'oci8' => 'Oracle (native)',
+ 'ibm_db2' => 'IBM DB2 (native)',
+ 'pdo_oci' => 'Oracle (PDO)',
+ 'pdo_ibm' => 'IBM DB2 (PDO)',
+ 'pdo_sqlsrv' => 'SQLServer (PDO)',
+ );
+ }
+}