private function encode(EventAdapterInterface $ea, $object, $config) { $om = $ea->getObjectManager(); $meta = $om->getClassMetadata(get_class($object)); $uow = $om->getUnitOfWork(); foreach ($config['encode'] as $field => $options) { $value = $meta->getReflectionProperty($field)->getValue($object); $method = $options['type']; $encoded = $method($options['secret'] . $value); $meta->getReflectionProperty($field)->setValue($object, $encoded); } // recalculate changeset $ea->recomputeSingleObjectChangeSet($uow, $meta, $object); }
/** * {@inheritdoc} */ protected function releaseTreeLocks(ObjectManager $om, AdapterInterface $ea) { $uow = $om->getUnitOfWork(); foreach ($this->rootsOfTreesWhichNeedsLocking as $oid => $root) { $meta = $om->getClassMetadata(get_class($root)); $config = $this->listener->getConfiguration($om, $meta->name); $lockTimeProp = $meta->getReflectionProperty($config['lock_time']); $lockTimeProp->setAccessible(true); $lockTimeValue = null; $lockTimeProp->setValue($root, $lockTimeValue); $changes = array($config['lock_time'] => array(null, null)); $ea->recomputeSingleObjectChangeSet($uow, $meta, $root); unset($this->rootsOfTreesWhichNeedsLocking[$oid]); } }
/** * @param AdapterInterface $ea * @param ObjectManager $om * @param UnitOfWork $uow * @param object $entity * @param string $method */ protected function handle(AdapterInterface $ea, ObjectManager $om, UnitOfWork $uow, $entity, $method) { /** * @var \Doctrine\ORM\EntityManager $om */ $meta = $om->getClassMetadata(get_class($entity)); $config = $this->getConfiguration($om, $meta->name); if (isset($config[self::TRANSFORMABLE]) && $config[self::TRANSFORMABLE]) { foreach ($config[self::TRANSFORMABLE] as $column) { $this->handleField($entity, $method, $column, $meta); } $ea->recomputeSingleObjectChangeSet($uow, $meta, $entity); } }