コード例 #1
0
ファイル: SortableListener.php プロジェクト: anhpha/reports
 /**
  *
  * @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;
 }
コード例 #2
0
 /**
  * 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);
     }
 }
コード例 #3
0
ファイル: ManagerSubscriber.php プロジェクト: coolms/doctrine
 /**
  * @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);
     }
 }
コード例 #4
0
 /**
  * @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);
     }
 }
コード例 #5
0
 /**
  * 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);
     }
 }