Releases: plank/laravel-mediable
Releases · plank/laravel-mediable
6.1.3
What's Changed
- Migration Class Refactor and Column Existence Check by @anilkumarthakur60 in #358
Full Changelog: 6.1.2...6.1.3
6.1.2
What's Changed
- Fix publish add_alt_to_media migration by @jason-nabooki in #353
New Contributors
- @jason-nabooki made their first contribution in #353
Full Changelog: 6.1.1...6.1.2
6.1.1
- Fix typo in driver class FQCN
Full Changelog: 6.1.0...6.1.1
6.1.0
What's Changed
- Attempt to automatically select an intervention/image driver by @frasmage in #352
- Fix an error in package discovery if attempting to install both
plank/laravel-mediable
andintervention/image-laravel
at the same time
Full Changelog: 6.0.5...6.1.0
6.0.5
6.0.4
- Fix alt migration default value for the mysql dialect
Full Changelog: 6.0.3...6.0.4
6.0.3
6.0.2
6.0.1
- Fix readthedocs documentation build configuration
Full Changelog: 6.0.0...6.0.1
6.0.0
What's Changed
Version 6.0 contains numerous long-requested feature additions, quality of life improvements and optimizations under the hood.
Compatibility
- Dropped support for PHP 7.4 and 8.0
- Dropped Support for Laravel 8 and 9
- Added Support for PHP 8.3
- Added Support for Laravel 11
- Added support for intervention/image 3.0
- Modernized the database migration files to use more recent Laravel conventions.
Mediable
- Added
MediableInterface
which lists all methods added by the trait
MediaUploader
- Added support for recording alt attributes on Media (database migration required). MediaUploader now exposes a
withAltAttribute()
method to set the alt attribute on the generated media record. - Added
MediaUploader::applyImageManipulation()
to make changes to the original uploaded image during the upload process. - Added
MediaUploader::validateHash()
to ensure that the hash of the uploaded file matches a particular value during upload. Supports any hashing algorithm supported by PHP'shash()
function. - By default, the MediaUploader will always use the MIME type inferred from the file contents, regardless of the source. Added the
MediaUploader::preferClientMimeType()
to indicate that the MIME type provided by the source should be used instead, if provided. The default behaviour can be configured with the'prefer_client_mime_type'
key in theconfig/mediable.php
file. - The
MediaUploader::useHashForFilename()
method now accepts an optional parameter to specify which hashing algorithm to use to generate the filename. Supports any hashing algorithm supported by PHP'shash()
function. - MediaUploader will now use the visibility defined on the filesystem disk config if the
makePublic()
/makePrivate()
methods are not called, instead of assuming public visibility. - MediaUploader now supports data URL strings as an input source, e.g.
data:image/jpeg;base64,...
. - If a filename is not provided to the MediaUploader, and none can be inferred from the source, the uploader will throw an exception.
- If the file extension is not available from the source, the uploader will now consistently infer it from the MIME type. Previously this behaviour was inconsistent across different source adapters.
SourceAdapters
All SourceAdapter classes have been significantly refactored.
- All sourceAdapters will now never load the entire file contents into memory (unless it is already in memory) to determine metadata about the file, in order to avoid memory exhaustion when dealing with large files. If reading the file is necessary, most adapters will attempt use a single streamed scan of the file to load all metadata at once, to speed up to the precess. Remote files will be cached to
temp://
to avoid repeated HTTP requests. - Removed
getStreamResource()
method. The method has been replaced with thegetStream(): StreamInterface
, which returns a PSR-7 stream implementation instead. - Added
hash(string $algo): string
method which is expected to return the hash of the file contents using the specified algorithm. - The return type of the
filename()
andextension()
method is now nullable. If the adapter cannot determine the value from the information available, it should return null. - Removed the
getContents()
method. ThegetStream()->getContents()
method may be used instead. - Removed the
getSource()
method. No replacement. - Removed the
path()
method. No replacement. - Removed the
valid()
method. SourceAdapters should now throw an exception with a more helpful message from the constructor if the source is not valid.
ImageManipulation
- Added support for optimizing manipulated images, using the spatie/image-optimizer package, which supports a variety of image optimization tools for different image formats (
jpegoptim
,pngquant
,optipng
,gifsicle
, etc.) - Default image optimization behaviour can configured in the
config/mediable.php
file to specify the optimization tools to use and their arguments. - Added
ImageManipulation::noOptimization()
andImageManipulation::optimize(?array $optimizers = null)
methods to allow overriding the defaults set in the config file. - The
ImageManipulation::useHashForFilename()
method now accepts an optional parameter to specify which hashing algorithm to use to generate the filename. Supports any hashing algorithm supported by PHP'shash()
function. - The
ImageManipulation::usingHashForFilename()
method has been renamed toImageManipulation::isUsingHashForFilename()
to avoid confusion with theuseHashForFilename()
method.
Media
- Added
alt
attribute to the Media model. - The Media class now exposes a dynamic
url
attribute which will generate a URL for the file (equivalent to thegetUrl()
method).
Other
- Improved
MediableCollection
annotions to support generic types. - Added missing type declarations to most property and method signatures.
- Removed the
\Plank\Mediable\Stream
class in favor of theguzzlehttp/psr7
implementation. This removes the direct dependency on thepsr/http-message
library. \Plank\Mediable\HandlesMediaUploadExceptions::transformMediaUploadException()
parameter and return type changed from\Exception
to\Throwable
.- Added PHPStan static analysis to the test suite.
New Contributors
- @Sparclex made their first contribution in #322
- @anilkumarthakur60 made their first contribution in #336
- @karmendra made their first contribution in #340
- @abbasudo made their first contribution in #327
Full Changelog: 5.9.1...6.0.0