vendor/bundles/Sensio/Bundle/DistributionBundle/Configurator/Step/DoctrineStep.php
changeset 0 7f95f8617b0b
--- /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)',
+        );
+    }
+}