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)); } }
/** * 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); } }
/** * 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)); }
/** * 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)); }
/** * 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()); }
/** * 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())); }
/** * 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); }
/** * 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()))); }
/** * 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); }
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()); }
/** * 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()); } } }
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); }
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; } }
/** * 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()); } } }
/** * @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())); } } }
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); }
/** * @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()])); }