/** * * @param array $config * @param ClassMetadata $meta * @param object $object * * @return array */ private function getGroups($meta, $config, $object) { $groups = array(); if (isset($config['groups'])) { foreach ($config['groups'] as $group) { $groups[$group] = $meta->getReflectionProperty($group)->getValue($object); } } return $groups; }
/** * Updates a field * * @param object $object * @param AdapterInterface $eventAdapter * @param ClassMetadata $meta * @param string $field */ protected function updateField($object, $eventAdapter, $meta, $field) { /** @var \Doctrine\Orm\Mapping\ClassMetadata|\Doctrine\ODM\MongoDB\Mapping\ClassMetadata $meta */ $property = $meta->getReflectionProperty($field); $oldValue = $property->getValue($object); $newValue = $this->getFieldValue($meta, $field, $eventAdapter); // if field value is reference, persist object if ($meta->hasAssociation($field) && is_object($newValue)) { $eventAdapter->getObjectManager()->persist($newValue); } $property->setValue($object, $newValue); if ($object instanceof NotifyPropertyChanged) { $uow = $eventAdapter->getObjectManager()->getUnitOfWork(); $uow->propertyChanged($object, $field, $oldValue, $newValue); } }
/** * @param object $object * @param object $uow * @param AdapterInterface $ea * @param ClassMetadata $meta * @param String $field * @param mixed $value * @param bool $notifyPropertyChanged */ protected function updateField($object, $uow, AdapterInterface $ea, ClassMetadata $meta, $field, $value, $notifyPropertyChanged = true) { $property = $meta->getReflectionProperty($field); $oldValue = $property->getValue($object); $ucField = ucfirst($field); $prefixes = ['add', 'set', 'property']; foreach ($prefixes as $prefix) { $method = $prefix . $ucField; if (method_exists($object, $method)) { $object->{$method}($value); break; } if ($prefix === 'property') { $property->setValue($object, $value); break; } } if ($notifyPropertyChanged && $object instanceof NotifyPropertyChanged) { $uow->propertyChanged($object, $field, $oldValue, $value); } }
/** * @param object $object * @param object $uow * @param AdapterInterface $ea * @param ClassMetadata $meta * @param String $field * @param mixed $value * @param bool $notifyPropertyChanged */ protected function updateField($object, $uow, AdapterInterface $ea, ClassMetadata $meta, $field, $value, $notifyPropertyChanged = true) { $property = $meta->getReflectionProperty($field); $oldValue = $property->getValue($object); $property->setValue($object, $value); if ($notifyPropertyChanged && $object instanceof NotifyPropertyChanged) { $uow = $ea->getObjectManager()->getUnitOfWork(); $uow->propertyChanged($object, $field, $oldValue, $value); } }
/** * Updates a field * * @param object $object * @param AdapterInterface $eventAdapter * @param ClassMetadata $meta * @param string $field */ protected function updateField($object, $eventAdapter, $meta, $field) { /** @var \Doctrine\Orm\Mapping\ClassMetadata|\Doctrine\ODM\MongoDB\Mapping\ClassMetadata $meta */ $property = $meta->getReflectionProperty($field); $oldValue = $property->getValue($object); $newValue = $this->getFieldValue($meta, $field, $eventAdapter); // if field value is reference, persist object if ($meta->hasAssociation($field) && is_object($newValue)) { $uow = $eventAdapter->getObjectManager()->getUnitOfWork(); // Check to persist only when the entity isn't already managed, persists always for MongoDB if (!$uow instanceof UnitOfWork || $uow->getEntityState($newValue) !== UnitOfWork::STATE_MANAGED) { $eventAdapter->getObjectManager()->persist($newValue); } } $property->setValue($object, $newValue); if ($object instanceof NotifyPropertyChanged) { $uow = $eventAdapter->getObjectManager()->getUnitOfWork(); $uow->propertyChanged($object, $field, $oldValue, $newValue); } }