/** * @param Media $media */ public function delete(Media $media) { $em = $this->getEntityManager(); $media->setDeleted(true); $em->persist($media); $em->flush(); }
/** * @param Media $media The media entity * @param string $basepath The base path * * @return string */ public function getImageUrl(Media $media, $basepath) { if ($media->getUrl() === parse_url($media->getUrl(), PHP_URL_PATH)) { return $basepath . $media->getUrl(); } return $media->getUrl(); }
/** * @param Media $media * * @throws \RuntimeException when the file does not exist */ public function prepareMedia(Media $media) { if (null === $media->getUuid()) { $uuid = uniqid(); $media->setUuid($uuid); } $video = new RemoteVideoHelper($media); $code = $video->getCode(); //update thumbnail switch ($video->getType()) { case 'youtube': $video->setThumbnailUrl('http://img.youtube.com/vi/' . $code . '/0.jpg'); break; case 'vimeo': try { $xml = simplexml_load_file('http://vimeo.com/api/v2/video/' . $code . '.xml'); $video->setThumbnailUrl((string) $xml->video->thumbnail_large); } catch (\Exception $e) { } break; case 'dailymotion': try { $json = json_decode(file_get_contents('https://api.dailymotion.com/video/' . $code . '?fields=thumbnail_large_url')); $thumbnailUrl = $json->{'thumbnail_large_url'}; /* dirty hack to fix urls for imagine */ if (!$this->endsWith($thumbnailUrl, '.jpg') && !$this->endsWith($thumbnailUrl, '.png')) { $thumbnailUrl = $thumbnailUrl . '&ext=.jpg'; } $video->setThumbnailUrl($thumbnailUrl); } catch (\Exception $e) { } break; } }
/** * @covers Kunstmaan\MediaPagePartBundle\Entity\VideoPagePart::setMedia * @covers Kunstmaan\MediaPagePartBundle\Entity\VideoPagePart::getMedia */ public function testSetGetMedia() { $media = new Media(); $media->setId(5); $this->object->setMedia($media); $this->assertEquals(5, $this->object->getMedia()->getId()); }
/** * @param Media $media * * @return void */ public function saveMedia(Media $media) { if (!$media->getContent() instanceof File) { return; } $this->uploader->uploadMedia($media); }
/** * @param Media $media The media entity * @param string $basepath The base path * * @return string */ public function getImageUrl(Media $media, $basepath) { $filename = $this->pdfTransformer->getPreviewFilename($basepath . $media->getUrl()); if (!file_exists($this->webPath . $filename)) { return null; } return $filename; }
/** * @covers Kunstmaan\MediaBundle\Helper\File\PdfHandler::getImageUrl * @covers Kunstmaan\MediaBundle\Helper\File\PdfHandler::setWebPath */ public function testGetImageUrl() { $this->pdfTransformer->expects($this->any())->method('getPreviewFilename')->will($this->returnValue('/media.pdf.jpg')); $media = new Media(); $media->setUrl('/path/to/media.pdf'); $this->assertNull($this->object->getImageUrl($media, '/basepath')); $previewFilename = sys_get_temp_dir() . '/media.pdf.jpg'; $fileSystem = new Filesystem(); $fileSystem->touch($previewFilename); $media->setUrl('/media.pdf'); $this->object->setWebPath(sys_get_temp_dir()); $this->assertEquals('/media.pdf.jpg', $this->object->getImageUrl($media, '')); $fileSystem->remove($previewFilename); }
/** * @param File $file */ public function setFile(File $file) { $this->file = $file; $this->media->setContent($file); $this->media->setContentType($file->getMimeType()); $this->media->setUrl('/uploads/media/' . $this->media->getUuid() . '.' . $this->media->getContent()->getExtension()); }
/** * @param Media $media * * @throws \RuntimeException when the file does not exist */ public function prepareMedia(Media $media) { if (null === $media->getUuid()) { $uuid = uniqid(); $media->setUuid($uuid); } $audio = new RemoteAudioHelper($media); $code = $audio->getCode(); //update thumbnail switch ($audio->getType()) { case 'soundcloud': $scData = json_decode(file_get_contents('http://api.soundcloud.com/tracks/' . $code . '.json?client_id=' . $this->getSoundcloudApiKey())); $artworkUrl = $scData->artwork_url; $artworkUrl = str_replace('large.jpg', 't500x500.jpg', $artworkUrl); $audio->setThumbnailUrl($artworkUrl); break; } }
/** * @param Media $media * * @throws \RuntimeException when the file does not exist */ public function prepareMedia(Media $media) { if (null == $media->getUuid()) { $uuid = uniqid(); $media->setUuid($uuid); } $slide = new RemoteSlideHelper($media); $code = $slide->getCode(); // update thumbnail switch ($slide->getType()) { case 'slideshare': try { $json = json_decode(file_get_contents('http://www.slideshare.net/api/oembed/2?url=http://www.slideshare.net/slideshow/embed_code/' . $code . '&format=json')); $slide->setThumbnailUrl($json->thumbnail); } catch (\ErrorException $e) { // Silent exception - should not bubble up since failure to create a thumbnail is not a fatal error } break; } }
private function validateDimensions(MediaObject $value, Media $constraint) { $height = $value->getMetadataValue('original_height'); $width = $value->getMetadataValue('original_width'); if ($constraint->minHeight) { if (!ctype_digit((string) $constraint->minHeight)) { throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum height', $constraint->minHeight)); } if ($height < $constraint->minHeight) { $this->context->buildViolation($constraint->minHeightMessage)->setParameter('{{ height }}', $height)->setParameter('{{ min_height }}', $constraint->minHeight)->setCode(Media::TOO_LOW_ERROR)->addViolation(); return; } } if ($constraint->maxHeight) { if (!ctype_digit((string) $constraint->maxHeight)) { throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum height', $constraint->maxHeight)); } if ($height > $constraint->maxHeight) { $this->context->buildViolation($constraint->maxHeightMessage)->setParameter('{{ height }}', $height)->setParameter('{{ max_height }}', $constraint->maxHeight)->setCode(Media::TOO_HIGH_ERROR)->addViolation(); return; } } if ($constraint->minWidth) { if (!ctype_digit((string) $constraint->minWidth)) { throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum width', $constraint->minWidth)); } if ($width < $constraint->minWidth) { $this->context->buildViolation($constraint->minWidthMessage)->setParameter('{{ width }}', $width)->setParameter('{{ min_width }}', $constraint->minWidth)->setCode(Media::TOO_NARROW_ERROR)->addViolation(); return; } } if ($constraint->maxWidth) { if (!ctype_digit((string) $constraint->maxWidth)) { throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum width', $constraint->maxWidth)); } if ($width > $constraint->maxWidth) { $this->context->buildViolation($constraint->maxWidthMessage)->setParameter('{{ width }}', $width)->setParameter('{{ max_width }}', $constraint->maxWidth)->setCode(Media::TOO_WIDE_ERROR)->addViolation(); return; } } }
/** * @covers Kunstmaan\MediaBundle\Helper\File\FileHelper::getMedia */ public function testGetMedia() { $this->media->setId(1); $media = $this->object->getMedia(); $this->assertEquals($this->media, $media); }
/** * @param Folder $folder */ public function setFolder(Folder $folder) { $this->media->setFolder($folder); }
/** * @param mixed $data * * @return Media */ public function createNew($data) { if ($data instanceof File) { /** @var $data File */ $media = new Media(); if (method_exists($data, 'getClientOriginalName')) { $media->setOriginalFilename($data->getClientOriginalName()); } else { $media->setOriginalFilename($data->getFilename()); } $media->setContent($data); $contentType = $this->mimeTypeGuesser->guess($media->getContent()->getPathname()); $media->setContentType($contentType); return $media; } return null; }
/** * @covers Kunstmaan\MediaBundle\Entity\Media::getDescription * @covers Kunstmaan\MediaBundle\Entity\Media::setDescription */ public function testGetSetDescription() { $this->object->setDescription('Description of this picture'); $this->assertEquals('Description of this picture', $this->object->getDescription()); }
/** * * * @param Media $media * @return string */ private function getFilePath(Media $media) { $filename = $media->getOriginalFilename(); $filename = str_replace(array('/', '\\', '%'), '', $filename); if (!empty($this->blacklistedExtensions)) { $filename = preg_replace('/\\.(' . join('|', $this->blacklistedExtensions) . ')$/', '.txt', $filename); } $parts = pathinfo($filename); $filename = $this->slugifier->slugify($parts['filename']); if (array_key_exists('extension', $parts)) { $filename .= '.' . strtolower($parts['extension']); } return sprintf('%s/%s', $media->getUuid(), $filename); }
public function exists(Media $media) { return $this->storage->doesObjectExist($this->bucketName, ltrim(parse_url($media->getUrl(), PHP_URL_PATH), '/')); }
/** * @covers Kunstmaan\MediaBundle\Entity\Folder::getMedia */ public function testGetMedia() { $media = new Media(); $this->object->addMedia($media); $deletedMedia = new Media(); $deletedMedia->setDeleted(true); $this->object->addMedia($deletedMedia); $this->assertCount(1, $this->object->getMedia()); $this->assertCount(1, $this->object->getMedia(false)); $this->assertCount(2, $this->object->getMedia(true)); $folderMedia = $this->object->getMedia(false); $this->assertContains($media, $folderMedia); $this->assertNotContains($deletedMedia, $folderMedia); $folderMedia = $this->object->getMedia(true); $this->assertContains($media, $folderMedia); $this->assertContains($deletedMedia, $folderMedia); }
/** * @param Media $media The media entity * @param string $basepath The base path * * @return string */ public function getImageUrl(Media $media, $basepath) { return $basepath . $media->getUrl(); }