/**
  * Initialize generator
  * 
  * @param   sfGeneratorManager
  * @return  void
  */
 public function initialize(sfGeneratorManager $generatorManager)
 {
     parent::initialize($generatorManager);
     $this->getPluginModels();
     $this->setGeneratorClass('dinDoctrineFormFilter');
     $this->config = dinGeneratorModelConfig::getInstance($generatorManager->getConfiguration());
 }
 /**
  * Generates classes and templates in cache.
  *
  * @param array $params The parameters
  *
  * @return string The data to put in configuration cache
  */
 public function generate($params = array())
 {
     // create the project base class for all forms
     $file = sfConfig::get('sf_lib_dir') . '/filter/doctrine/BaseFormFilterDoctrine.class.php';
     if (!file_exists($file)) {
         if (!is_dir($directory = dirname($file))) {
             mkdir($directory, 0777, true);
         }
         copy(dmOs::join(sfConfig::get('dm_core_dir'), 'data/skeleton/lib/filter/doctrine/BaseFormFilterDoctrine.class.php'), $file);
     }
     parent::generate($params);
 }
 /**
  * Returns a sfValidator class name for a given column.
  *
  * @param sfDoctrineColumn $column
  * @return string    The name of a subclass of sfValidator
  */
 public function getValidatorClassForColumn($column)
 {
     $class = parent::getValidatorClassForColumn($column);
     if ('sfValidatorDateRange' == $class) {
         return 'sfValidatorChoice';
     }
     switch ($column->getDoctrineType()) {
         case 'boolean':
             $validatorSubclass = 'Boolean';
             break;
         case 'string':
             if ($column->getDefinitionKey('email')) {
                 $validatorSubclass = 'Email';
             } elseif ($column->getDefinitionKey('regexp')) {
                 $validatorSubclass = 'Regex';
             } elseif ($column->getTable()->isLinkColumn($column->getName())) {
                 $validatorClass = 'dmValidatorLinkUrl';
             } else {
                 $validatorSubclass = 'String';
             }
             break;
         case 'clob':
         case 'blob':
             $validatorSubclass = 'String';
             break;
         case 'float':
         case 'decimal':
             $validatorSubclass = 'Number';
             break;
         case 'integer':
             if (!$column->isPrimaryKey()) {
                 $validatorSubclass = 'Integer';
             }
             break;
         case 'date':
             $validatorClass = 'dmValidatorDate';
             break;
         case 'time':
             $validatorSubclass = 'Time';
             break;
         case 'timestamp':
             $validatorSubclass = 'DateTime';
             break;
         case 'enum':
             $validatorSubclass = 'Choice';
             break;
         default:
             $validatorSubclass = 'Pass';
     }
     if ($column->isPrimaryKey() || $column->isForeignKey()) {
         $validatorSubclass = 'DoctrineChoice';
     }
     $validatorClass = isset($validatorClass) ? $validatorClass : sprintf('sfValidator%s', $validatorSubclass);
     $validatorClass = $this->getGeneratorManager()->getConfiguration()->getEventDispatcher()->filter(new sfEvent($this, 'dm.form_generator.validator_class', array('column' => $column)), $validatorClass)->getReturnValue();
     return $validatorClass;
 }
 /**
  * Returns the maximum length for a column name.
  *
  * @return integer The length of the longer column name
  */
 public function getColumnNameMaxLength()
 {
     $max = parent::getColumnNameMaxLength();
     foreach ($this->getI18nColumns() as $column) {
         if (($m = strlen($column->getFieldName())) > $max) {
             $max = $m;
         }
     }
     return $max;
 }