jdz/mediamanager

JDZ media manager

Maintainers

Package info

github.com/joffreydemetz/mediaManager

Homepage

pkg:composer/jdz/mediamanager

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-07-11 13:29 UTC

This package is auto-updated.

Last update: 2026-07-13 07:21:01 UTC


README

Framework-agnostic media utilities: file/image upload with automatic resize, and media-folder trees for pickers (images / documents).

Installation

composer require jdz/mediamanager

Upload

JDZ\MediaManager\Upload validates an uploaded file (mime, extension, weight), slugs the filename, moves it into place and downscales large images in-place (GD via Imagine, EXIF autorotate).

use JDZ\MediaManager\Upload;

$upload = new Upload();
$upload->path = '/path/to/public/media/photos/';
$upload->overwrite = false;
$upload->maxPictureLongSide = 1800;

$upload->upload($request->files->get('file')); // Symfony UploadedFile
echo $upload->filename; // slugged, unique, resized if needed

Throws \Exception on unauthorized mime, oversized file or move failure.

Trees

ImageTree builds a nested folders/files structure; DocumentTree builds a flat list with per-type icons. Both skip entries whose basename starts with _, and accept ignore lists.

use JDZ\MediaManager\Tree\ImageTree;
use JDZ\MediaManager\Tree\DocumentTree;

$images = (new ImageTree())
  ->setBasePath($publicPath . 'media/')
  ->setBaseUrl('../media/')
  ->setIgnoreFolders(['template'])
  ->setIgnoreFiles(['share.jpg'])
  ->getTree();
// ['folders' => [['label','path','files' => [...]], ...], 'files' => [['url','id','title','ext'], ...]]

$documents = (new DocumentTree())
  ->setBasePath($publicPath . 'media/')
  ->setBaseUrl('../media/')
  ->getTree();
// [['id','title','text','icon','url','ext'], ...]

Paths are normalized to forward slashes on every platform (Symfony\Filesystem\Path::normalize).

Tests

composer test

License

MIT — see LICENSE.