/** * @param Media $media * * @return Media */ public function addFormatsAndUrl(Media $media) { // Get preview image and set either preview thumbnails if set, else rendered images /** @var \Sulu\Bundle\MediaBundle\Entity\Media $previewImage */ $previewImage = $media->getEntity()->getPreviewImage(); if ($previewImage !== null) { /** @var FileVersion $latestVersion */ $latestVersion = null; /** @var File $file */ foreach ($previewImage->getFiles() as $file) { $latestVersion = $file->getLatestFileVersion(); // currently only one file per media exists break; } if ($latestVersion !== null) { $media->setFormats($this->formatManager->getFormats($previewImage->getId(), $latestVersion->getName(), $latestVersion->getStorageOptions(), $latestVersion->getVersion(), $latestVersion->getMimeType())); } } else { $media->setFormats($this->formatManager->getFormats($media->getId(), $media->getName(), $media->getStorageOptions(), $media->getVersion(), $media->getMimeType())); } // Set Version Urls $versionData = []; foreach ($media->getFile()->getFileVersions() as $fileVersion) { $versionData[$fileVersion->getVersion()] = []; $versionData[$fileVersion->getVersion()]['url'] = $this->getUrl($media->getId(), $fileVersion->getName(), $fileVersion->getVersion()); } $media->setAdditionalVersionData($versionData); // set properties $properties = $media->getFileVersion()->getProperties(); if ($properties !== null) { $media->setProperties($properties); } // Set Current Url if (isset($versionData[$media->getVersion()]) && isset($versionData[$media->getVersion()]['url'])) { $media->setUrl($versionData[$media->getVersion()]['url']); } return $media; }
/** * Data can be set over by array. * * @param $media * @param $data * @param UserInterface $user * * @return Media */ protected function setDataToMedia(Media $media, $data, $user) { foreach ($data as $attribute => $value) { if ($value || $attribute === 'tags' && $value !== null || $attribute === 'size' && $value !== null) { switch ($attribute) { case 'size': $media->setSize($value); break; case 'title': $media->setTitle($value); break; case 'description': $media->setDescription($value); break; case 'version': $media->setVersion($value); break; case 'name': $media->setName($value); break; case 'url': $media->setUrl($value); break; case 'formats': $media->setFormats($value); break; case 'storageOptions': $media->setStorageOptions($value); break; case 'publishLanguages': $media->setPublishLanguages($value); break; case 'contentLanguages': $media->setContentLanguages($value); break; case 'tags': $media->removeTags(); if (count($value)) { foreach ($value as $tag) { $tagEntity = $this->tagManager->findOrCreateByName($tag, $user->getId()); $media->addTag($tagEntity); } } break; case 'properties': $media->setProperties($value); break; case 'changed': $media->setChanged($value); break; case 'created': break; case 'changer': if ($value instanceof UserInterface) { $media->setChanger($value); } break; case 'creator': if ($value instanceof UserInterface) { $media->setCreator($value); } break; case 'mimeType': $media->setMimeType($value); break; case 'collection': $collectionEntity = $this->getCollectionById($value); $media->setCollection($collectionEntity); // set parent break; case 'type': if (isset($value['id'])) { $type = $this->typeManager->get($value['id']); $media->setType($type); } break; } } } return $media; }