diff -r 000000000000 -r 7f95f8617b0b 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 @@ + + * + * 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 + */ +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)', + ); + } +}