コード例 #1
0
 /**
  * @param \Doctrine\Common\Persistence\Event\LifecycleEventArgs $event
  */
 public function preUpdate(LifecycleEventArgs $event)
 {
     if (!$this->supports($event->getObject())) {
         return;
     }
     $object = $event->getObject();
     $object->setUpdatedAt($this->now());
     $dm = $event->getDocumentManager();
     $class = $dm->getClassMetadata(get_class($object));
     $dm->getUnitOfWork()->recomputeSingleDocumentChangeSet($class, $object);
 }
コード例 #2
0
 public function preRemove(LifecycleEventArgs $args)
 {
     if (!$args->getObject() instanceof Payment) {
         return;
     }
     $entity = $args->getObject();
     $entityManager = $args->getObjectManager();
     $products = $entityManager->getRepository("CvaGestionMembreBundle:Produit")->findBy(['hasWaitingList' => true]);
     if ($entity instanceof Payment) {
         if (in_array($entity->getProduct(), $products)) {
             $this->containerInterface->get("bde.wei.registration_management")->removeFromWaitingList($entity->getStudent(), $entity->getProduct());
         }
     }
 }
コード例 #3
0
 public function PostUpdate(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     $em = $args->getObjectManager();
     $classMetaData = $em->getClassMetadata(get_class($entity));
     foreach ($classMetaData->associationMappings as $associationMappingKey => $associationMappingDatas) {
         if ($associationMappingDatas['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::ONE_TO_MANY) {
             $repo = $em->getRepository($associationMappingDatas['targetEntity']);
             $associated = $repo->findBy([$associationMappingDatas['mappedBy'] => $entity]);
             $newAssociated = call_user_func([$entity, 'get' . ucfirst($associationMappingKey)]);
             $changed = false;
             foreach ($associated as $associatedEntity) {
                 if (!$newAssociated->contains($associatedEntity)) {
                     $changed = true;
                     $em->remove($associatedEntity);
                 }
             }
             if ($changed) {
                 $em->flush();
             }
             //
         }
     }
     //        dump($classMetaData);
     //        die();
 }
コード例 #4
0
 public function onPaymentBeforeSave(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if ($entity instanceof PaymentInterface) {
         $this->getPaymentStateHistoryManager()->createPaymentStateHistory($entity);
     }
 }
コード例 #5
0
 /**
  * Pre update
  * PreUpdate event needs to recompute change set
  *
  * @param LifecycleEventArgs $args
  */
 public function preUpdate(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if ($object instanceof AbstractMetric && $object->getUnit()) {
         $this->createMetricBaseValues($object);
     }
 }
コード例 #6
0
 protected function updateRoute(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if ($object instanceof MenuInterface) {
         $object->setRouter($this->router);
     }
 }
コード例 #7
0
 public function postRemove(LifecycleEventArgs $event)
 {
     $object = $event->getObject();
     $reflection = new \ReflectionClass($object);
     $message = sprintf('%s deleted', $reflection->getShortName());
     $this->logger->notice($message, $this->getContext($object));
 }
コード例 #8
0
 /**
  * @param EventArgs|LifecycleEventArgs $args
  */
 public function postPersist(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     $em = $args->getObjectManager();
     if ($entity instanceof Comment) {
         if ($entity->getArticleId() != null) {
             if ($entity->getUserId()->getId() != $entity->getArticleId()->getUserId()->getId()) {
                 $n = new Notification();
                 $n->setUser($entity->getUserId())->setArticle($entity->getArticleId());
                 $em->persist($n);
                 $em->flush();
             }
         } else {
             if ($entity->getVideoId() != null) {
                 if ($entity->getUserId()->getId() != $entity->getVideoId()->getUserId()->getId()) {
                     $n = new Notification();
                     $n->setUser($entity->getUserId())->setVideo($entity->getVideoId());
                     $em->persist($n);
                     $em->flush();
                 }
             } else {
                 if ($entity->getLinkId() != null) {
                     if ($entity->getUserId()->getId() != $entity->getLinkId()->getUserId()->getId()) {
                         $n = new Notification();
                         $n->setUser($entity->getUserId())->setLink($entity->getLinkId());
                         $em->persist($n);
                         $em->flush();
                     }
                 }
             }
         }
     }
 }
コード例 #9
0
 function let(Generator $generator, HasSalt $user, LifecycleEventArgs $event)
 {
     $generator->generate()->willReturn('salt');
     $event->getObject()->willReturn($user);
     $user->getSalt()->willReturn(null);
     $this->beConstructedWith($generator);
 }
 function it_marks_indexed_product_values_outdated_after_loading_a_value(LifecycleEventArgs $args, ProductValueInterface $value, ProductInterface $entity)
 {
     $args->getObject()->willReturn($value);
     $value->getEntity()->willReturn($entity);
     $entity->markIndexedValuesOutdated()->shouldBeCalled();
     $this->postLoad($args);
 }
コード例 #11
0
 /**
  * Control object dms
  *
  * @param LifecycleEventArgs $args
  */
 public function postUpdate(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if ($entity instanceof GedableInterface) {
         $this->manageNodeTree($entity->getGedTree());
     }
 }
コード例 #12
0
 /**
  * Pre update listener based on doctrine commons, overwrite to update
  * the changeset in the UoW and to handle non-common event argument
  * class.
  *
  * @param LifecycleEventArgs $args weak typed to allow overwriting
  */
 public function preUpdate($args)
 {
     $object = $args->getObject();
     if ($object instanceof UserInterface) {
         $this->updateUserFields($object);
     }
 }
コード例 #13
0
 public function preRemove(LifecycleEventArgs $event)
 {
     $object = $event->getObject();
     if ($this->isReferenceable($object)) {
         $this->objectAdapterManager->removeReference($object);
     }
 }
コード例 #14
0
 function it_applies_during_pre_update_on_timestampable_object(LifecycleEventArgs $args, TimestampableInterface $object)
 {
     $args->getObject()->willReturn($object);
     $object->setCreated()->shouldNotBeCalled();
     $object->setUpdated(Argument::type('\\DateTime'))->shouldBeCalled();
     $this->preUpdate($args);
 }
コード例 #15
0
 public function prePersist(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if ($object instanceof FileInterface) {
         $object->upload();
     }
 }
コード例 #16
0
 function let(Generator $generator, HasInitialPassword $user, LifecycleEventArgs $event)
 {
     $generator->generate()->willReturn('password');
     $event->getObject()->willReturn($user);
     $user->getPlainPassword()->willReturn(null);
     $this->beConstructedWith($generator);
 }
コード例 #17
0
 /**
  * @param LifecycleEventArgs $eventArgs
  */
 public function preUpdate(LifecycleEventArgs $eventArgs)
 {
     $object = $eventArgs->getObject();
     if ($this->isSluggable($object)) {
         $this->updateSlug($object);
     }
 }
コード例 #18
0
 public function preUpdate(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if (method_exists($entity, 'setUpdateDate')) {
         $entity->setUpdateDate(new \DateTime());
     }
 }
コード例 #19
0
 /**
  * @param LifecycleEventArgs $lifecycleEventArgs
  */
 private function updateSlug(LifecycleEventArgs $lifecycleEventArgs)
 {
     $object = $lifecycleEventArgs->getObject();
     $productTranslationRepository = $lifecycleEventArgs->getObjectManager()->getRepository(get_class($object));
     $slug = $this->slugify($object->getName(), $productTranslationRepository);
     $object->setSlug($slug);
     $this->generatedSlugs[] = $slug;
 }
コード例 #20
0
 /**
  * Pre update
  * PreUpdate event needs to recompute change set
  *
  * @param LifecycleEventArgs $args
  */
 public function preUpdate(LifecycleEventArgs $args)
 {
     $product = $args->getObject();
     if ($product instanceof ProductInterface) {
         $dm = $args->getObjectManager();
         $this->convertMetricValues($dm, $product);
     }
 }
コード例 #21
0
 /**
  * @param LifecycleEventArgs $event
  * @return void
  */
 private function keepDomainEvents(LifecycleEventArgs $event)
 {
     $entity = $event->getObject();
     if (!$entity instanceof DomainEventing) {
         return;
     }
     $this->entities[] = $entity;
 }
コード例 #22
0
 public function preRemove(LifecycleEventArgs $event)
 {
     $objectAdapterManager = $this->container->get('doctrine_orm_phpcr_adapter.adapter.default_adapter_manager');
     $object = $event->getObject();
     if ($this->isReferenceable($object, $objectAdapterManager)) {
         $objectAdapterManager->removeReference($object);
     }
 }
コード例 #23
0
 /**
  * @param LifecycleEventArgs $args
  * @throws \UnexpectedValueException
  */
 public function preRemove(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if ($entity instanceof ResourceInterface) {
         $this->resourceManager->removeResourceFile($entity);
         return;
     }
 }
コード例 #24
0
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if ($entity instanceof ApiCredentials && php_sapi_name() !== 'cli') {
         $user = $this->tokenManager->getToken()->getUser();
         $entity->setCreatedBy($user)->setIsActive(true);
     }
 }
コード例 #25
0
ファイル: UserListener.php プロジェクト: bakie/FOSUserBundle
 /**
  * Pre update listener based on doctrine common
  *
  * @param LifecycleEventArgs $args
  */
 public function preUpdate(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if ($object instanceof UserInterface) {
         $this->updateUserFields($object);
         $this->recomputeChangeSet($args->getObjectManager(), $object);
     }
 }
コード例 #26
0
 /**
  * Decrypt a Cryptable entity just after it is loaded from the database
  * 
  * @param LifecycleEventArgs $event
  */
 public function postLoad(LifecycleEventArgs $event)
 {
     $entity = $event->getObject();
     if (!$entity instanceof CryptableInterface) {
         return;
     }
     $this->decryptEntity($entity);
 }
 public function onPaymentMethodBeforeSave(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     if ($entity instanceof PaymentMethodInterface) {
         $processor = $this->getPaymentProcessorCollection()->get($entity->getProcessor());
         $entity->setConfiguration($this->filterConfiguration($entity->getConfiguration(), $processor));
     }
 }
コード例 #28
0
 function it_does_not_configure_scope_for_other_objects(CatalogContext $context, LifecycleEventArgs $args)
 {
     $object = new \stdClass();
     $args->getObject()->willReturn($object);
     $context->hasScopeCode()->willReturn(true);
     $context->getScopeCode()->shouldNotBeCalled();
     $this->postLoad($args);
 }
コード例 #29
0
 /**
  * @param LifecycleEventArgs $args
  */
 public function updateDimensionsFromContent(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if (!$object instanceof Image) {
         return;
     }
     if ($this->imagine) {
         /** @var $image ImageInterface */
         $image = false;
         // use imagine to determine the dimensions
         if ($object instanceof BinaryInterface) {
             $stream = $object->getContentAsStream();
             try {
                 $image = $this->imagine->read($stream);
             } catch (InvalidArgumentException $e) {
                 // ignore this exception, we will set the dimensions to 0
             } catch (RuntimeException $e) {
                 // ignore this exception, we will set the dimensions to 0
             }
         } elseif ($object instanceof FileSystemInterface) {
             if ($object->getFileSystemPath()) {
                 $image = $this->imagine->open($object->getFileSystemPath());
             }
         } else {
             $content = $object->getContentAsString();
             if ($content) {
                 $image = $this->imagine->load($content);
             }
         }
         if ($image) {
             $size = $image->getSize();
             $object->setWidth($size->getWidth());
             $object->setHeight($size->getHeight());
         } else {
             $object->setWidth(0);
             $object->setHeight(0);
         }
         return;
     }
     if (function_exists('imagecreatefromstring')) {
         // use gd to determine the dimensions
         $content = $object->getContentAsString();
         if ($content) {
             $resource = imagecreatefromstring($content);
         } else {
             $resource = false;
         }
         if ($resource) {
             $object->setWidth(imagesx($resource));
             $object->setHeight(imagesy($resource));
         } else {
             $object->setWidth(0);
             $object->setHeight(0);
         }
         return;
     }
     throw new \RuntimeException('Neither have Imagine nor the gd PHP extension');
 }
コード例 #30
0
 public function postLoad(LifecycleEventArgs $args)
 {
     $object = $args->getObject();
     if ($object instanceof AvatarInterface) {
         if (!$object->getAvatar()) {
             $object->setAvatar($this->gravatarApi->getUrl($object->getEmail()));
         }
     }
 }