/** * @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())); }
/** * 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())); }
public function onPostSerialize(ObjectEvent $event) { $embeds = $this->embedsFactory->create($event->getObject(), $event->getContext()); $links = $this->linksFactory->createLinks($event->getObject(), $event->getContext()); if (count($links) > 0) { $this->xmlSerializer->serializeLinks($links, $event->getVisitor()); } if (count($embeds) > 0) { $this->xmlSerializer->serializeEmbedded($embeds, $event->getVisitor(), $event->getContext()); } }
/** * @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()])); }
/** * @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']); } }
public function setUp() { $this->user = $this->prophesize(UserInterface::class); $this->token = $this->prophesize(TokenInterface::class); $this->token->getUser()->willReturn($this->user); $this->accessControlManager = $this->prophesize(AccessControlManagerInterface::class); $this->tokenStorage = $this->prophesize(TokenStorageInterface::class); $this->tokenStorage->getToken()->willReturn($this->token->reveal()); $this->securedEntitySubscriber = new SecuredEntitySubscriber($this->accessControlManager->reveal(), $this->tokenStorage->reveal()); $this->visitor = $this->prophesize(GenericSerializationVisitor::class); $this->objectEvent = $this->prophesize(ObjectEvent::class); $this->objectEvent->getVisitor()->willReturn($this->visitor); }
/** * Adds the hash of the given object to its serialization. * * @param ObjectEvent $event */ public function onPostSerialize(ObjectEvent $event) { $object = $event->getObject(); // FIXME This can be removed, as soon as we've got rid of all ApiEntities. if ($object instanceof ApiWrapper) { $object = $object->getEntity(); } if (!$object instanceof AuditableInterface && !$object instanceof LocalizedAuditableBehavior) { return; } if (!$event->getVisitor() instanceof GenericSerializationVisitor) { return; } $event->getVisitor()->addData('_hash', $this->hasher->hash($object)); }
public function onPostSerialize(ObjectEvent $event) { $object = $event->getObject(); $context = $event->getContext(); $context->startVisiting($object); $embeddeds = $this->embeddedsFactory->create($object, $context); $links = $this->linksFactory->create($object, $context); if (count($links) > 0) { $this->xmlSerializer->serializeLinks($links, $event->getVisitor(), $context); } if (count($embeddeds) > 0) { $this->xmlSerializer->serializeEmbeddeds($embeddeds, $event->getVisitor(), $context); } $context->stopVisiting($object); }
public function onPostSerialize(ObjectEvent $event) { $object = $event->getObject(); $context = $event->getContext(); $embeddeds = $this->embeddedsFactory->create($object, $context); $links = $this->linksFactory->create($object, $context); $embeddeds = $this->embeddedsInlineDeferrer->handleItems($object, $embeddeds, $context); $links = $this->linksInlineDeferrer->handleItems($object, $links, $context); if (count($links) > 0) { $this->jsonSerializer->serializeLinks($links, $event->getVisitor(), $context); } if (count($embeddeds) > 0) { $this->jsonSerializer->serializeEmbeddeds($embeddeds, $event->getVisitor(), $context); } }
/** * 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)); } }
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 onPostSerialize(ObjectEvent $event) { global $kernel; $imageProvider = $kernel->getContainer()->get('sonata.media.provider.image'); $media = $event->getObject(); $visitor = $event->getVisitor(); $event->getVisitor()->addData('url', $imageProvider->generatePublicUrl($media, 'reference')); $visitor->addData('cdn_is_flushable', $media->getCdnIsFlushable()); $visitor->addData('cdn_status', $media->getCdnStatus()); $visitor->addData('cdn_flush_at', $media->getCdnFlushAt()); $visitor->addData('binary_content', $media->getBinaryContent()); $visitor->addData('previous_provider_reference', $media->getProviderReference()); $visitor->addData('length', $media->getLength()); $visitor->addData('id', $media->getId()); $visitor->addData('enabled', $media->getEnabled()); }
/** * 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); } }
public function onPostSerialize(ObjectEvent $event) { $object = $event->getObject(); if (method_exists($object, 'display')) { foreach ($event->getObject()->display() as $itemKey => $item) { if (is_object($item) && method_exists($item, 'count') && !is_string($item)) { try { $visitor = $event->getVisitor(); if ($visitor instanceof JsonSerializationVisitor) { $event->getVisitor()->addData($itemKey . '_count', $item->count()); } } catch (\Exception $e) { return; } } } } }
/** * 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)); }
/** * 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()); }
/** * 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)); }
/** * @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)); }
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); }
/** * 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); }
/** * 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()))); }
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())); }
public function onPostSerialize(ObjectEvent $event) { if (in_array('api', (array) $event->getContext()->attributes->get('groups'))) { return; } $object = $event->getObject(); $deviceDetector = $this->container->get('mobile_detect.mobile_detector'); $mediaFormat = 'big1300'; if ($deviceDetector->isMobile() || $deviceDetector->isTablet()) { $mediaFormat = 'big300'; } if ($deviceDetector->isTablet()) { $mediaFormat = 'medium'; } $provider = $this->container->get($object->getImage()->getProviderName()); $formatBig = $provider->getFormatName($object->getImage(), $mediaFormat); $formatLow = $provider->getFormatName($object->getImage(), 'big200'); $event->getVisitor()->addData('lowsrc', $provider->generatePublicUrl($object->getImage(), $formatLow)); $event->getVisitor()->addData('fullsrc', $provider->generatePublicUrl($object->getImage(), $formatBig)); }
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 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()); } } }
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); }
public function onPostSerialize(ObjectEvent $event) { $webspace = $event->getObject(); $visitor = $event->getVisitor(); $context = $event->getContext(); if (!$webspace instanceof Webspace) { return; } $this->appendPortalInformation($webspace, $context, $visitor); $this->appendUrls($webspace, $context, $visitor); $this->appendCustomUrls($webspace, $context, $visitor); $visitor->addData('allLocalizations', $webspace->getAllLocalizations()); }
public function onPostSerialize(ObjectEvent $event) { $analytics = $event->getObject(); if (!$analytics instanceof Analytics) { return; } if ($analytics->isAllDomains()) { $metadata = new PropertyMetadata($event->getType()['name'], 'domains'); $value = new \stdClass(); $value->domains = true; $event->getVisitor()->visitProperty($metadata, $value, $event->getContext()); } }