PHP code example of paneedesign / storage-bundle
1. Go to this page and download the library: Download paneedesign/storage-bundle library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
paneedesign / storage-bundle example snippets
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new \Fresh\DoctrineEnumBundle\FreshDoctrineEnumBundle(),
new \Liip\ImagineBundle\LiipImagineBundle(),
new \Knp\Bundle\GaufretteBundle\KnpGaufretteBundle(),
new \PaneeDesign\DiscriminatorMapBundle\PedDiscriminatorMapBundle(),
new \PaneeDesign\StorageBundle\PedStorageBundle(),
);
// ...
}
// ...
}
declare(strict_types=1);
namespace App\Handler;
use App\Entity\Media;
use Gaufrette\Extras\Resolvable\UnresolvableObjectException;
use PaneeDesign\StorageBundle\DBAL\EnumFileType;
use PaneeDesign\StorageBundle\DBAL\EnumMediaType;
use PaneeDesign\StorageBundle\Entity\Media as PedMedia;
use PaneeDesign\StorageBundle\Handler\MediaHandler;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Routing\RouterInterface;
class StorageHandler
{
/**
* @var RouterInterface
*/
protected $router;
/**
* @var MediaHandler
*/
private $mediaHandler;
/**
* MediaManager constructor.
*
* @param MediaHandler $mediaHandler
* @param RouterInterface $router
*/
public function __construct(MediaHandler $mediaHandler, RouterInterface $router)
{
$this->mediaHandler = $mediaHandler;
$this->router = $router;
}
/**
* @param PedMedia $media
* @param string|null $filter
*
* @return string
*/
public function generateAbsoluteUri(PedMedia $media, ?string $filter = null)
{
$url = '';
try {
if (null !== $filter) {
if ($media->hasFilter($filter)) {
$url = $media->getUrl($filter);
} else {
$url = $this->router->generate('ped_storage_image', [
'key' => $media->getKey(),
'filter' => $filter,
]);
}
} else {
$url = $this->mediaHandler->getFullUrl($media->getFullKey());
}
} catch (UnresolvableObjectException $e) {
} catch (\Exception $e) {
}
return $url ?: '';
}
/**
* @param int $entityId
* @param string $type
* @param UploadedFile $media
* @param PedMedia|null $image
* @param string|null $mediaType
*
* @throws \Exception
*
* @return Media
*/
public function storeImage(
int $entityId,
string $type,
UploadedFile $media,
?PedMedia $image = null,
?string $mediaType = EnumMediaType::PROFILE
): Media {
$hasPublicAccess = false;
$allowedMimeTypes = [
'image/jpeg',
'image/png',
'image/gif',
];
$uploader = $this->getUploader($entityId, $type, EnumFileType::IMAGE, $hasPublicAccess, $allowedMimeTypes);
if (null === $image) {
$image = new Media();
$image->setType($mediaType);
} else {
$image->clearFilters();
$uploader->remove($image);
}
$uploader->save($media);
$image = new Media();
$image->setKey($uploader->getKey());
$image->setPath($uploader->getFullKey(''));
$image->setFileType($uploader->getFileType());
$image->setSize($media->getSize());
$image->setIsPublic($uploader->getHasPublicAccess());
return $image;
}
/**
* @param int $entityId
* @param string $type
* @param UploadedFile $media
* @param PedMedia|null $document
* @param string|null $mediaType
*
* @throws \Exception
*
* @return Media
*/
public function storeDocument(
int $entityId,
string $type,
UploadedFile $media,
?PedMedia $document = null,
?string $mediaType = EnumMediaType::DOCUMENT
): Media {
$hasPublicAccess = true;
$allowedMimeTypes = [
'image/jpeg',
'image/png',
'image/gif',
'application/pdf',
];
$uploader = $this->getUploader($entityId, $type, EnumFileType::DOCUMENT, $hasPublicAccess, $allowedMimeTypes);
if (null === $document) {
$document = new Media();
$document->setType($mediaType);
} else {
$document->clearFilters();
$uploader->remove($document);
}
$uploader->save($media);
$document = new Media();
$document->setKey($uploader->getKey());
$document->setPath($uploader->getFullKey(''));
$document->setFileType($uploader->getFileType());
$document->setSize($media->getSize());
$document->setIsPublic($uploader->getHasPublicAccess());
return $document;
}
/**
* @param int $entityId
* @param string $type
* @param string $fileType
* @param array $allowedMimeTypes
* @param bool $hasPublicAccess
*
* @return MediaHandler
*/
private function getUploader(
int $entityId,
string $type,
string $fileType,
bool $hasPublicAccess,
array $allowedMimeTypes = []
): MediaHandler {
/* @var MediaHandler $uploader */
$uploader = $this->mediaHandler
->setId($entityId)
->setType($type)
->setFileType($fileType)
->setAllowedMimeTypes($allowedMimeTypes)
->setHasPublicAccess($hasPublicAccess);
return $uploader;
}
}