public function export(Atomik_Model_Builder $builder) { $definition = new Atomik_Db_Definition($builder->getManager()->getDbInstance()); $definition->dropBeforeCreate(); $tableName = $builder->tableName; $table = $definition->table($tableName); foreach ($builder->getFields() as $field) { list($type, $length) = $field->getSqlType(); $column = $table->createColumn($field->name, $type, $length, $field->getOptions('sql-')); if ($builder->getPrimaryKeyField() == $field) { $table->primaryKey($field->name); $column->options['auto-increment'] = true; } if ($builder->isFieldPartOfReference($field)) { $table->index($field->name, $field->getOption('sql-index', null)); } } $builder->getBehaviourBroker()->notifyBeforeExport($builder, $definition); $sql = $definition->toSql(); $builder->getBehaviourBroker()->notifyAfterExport($builder, $sql); return $sql; }
/** * Sets the model builder associated to this form * * @param Atomik_Model_Builder $builder */ public function setBuilder(Atomik_Model_Builder $builder) { $this->_builder = $builder; $this->_fields = array(); $options = new Atomik_Options($builder->getOptions($this->_optionPrefix)); $this->setFormTemplate($options->getOption('template', Atomik_Form::getDefaultFormTemplate())); $this->setFieldTemplate($options->getOption('field-template', Atomik_Form::getDefaultFieldTemplate())); $this->setOptions($options->getOptions()); foreach ($builder->getFields() as $modelField) { if ($modelField->getOption('ignore', false, $this->_optionPrefix)) { continue; } $formField = null; $defaultLabel = $modelField->name; if ($builder->isFieldPartOfReference($modelField) && !$modelField->getOption('no-reference', false, $this->_optionPrefix)) { $reference = $builder->getReferenceFromSourceField($modelField); if ($reference->isHasMany()) { continue; } $defaultLabel = $reference->name; $options = $modelField->getOptions($this->_optionPrefix); $options['reference'] = $reference; require_once 'Atomik/Model/Form/Field/Reference.php'; $formField = Atomik_Form_Field_Factory::factory('Atomik_Model_Form_Field_Reference', $modelField->name, $options); } else { $formField = $modelField->getFormField(); } $this->_fields[$modelField->name] = $formField; $this->_labels[$modelField->name] = $modelField->getLabel(); $formField->setParent($this); } }