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;
 }