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; }
public static function getAvailableFilters(Atomik_Model_Builder $builder) { $filters = array(); foreach ($builder->getFields() as $field) { $fieldClass = get_class($field); $fieldType = substr($fieldClass, strrpos($fieldClass, '_') + 1); if ($filter = Atomik_Model_Query_Filter_Factory::factory($fieldType, $builder, $field)) { $filters[$field->name] = $filter; } } return $filters; }
public function modelSearch(Atomik_Model_Builder $builder) { $html = '<form action="' . Atomik::url() . '" class="model-search" method="post">Search: ' . '<input type="text" name="search" value="' . A('search', '', $_POST) . '" /><select name="searchBy">'; foreach ($builder->getFields() as $field) { $html .= sprintf("<option value=\"%s\" %s>%s</option>\n", $field->name, isset($_POST['searchBy']) && $_POST['searchBy'] == $field->name ? 'selected="selected"' : '', $field->getLabel() ); } $html .= '</select><input type="submit" value="search" /></form>'; return $html; }
/** * 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); } }