Exemplo n.º 1
0
 /**
  * @param array $data
  * @return Struct\Media
  */
 public function hydrate(array $data)
 {
     $media = new Struct\Media();
     if (isset($data['__media_id'])) {
         $media->setId((int) $data['__media_id']);
     }
     if (isset($data['__media_name'])) {
         $media->setName($data['__media_name']);
     }
     if (isset($data['__media_description'])) {
         $media->setDescription($data['__media_description']);
     }
     if (isset($data['__media_type'])) {
         $media->setType($data['__media_type']);
     }
     if (isset($data['__media_extension'])) {
         $media->setExtension($data['__media_extension']);
     }
     if (isset($data['__media_path'])) {
         $media->setFile($this->mediaService->getUrl($data['__media_path']));
     }
     /**
      * Live Migration to add width/height to images
      */
     if ($media->getType() == Struct\Media::TYPE_IMAGE && $this->mediaService->has($data['__media_path'])) {
         if (array_key_exists('__media_width', $data) && array_key_exists('__media_height', $data)) {
             if ($data['__media_width'] === null || $data['__media_height'] === null) {
                 list($width, $height) = getimagesizefromstring($this->mediaService->read($data['__media_path']));
                 $this->database->executeUpdate('UPDATE s_media SET width = :width, height = :height WHERE id = :id', [':width' => $width, ':height' => $height, ':id' => $data['__media_id']]);
                 $data['__media_width'] = $width;
                 $data['__media_height'] = $height;
             }
         }
     }
     if (isset($data['__media_width'])) {
         $media->setWidth((int) $data['__media_width']);
     }
     if (isset($data['__media_height'])) {
         $media->setHeight((int) $data['__media_height']);
     }
     if ($media->getType() == Struct\Media::TYPE_IMAGE && $data['__mediaSettings_create_thumbnails']) {
         $media->setThumbnails($this->getMediaThumbnails($data));
     }
     if (!empty($data['__mediaAttribute_id'])) {
         $attribute = $this->attributeHydrator->hydrate($this->extractFields('__mediaAttribute_', $data));
         $media->addAttribute('media', $attribute);
     }
     return $media;
 }
Exemplo n.º 2
0
 /**
  * @param array $data
  * @return Media
  */
 public function createMedia($data)
 {
     $media = new Media();
     $media->setId($data['id']);
     $media->setExtension($data['extension']);
     $media->setName($data['name']);
     $media->setPreview($data['preview']);
     $media->setType($data['type']);
     $media->setFile($data['file']);
     $media->setDescription($data['description']);
     $me = $this;
     $thumbnails = array_map(function ($thumbnailData) use($me) {
         return $me->createThumbnail($thumbnailData);
     }, $data['thumbnails']);
     $media->setThumbnails($thumbnails);
     $media->addAttributes($this->createAttributes($data['attributes']));
     return $media;
 }
Exemplo n.º 3
0
 /**
  * @param StoreFrontBundle\Struct\Media $media
  * @return array
  */
 public function convertMediaStruct(StoreFrontBundle\Struct\Media $media)
 {
     if (!$media instanceof StoreFrontBundle\Struct\Media) {
         return [];
     }
     $thumbnails = [];
     foreach ($media->getThumbnails() as $thumbnail) {
         $retina = null;
         $thumbnails[] = ['source' => $thumbnail->getSource(), 'retinaSource' => $retina, 'sourceSet' => $this->getSourceSet($thumbnail), 'maxWidth' => $thumbnail->getMaxWidth(), 'maxHeight' => $thumbnail->getMaxHeight()];
     }
     $data = array('id' => $media->getId(), 'position' => 1, 'source' => $media->getFile(), 'description' => $media->getName(), 'extension' => $media->getExtension(), 'main' => $media->isPreview(), 'parentId' => null, 'width' => $media->getWidth(), 'height' => $media->getHeight(), 'thumbnails' => $thumbnails);
     $attributes = $media->getAttributes();
     if ($attributes && isset($attributes['image'])) {
         $data['attribute'] = $attributes['image']->toArray();
         unset($data['attribute']['id']);
         unset($data['attribute']['imageID']);
     } else {
         $data['attribute'] = [];
     }
     return $this->eventManager->filter('Legacy_Struct_Converter_Convert_Media', $data, ['media' => $media]);
 }