Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function validate($value, Constraint $constraint)
 {
     $formats = $this->pool->getFormatNamesByContext($value->getContext());
     if (!$value instanceof GalleryInterface) {
         $this->context->addViolationAtPath('defaultFormat', 'Invalid instance, expected GalleryInterface');
     }
     if (!array_key_exists($value->getDefaultFormat(), $formats)) {
         $this->context->addViolation('invalid format');
     }
 }
 /**
  * {@Inheritdoc}
  * @param Image $image
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  */
 public function getAdditionalData($image)
 {
     $media = $image->getFile();
     $provider = $this->sonataMediaPool->getProvider($media->getProviderName());
     $formatNames = $this->sonataMediaPool->getFormatNamesByContext($media->getContext());
     $thumbnails = [];
     foreach ($formatNames as $formatName => $details) {
         $thumbnails[$formatName] = $this->generateFullPublicUrl($provider->generatePublicUrl($media, $formatName));
     }
     $reference = $this->generateFullPublicUrl($provider->generatePublicUrl($media, 'reference'));
     return ['url' => $reference, 'thumbnails' => $thumbnails];
 }
Exemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function validate($value, Constraint $constraint)
 {
     $formats = $this->pool->getFormatNamesByContext($value->getContext());
     if (!$value instanceof GalleryInterface) {
         // Interface compatibility, support for LegacyExecutionContextInterface can be removed when support for Symfony <2.5 is dropped
         if ($this->context instanceof LegacyExecutionContextInterface) {
             $this->context->addViolationAt('defaultFormat', 'Invalid instance, expected GalleryInterface');
         } else {
             $this->context->buildViolation('Invalid instance, expected GalleryInterface')->atPath('defaultFormat')->addViolation();
         }
     }
     if (!array_key_exists($value->getDefaultFormat(), $formats)) {
         $this->context->addViolation('invalid format');
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function configureFormFields(FormMapper $formMapper)
 {
     // define group zoning
     $formMapper->with($this->trans('Gallery'), array('class' => 'col-md-9'))->end()->with($this->trans('Options'), array('class' => 'col-md-3'))->end();
     $context = $this->getPersistentParameter('context');
     if (!$context) {
         $context = $this->pool->getDefaultContext();
     }
     $formats = array();
     foreach ((array) $this->pool->getFormatNamesByContext($context) as $name => $options) {
         $formats[$name] = $name;
     }
     $contexts = array();
     foreach ((array) $this->pool->getContexts() as $contextItem => $format) {
         $contexts[$contextItem] = $contextItem;
     }
     $formMapper->with('Options')->add('context', 'sonata_type_translatable_choice', array('choices' => $contexts, 'catalogue' => 'SonataMediaBundle'))->add('enabled', null, array('required' => false))->add('name')->add('defaultFormat', 'choice', array('choices' => $formats))->end()->with('Gallery')->add('galleryHasMedias', 'sonata_type_collection', array('cascade_validation' => true), array('edit' => 'inline', 'inline' => 'table', 'sortable' => 'position', 'link_parameters' => array('context' => $context), 'admin_code' => 'sonata.media.admin.gallery_has_media'))->end();
 }
 /**
  * Serialize images styles if the provider is an image type
  *
  * @param ObjectEvent $event
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $visitor = $event->getVisitor();
     $object = $event->getObject();
     $context = $event->getContext();
     if ($object instanceof Media) {
         $styles = [];
         $provider = $this->mediaPool->getProvider($object->getProviderName());
         $formats = $this->mediaPool->getFormatNamesByContext($object->getContext());
         if (is_array($formats)) {
             foreach ($formats as $formatName => $format) {
                 $styles[$formatName] = $provider->generatePublicUrl($object, $formatName);
             }
         }
         $visitor->addData('src', $provider->generatePublicUrl($object, 'reference'));
         $visitor->addData('styles', $styles);
     }
 }
 /**
  * Returns media urls for each format.
  *
  * @ApiDoc(
  *  requirements={
  *      {"name"="id", "dataType"="integer", "requirement"="\d+", "description"="media id"}
  *  },
  *  statusCodes={
  *      200="Returned when successful",
  *      404="Returned when media is not found"
  *  }
  * )
  *
  * @param $id
  *
  * @return array
  */
 public function getMediumFormatsAction($id)
 {
     $media = $this->getMedium($id);
     $formats = array('reference');
     $formats = array_merge($formats, array_keys($this->mediaPool->getFormatNamesByContext($media->getContext())));
     $provider = $this->mediaPool->getProvider($media->getProviderName());
     $properties = array();
     foreach ($formats as $format) {
         $properties[$format]['url'] = $provider->generatePublicUrl($media, $format);
         $properties[$format]['properties'] = $provider->getHelperProperties($media, $format);
     }
     return $properties;
 }