/** * Copy the properties of one field to another * @param zibo\library\orm\definition\field\ModelField $source * @param zibo\library\orm\definition\field\ModelField $destination * @return null */ private function copyField(ModelField $source, ModelField $destination) { $destination->setLabel($source->getLabel()); $destination->setIsLocalized($source->isLocalized()); $validators = $source->getValidators(); foreach ($validators as $validator) { $destination->addValidator($validator); } }
/** * Create a xml element with the definition of a model field * @param zibo\library\xml\dom\Document $dom * @param zibo\library\orm\definition\field\ModelField $field * @return DOMElement an xml element which defines the model field */ protected function getElementFromField(Document $dom, ModelField $field) { $element = $dom->createElement(self::TAG_FIELD); $element->setAttribute(self::ATTRIBUTE_NAME, $field->getName()); if ($field instanceof RelationField) { $element->setAttribute(self::ATTRIBUTE_MODEL, $field->getRelationModelName()); if ($field instanceof BelongsToField) { $element->setAttribute(self::ATTRIBUTE_RELATION, self::RELATION_BELONGS_TO); } elseif ($field instanceof HasOneField) { $element->setAttribute(self::ATTRIBUTE_RELATION, self::RELATION_HAS_ONE); } elseif ($field instanceof HasManyField) { $element->setAttribute(self::ATTRIBUTE_RELATION, self::RELATION_HAS_MANY); $linkModel = $field->getLinkModelName(); if ($linkModel != null) { $element->setAttribute(self::ATTRIBUTE_LINK_MODEL, $linkModel); } $indexOn = $field->getIndexOn(); if ($indexOn) { $element->setAttribute(self::ATTRIBUTE_INDEX_ON, $indexOn); } } if ($field->isDependant()) { $element->setAttribute(self::ATTRIBUTE_DEPENDANT, 'true'); } $foreignKey = $field->getForeignKeyName(); if ($foreignKey) { $element->setAttribute(self::ATTRIBUTE_FOREIGN_KEY, $foreignKey); } } else { $element->setAttribute(self::ATTRIBUTE_TYPE, $field->getType()); $default = $field->getDefaultValue(); if ($default != null) { $element->setAttribute(self::ATTRIBUTE_DEFAULT, $default); } if ($field->IsUnique()) { $element->setAttribute(self::ATTRIBUTE_UNIQUE, 'true'); } } if ($field->isLocalized()) { $element->setAttribute(self::ATTRIBUTE_LOCALIZED, 'true'); } $label = $field->getLabel(); if ($label) { $element->setAttribute(self::ATTRIBUTE_LABEL, $label); } $validators = $field->getValidators(); foreach ($validators as $validator) { $validatorElement = $dom->createElement(self::TAG_VALIDATION); $validatorElement->setAttribute(self::ATTRIBUTE_NAME, $validator->getName()); $options = $validator->getOptions(); foreach ($options as $key => $value) { $parameterElement = $dom->createElement(self::TAG_PARAMETER); $parameterElement->setAttribute(self::ATTRIBUTE_NAME, $key); $parameterElement->setAttribute(self::ATTRIBUTE_VALUE, $value); $validatorElement->appendChild($parameterElement); } $element->appendChild($validatorElement); } return $element; }