public function onPostSerialize(ObjectEvent $event)
 {
     /**
      * @var JsonSerializationVisitor $visitor
      */
     $visitor = $event->getVisitor();
     $object = $event->getObject();
     $annotations = $this->annotationReader->getClassAnnotations(new \ReflectionObject($object));
     $links = array();
     foreach ($annotations as $annotation) {
         if ($annotation instanceof Link) {
             if ($annotation->url) {
                 $uri = $this->evaluate($annotation->url, $object);
             } else {
                 $uri = $this->router->generate($annotation->route, $this->resolveParams($annotation->params, $object));
             }
             // allow a blank URI to be an optional link
             if ($uri) {
                 $links[$annotation->name] = $uri;
             }
         }
     }
     if ($links) {
         $visitor->addData('_links', $links);
     }
 }
 public function onPostDeserialize(ObjectEvent $event)
 {
     if ($event->getContext()->getDepth() > 1) {
         return;
     }
     $class = get_class($event->getObject());
     // Locate possible ObjectManager
     $objectManager = $this->managerRegistry->getManagerForClass($class);
     if (!$objectManager) {
         // No ObjectManager found
         return;
     }
     // Locate possible ClassMetadata
     $classMetadataFactory = $objectManager->getMetadataFactory();
     if ($classMetadataFactory->isTransient($class)) {
         // No ClassMetadata found
         return;
     }
     // Fallback to default constructor if missing identifier(s)
     $classMetadata = $objectManager->getClassMetadata($class);
     if (!$classMetadata instanceof ClassMetadataInfo || !$objectManager instanceof EntityManagerInterface) {
         return;
     }
     $propertyAccessor = PropertyAccess::createPropertyAccessor();
     foreach ($classMetadata->getAssociationMappings() as $mapping) {
         switch ($mapping['type']) {
             case ClassMetadataInfo::ONE_TO_MANY:
                 foreach ($event->getObject()->{$mapping['fieldName']} as $association) {
                     $propertyAccessor->setValue($association, $mapping['mappedBy'], $event->getObject());
                 }
                 break;
         }
     }
     $this->rootObject = null;
 }
 /**
  * translate all strings marked as multi lang
  *
  * @param ObjectEvent $event serialization event
  *
  * @return void
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     foreach ($this->localizedFields[\spl_object_hash($object)] as $field => $value) {
         $event->getVisitor()->addData($field, $this->utils->getTranslatedField($value));
     }
 }
Esempio n. 4
0
 /**
  * Method called on serializer.post_serialize event for Page object.
  *
  * @param \JMS\Serializer\EventDispatcher\ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     if ($this->container->has('routing')) {
         $uri = $this->container->get('routing')->getUri($event->getObject()->getUrl());
         $event->getVisitor()->addData('uri', $uri);
     }
 }
 /**
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     // getSubscribedEvents doesn't seem to support parent classes
     if (!$event->getObject() instanceof MediaInterface) {
         return;
     }
     $provider = $this->pool->getProvider($event->getObject()->getProvider());
     if ($provider->getName() == 'image') {
         $reference = $provider->getThumb($event->getObject());
         $groups = $event->getContext()->attributes->get('groups');
         if (!$groups instanceof None && in_array('detail', $groups->get())) {
             $filters = array_keys($this->filterConfig->all());
         } else {
             $filters = ['medialibrary'];
         }
         $variants = [];
         foreach ($filters as $filter) {
             if ($event->getObject()->getContentType() == 'image/svg+xml') {
                 $variants[$filter] = $provider->getUrl($event->getObject());
             } else {
                 $variants[$filter] = $this->cacheManager->getBrowserPath($reference, $filter);
             }
         }
         $event->getVisitor()->addData('images', $variants);
     }
     $event->getVisitor()->addData('original', $provider->getUrl($event->getObject()));
 }
 public function onPostDeserialize(ObjectEvent $event)
 {
     $entity = $event->getObject();
     if (!$entity instanceof Stateful) {
         return;
     }
     $this->injectStateMachine($entity);
 }
 /**
  * @param ObjectEvent $event
  */
 public function onUserUserPreSerialize(ObjectEvent $event)
 {
     /** @var User $user */
     $user = $event->getObject();
     if (!$user->getImage()) {
         $user->setImage(new UserImage());
     }
 }
 public function onPostSerialize(ObjectEvent $event)
 {
     if (null === $this->rootObject || $event->getObject() !== $this->rootObject) {
         return;
     }
     $this->stopwatch->stop('jms_serializer');
     $this->rootObject = null;
 }
 /**
  * @param ObjectEvent $event
  * @return void
  */
 public function onPostDeserialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     if (!$object instanceof AbstractEntity || !$object->getId()) {
         return;
     }
     $this->em->persist($object);
 }
 /**
  * @param ObjectEvent $event
  */
 public function onObjectPostSerialize(ObjectEvent $event)
 {
     /** @var JsonSerializationVisitor $visitor */
     $visitor = $event->getVisitor();
     $additionalData = $this->serializationHelper->getAdditionalData($event->getObject());
     foreach ($additionalData as $key => $value) {
         $visitor->addData($key, $value);
     }
 }
Esempio n. 11
0
 /**
  * Adds the relative path to the serialization.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $visitor = $event->getVisitor();
     $document = $event->getObject();
     if (!$document instanceof PathBehavior || !$this->documentRegistry->hasDocument($document)) {
         return;
     }
     $visitor->addData('path', $this->documentInspector->getContentPath($document));
 }
Esempio n. 12
0
 /**
  * Adds the enabled shadow languages to the serialization.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $document = $event->getObject();
     if (!$document instanceof ShadowLocaleBehavior || !$this->documentRegistry->hasDocument($document)) {
         return;
     }
     $visitor = $event->getVisitor();
     $visitor->addData('enabledShadowLanguages', $this->documentInspector->getShadowLocales($document));
 }
Esempio n. 13
0
 /**
  * Adds the identifier of the parent document to the serialization.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $visitor = $event->getVisitor();
     $document = $event->getObject();
     if (!$document instanceof ParentBehavior || !$document->getParent() instanceof UuidBehavior) {
         return;
     }
     $visitor->addData('parentUuid', $document->getParent()->getUuid());
 }
Esempio n. 14
0
 /**
  * on post serialize
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $staticUris = $event->getObject()->getStaticUris();
     if (!empty($staticUris)) {
         $event->getVisitor()->addData('uri', $staticUris);
         return;
     }
     $event->getVisitor()->addData('uri', $this->imageUrlManager->getUrls($event->getObject()));
 }
Esempio n. 15
0
 /**
  * Adds a flag to indicate if the document has children.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $document = $event->getObject();
     if (!$document instanceof ChildrenBehavior || !$this->documentRegistry->hasDocument($document)) {
         return;
     }
     $visitor = $event->getVisitor();
     $visitor->addData('hasSub', $this->documentInspector->hasChildren($document));
 }
 private function addOpenIdConnectCompatibility(ObjectEvent $event)
 {
     $person = $event->getObject();
     $visitor = $event->getVisitor();
     if (!$person instanceof PersonInterface) {
         return;
     }
     $visitor->addData('picture', $person->getProfilePictureUrl());
     $visitor->addData('email_verified', $person->getEmailConfirmedAt() instanceof \DateTime);
 }
Esempio n. 17
0
 /**
  * Add uniqueid and media-data to serialized data.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $teaser = $event->getObject();
     $visitor = $event->getVisitor();
     $context = $event->getContext();
     if (!$teaser instanceof Teaser) {
         return;
     }
     $visitor->addData('teaserId', $context->accept(sprintf('%s;%s', $teaser->getType(), $teaser->getId())));
 }
Esempio n. 18
0
 /**
  * Adds the published state to the serialization.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     /** @var RedirectTypeBehavior $document */
     $document = $event->getObject();
     if (!$document instanceof WorkflowStageBehavior) {
         return;
     }
     $visitor = $event->getVisitor();
     $visitor->addData('publishedState', $document->getWorkflowStage() === WorkflowStage::PUBLISHED);
 }
Esempio n. 19
0
 public function onPostSerializeOrderItem(ObjectEvent $event)
 {
     /** @var OrderItemInterface $order */
     $orderItem = $event->getObject();
     $visitor = $event->getVisitor();
     $visitor->addData('unit_price_total', $orderItem->getUnitPriceTotal());
     $visitor->addData('tax_total', $orderItem->getTaxTotal());
     $visitor->addData('unit_tax', $orderItem->getUnitTax());
     $visitor->addData('unit_total', $orderItem->getUnitTotal());
 }
Esempio n. 20
0
 /**
  * Adds the permissions for the current user to the serialization.
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $document = $event->getObject();
     if (!($document instanceof SecurityBehavior && $document instanceof LocaleBehavior && $document instanceof WebspaceBehavior && $this->tokenStorage !== null && $this->tokenStorage->getToken() !== null && $this->tokenStorage->getToken()->getUser() instanceof UserInterface)) {
         return;
     }
     /** @var JsonSerializationVisitor $visitor */
     $visitor = $event->getVisitor();
     $visitor->addData('_permissions', $this->accessControlManager->getUserPermissionByArray($document->getLocale(), ContentAdmin::SECURITY_CONTEXT_PREFIX . $document->getWebspaceName(), $document->getPermissions(), $this->tokenStorage->getToken()->getUser()));
 }
 /**
  * @param ObjectEvent $event
  */
 public function onPostDeserialize(ObjectEvent $event)
 {
     if ($event->getObject() instanceof PackageInterface) {
         /** @var PackageInterface $package */
         $package = $event->getObject();
         if (null === $package->getItems()) {
             $package->setItems(new ArrayCollection());
         }
     }
 }
Esempio n. 22
0
 function it_changes_media_name(ObjectEvent $event, ObjectStub $object, MediaInterface $media, Router $router)
 {
     $event->getObject()->shouldBeCalled()->willReturn($object);
     $object->getImage()->shouldBeCalled()->willReturn($media);
     $media->getName()->shouldBeCalled()->willReturn('media-name.jpg');
     $router->generate('kreta_media_image', ['name' => 'media-name.jpg'], true)->shouldBeCalled()->willReturn('http://kreta.io/media/media/media-name.jpg');
     $media->setName('http://kreta.io/media/media/media-name.jpg')->shouldBeCalled()->willReturn($media);
     $object->setImage($media)->shouldBeCalled()->willReturn($object);
     $this->onChangeObjectMedia($event);
 }
Esempio n. 23
0
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     // FIXME This should be removed, once all entities are restructured not using the ApiWrapper, possible BC break
     if ($object instanceof ApiWrapper) {
         $object = $object->getEntity();
     }
     if (!$object instanceof SecuredEntityInterface) {
         return;
     }
     $event->getVisitor()->addData('_permissions', $this->accessControlManager->getUserPermissions(new SecurityCondition($object->getSecurityContext(), null, get_class($object), $object->getId()), $this->tokenStorage->getToken()->getUser()));
 }
 public function onPreHistorySerialize(ObjectEvent $event)
 {
     /** @var History $history */
     $history = $event->getObject();
     if ($history->getMainPicture()) {
         $mainImageLinks = $this->mediaController->getMediumFormatsAction($history->getMainPicture());
         $history->mainPictureThumbnails = $mainImageLinks;
     }
     if ($galleryHasMediaLinks = $this->formatGalleries($history->getGalleryHasMedia()->getValues(), $history->getLocale())) {
         $history->galleryHasMediaThumbnails = $galleryHasMediaLinks;
     }
 }
Esempio n. 25
0
 /**
  * Event that updates the media attribute of the object,
  * turning the name of the media into the absolute url.
  *
  * @param \JMS\Serializer\EventDispatcher\ObjectEvent $event The event
  */
 public function onChangeObjectMedia(ObjectEvent $event)
 {
     $object = $event->getObject();
     if ($object instanceof $this->class) {
         $method = 'get' . ucfirst($this->attribute);
         $media = $object->{$method}();
         if ($media instanceof MediaInterface && strpos($media->getName(), 'http://') === false) {
             $method = 'set' . ucfirst($this->attribute);
             $object->{$method}($media->setName($this->router->generate('kreta_media_' . $this->mediaType, ['name' => $media->getName()], UrlGeneratorInterface::ABSOLUTE_URL)));
         }
     }
 }
 public function onPostSerialize(ObjectEvent $event)
 {
     $menu = $event->getObject();
     $visitor = $event->getVisitor();
     if ($menu instanceof MenuItem) {
         if ($menu->isRoute()) {
             $visitor->addData('url', $this->router->generate($menu->getRoute(), $menu->getRouteParameters()), RouterInterface::ABSOLUTE_URL);
         } else {
             $visitor->addData('url', $menu->getUrl());
         }
     }
 }
Esempio n. 27
0
 /**
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $attribures = $event->getContext()->attributes;
     if ($attribures->containsKey('wallet_data')) {
         /** @var Wallet $wallet */
         $wallet = $event->getObject();
         /** @var Some $walletData */
         $walletData = $attribures->get('wallet_data')->get()[$wallet->getId()];
         $event->getVisitor()->addData('withdrawnAmount', $walletData['withdrawnAmount']);
         $event->getVisitor()->addData('lastOperationDate', $walletData['lastOperationDate']);
     }
 }
 /**
  * @param ObjectEvent $event
  */
 public function onPostDeserialize(ObjectEvent $event)
 {
     /** @var Graph $graph */
     $graph = $event->getObject();
     if ($graph instanceof Graph) {
         /** @var Edge $edge */
         foreach ($graph->getEdges() as $edge) {
             $edge->setTo($graph->getNode($edge->getTo()));
             $edge->setFrom($graph->getNode($edge->getFrom()));
         }
     }
 }
Esempio n. 29
0
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     $visitor = $event->getVisitor();
     /* @var $visitor GenericSerializationVisitor */
     $path = $this->uploaderHelper->asset($object, 'file');
     $urls = array();
     foreach (array('sq100', 'sq200', '400x225', '800x450') as $pattern) {
         $urls[$pattern] = $this->cacheManager->getBrowserPath($path, sprintf('photos_%s', $pattern));
     }
     $visitor->addData('image_urls', $urls);
 }
Esempio n. 30
0
 /**
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     // getSubscribedEvents doesn't seem to support parent classes
     if (!$object instanceof Content) {
         return;
     }
     if (false !== ($coverImage = $this->getCoverImage($object))) {
         $event->getVisitor()->addData('coverImage', $coverImage);
     }
     $event->getVisitor()->addData('path', $this->router->generate('_content', ['slug' => $object->getSlug()]));
 }