/** * Initializes properties with the given values. * * @param Piece_ORM_Mapper_Common &$mapper * @param mixed &$subject * @param array $relationships */ function Piece_ORM_Mapper_ObjectPersister(&$mapper, &$subject, $relationships) { $metadata =& $mapper->getMetadata(); if (is_null($subject)) { $subject =& new stdClass(); if ($metadata->getDatatype('created_at') == 'timestamp') { $subject->createdAt = null; } if ($metadata->getDatatype('updated_at') == 'timestamp') { $subject->updatedAt = null; } } if (count($relationships)) { foreach (Piece_ORM_Mapper_RelationshipType::getRelationshipTypes() as $relationshipType) { $associatedObjectsPersisterClass = 'Piece_ORM_Mapper_AssociatedObjectPersister_' . ucwords($relationshipType); include_once str_replace('_', '/', $associatedObjectsPersisterClass) . '.php'; $this->_associatedObjectPersisters[$relationshipType] =& new $associatedObjectsPersisterClass($subject); } } $this->_mapper =& $mapper; $this->_subject =& $subject; $this->_relationships = $relationships; $this->_metadata =& $metadata; }
/** * Normalizes a relationship definition. * * @param array $relationship * @return array * @throws PIECE_ORM_ERROR_INVALID_CONFIGURATION */ function normalizeRelationshipDefinition($relationship) { if (!array_key_exists('type', $relationship)) { Piece_ORM_Error::push(PIECE_ORM_ERROR_INVALID_CONFIGURATION, 'The element [ type ] is required to generate a relationship property declaration.'); return; } if (!Piece_ORM_Mapper_RelationshipType::isValid($relationship['type'])) { Piece_ORM_Error::push(PIECE_ORM_ERROR_INVALID_CONFIGURATION, 'The value of the element [ type ] must be one of ' . implode(', ', Piece_ORM_Mapper_RelationshipType::getRelationshipTypes())); return; } $relationshipNormalizerClass = 'Piece_ORM_Mapper_RelationshipNormalizer_' . ucwords($relationship['type']); include_once str_replace('_', '/', $relationshipNormalizerClass) . '.php'; $relationshipNormalizer =& new $relationshipNormalizerClass($relationship, $this->_metadata); return $relationshipNormalizer->normalize(); }
/** * Initializes properties with the given values. * * @param Piece_ORM_Mapper_Common &$mapper * @param MDB2_Result &$result * @param array $relationships */ function Piece_ORM_Mapper_ObjectLoader(&$mapper, &$result, $relationships) { $this->_result =& $result; if (count($relationships)) { foreach (Piece_ORM_Mapper_RelationshipType::getRelationshipTypes() as $relationshipType) { $associatedObjectsLoaderClass = 'Piece_ORM_Mapper_AssociatedObjectLoader_' . ucwords($relationshipType); include_once str_replace('_', '/', $associatedObjectsLoaderClass) . '.php'; $this->_associatedObjectLoaders[$relationshipType] =& new $associatedObjectsLoaderClass($relationships, $this->_relationshipKeys, $this->_objects, $this->_objectIndexes, $mapper); } } $this->_metadata =& $mapper->getMetadata(); $this->_mapper =& $mapper; $this->_relationships = $relationships; }