/** * 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) { 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': $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; }
$t->is($column->getName(), 'name'); $t->is($column->getFieldName(), 'name'); $t->is($column->getPhpName(), 'name'); $t->is($column->isNotNull(), true); $column = new sfDoctrineColumn('test', Doctrine::getTable('Test')); $t->is($column->getName(), 'test'); $t->is($column->getFieldName(), 'TEST'); $t->is($column->getPhpName(), 'TEST'); $t->is($column->getDoctrineType(), 'string'); $t->is($column->getType(), 'VARCHAR'); $t->is($column->getLength(), 255); $t->is($column->getSize(), 255); $t->is($column->hasDefinitionKey('length'), true); $t->is($column->getDefinitionKey('type'), 'string'); $t->is($column->isNotNull(), false); // Is not null and has definition key $column = new sfDoctrineColumn('email', Doctrine::getTable('Test')); $t->is($column->isNotNull(), true); $t->is($column->hasDefinitionKey('email'), true); $t->is($column->getDefinitionKey('email'), true); // Is primary key $column = new sfDoctrineColumn('id', Doctrine::getTable('Test')); $t->is($column->isPrimaryKey(), true); // Relation/foreign key functions $column = new sfDoctrineColumn('test_id', Doctrine::getTable('TestRelation')); $t->is($column->isForeignKey(), true); $t->is($column->getForeignClassName(), 'Test'); $t->is($column->getForeignTable()->getOption('name'), 'Test'); $t->is($column->getTable()->getOption('name'), 'TestRelation'); // Array access $t->is($column['type'], 'integer');
protected function isCkEditorColumn(sfDoctrineColumn $column) { return false !== strpos(dmArray::get($column->getTable()->getColumnDefinition($column->getName()), 'extra', ''), 'ckeditor'); }