/** * 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; }