From 98fc0a16bae1166ea8916cfa487492480a0c5930 Mon Sep 17 00:00:00 2001 From: Adrien Nicolet Date: Fri, 21 Dec 2012 14:56:10 +0100 Subject: [PATCH 1/5] handle references in fields --- src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php index 85546ee..25804d7 100644 --- a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php @@ -77,6 +77,12 @@ public function setPropertyValue($object, PropertyInterface $property, $value) $class = new \ReflectionClass($object); $name = $property->getIdentifier(); + + $config = $property->getConfig(); + if (isset($config['doctrine:reference'])) { + $value = $this->getBySubject($value); + } + $method = 'set' . ucfirst($name); if ($class->hasMethod($method)) { $object->$method($value); @@ -94,7 +100,12 @@ public function setPropertyValue($object, PropertyInterface $property, $value) */ public function getPropertyValue($object, PropertyInterface $property) { - return $this->getField($object, $property); + $field = $this->getField($object, $property); + if (is_object($field)) { + return $field->getPath(); + } + + return $field; } /** From 297193550f6c89530b1cf6691ee4f5b17822dfb9 Mon Sep 17 00:00:00 2001 From: Adrien Nicolet Date: Fri, 21 Dec 2012 16:59:05 +0100 Subject: [PATCH 2/5] move handling of field references into BaseDoctrineRdfMapper --- .../CreatePHP/Mapper/AbstractRdfMapper.php | 12 +-------- .../Mapper/BaseDoctrineRdfMapper.php | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php index 457da08..f338808 100644 --- a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php @@ -78,11 +78,6 @@ public function setPropertyValue($object, PropertyInterface $property, $value) $name = $property->getIdentifier(); - $config = $property->getConfig(); - if (isset($config['doctrine:reference'])) { - $value = $this->getBySubject($value); - } - $method = 'set' . ucfirst($name); if ($class->hasMethod($method)) { $object->$method($value); @@ -100,12 +95,7 @@ public function setPropertyValue($object, PropertyInterface $property, $value) */ public function getPropertyValue($object, PropertyInterface $property) { - $field = $this->getField($object, $property); - if (is_object($field)) { - return $field->getPath(); - } - - return $field; + return $this->getField($object, $property); } /** diff --git a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php index a9ca7c8..d1ffb1b 100644 --- a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php @@ -11,6 +11,7 @@ use Doctrine\Common\Persistence\ObjectManager; use Doctrine\Common\Persistence\ManagerRegistry; use Midgard\CreatePHP\Entity\EntityInterface; +use Midgard\CreatePHP\Entity\PropertyInterface; use PHPCR\ItemExistsException; @@ -85,4 +86,29 @@ public function createSubject($object) $ids = $meta->getIdentifierValues($object); return implode('-', $ids); } + + /** + * {@inheritDoc} + */ + public function getPropertyValue($object, PropertyInterface $property) + { + $field = $this->getField($object, $property); + if (is_object($field)) { + return $field->getPath(); + } + + return $field; + } + + /** + * {@inheritDoc} + */ + public function setPropertyValue($object, PropertyInterface $property, $value) + { + $config = $property->getConfig(); + if (isset($config['doctrine:reference'])) { + $value = $this->getBySubject($value); + } + return parent::setPropertyValue($object, $property, $value); + } } \ No newline at end of file From 6b5e4844c13105024c1ecf6ad1724c7dcb3aea6f Mon Sep 17 00:00:00 2001 From: Adrien Nicolet Date: Fri, 28 Dec 2012 14:35:43 +0100 Subject: [PATCH 3/5] use of metadata to get field identifier --- src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php index d1ffb1b..4773d0d 100644 --- a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php @@ -93,8 +93,12 @@ public function createSubject($object) public function getPropertyValue($object, PropertyInterface $property) { $field = $this->getField($object, $property); - if (is_object($field)) { - return $field->getPath(); + + $config = $property->getConfig(); + if (isset($config['doctrine:reference'])) { + $meta = $this->om->getClassMetaData(get_class($object)); + $method = 'get' . ucfirst($meta->getIdentifier()); + return $object->$method(); } return $field; From 93fc24173b0e4461c4f06ea4b4ad526b5fdb8f01 Mon Sep 17 00:00:00 2001 From: Adrien Nicolet Date: Thu, 3 Jan 2013 16:32:07 +0100 Subject: [PATCH 4/5] update getPropertyValue to work correctly with all ODM cases --- src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php index 4773d0d..472621b 100644 --- a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php @@ -93,12 +93,9 @@ public function createSubject($object) public function getPropertyValue($object, PropertyInterface $property) { $field = $this->getField($object, $property); - $config = $property->getConfig(); if (isset($config['doctrine:reference'])) { - $meta = $this->om->getClassMetaData(get_class($object)); - $method = 'get' . ucfirst($meta->getIdentifier()); - return $object->$method(); + return $this->createSubject($object); } return $field; From 1b9db57e017f1b3b9737ee458f324a63d89ef40f Mon Sep 17 00:00:00 2001 From: Adrien Nicolet Date: Tue, 8 Jan 2013 11:18:36 +0100 Subject: [PATCH 5/5] fixes after updating symfony-cmf dependencies --- src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php b/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php index d4abad5..e8f6b93 100644 --- a/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php +++ b/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php @@ -37,12 +37,12 @@ public function prepareObject(TypeInterface $type, $parent = null) /** @var $meta \Doctrine\ODM\PHPCR\Mapping\ClassMetadata */ $meta = $this->om->getClassMetaData(get_class($object)); - if (!property_exists($object, $meta->parentMapping)) { + if (!property_exists($object, $meta->parentMapping['fieldName'])) { throw new RuntimeException('parentMapping need to be mapped to ' . get_class($object)); } - $meta->setFieldValue($object, $meta->parentMapping, $parent); + $meta->setFieldValue($object, $meta->parentMapping['fieldName'], $parent); return $object; }