Esempio n. 1
0
 /**
  * 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;
 }