Symfony Bundle to assist in imagine manipulation using the imagine library
MIT License
Bot releases are hidden (Show)
Published by michellesanver almost 5 years ago
Merged pull requests:
Published by michellesanver about 5 years ago
Published by maximgubar over 6 years ago
Published by robfrawley over 6 years ago
[Post Processor] [BC BREAK] The PostProcessorConfigurablePostProcessorInterface
interface has been completely removed and the PostProcessorInterface
interface has been updated to allow passing the configuration array to its process
method as the second parameter. The PostProcessorInterface::process()
now implements the following signature: process(BinaryInterface $binary, array $options = []): BinaryInterface
. All custom post processors in your project must be updated to match this new signature.
[Dependencies] The imagine/Imagine
dependency has been updated from the 0.6.x
series to require 0.7.1
or greater. If you project has a hard dependency on any prior version, you will need to update your dependencies.
[Form] The legacy setDefaultOptions()
and getName()
methods on Form/Type/ImageType
have been removed, as these methods are no longer required for Symfony. If using them, you will need to update your implementation.
[Dependency Injection] The DependencyInjection/Factory/ChildDefinitionTrait
trait has been removed, as it handled logic to support legacy Symfony versions no longer targeted.
[Dependency Injection] The compiler pass log
method signature has changed to log(ContainerBuilder $container, string $message, ...$replacements): void
. If you are extending AbstractCompilerPass
and using this protected method, you must update your usage.
[Dependency Injection] The default values for the liip_imagine.loaders.<name>.filesystem.data_root
and liip_imagine.resolvers.<name>.web_path.web_root
configuration options are now variable based on the Symfony version. For Symfony 4.0.0
and later, the value is %kernel.project_dir%/public
, and for prior releases (such as the Symfony 3.x
), the value is %kernel.project_dir%/web
. This should automatically provide a suitable default for the different directory structures of the 4.x
and 3.x
Symfony releases.
[Dependency Injection] [Filter] A new filter service abstraction is available as liip_imagine.service.filter
with a createFilteredBinary($path, $filter, array $runtimeFilters = [])
method to quickly get the filtered binary image and a getUrlOfFilteredImage($path, $filter, $resolver = null)
method to quickly resolve and get the filtered image URL.
[Data Loader] The FileSystemLoader::__construct()
method signature has changed in accordance with the prior deprecation notice; the third parameter must be of signature \Liip\ImagineBundle\Binary\Locator\LocatorInterface $locator
and the fourth parameter must be of signature array $dataRoots
.
[Data Loader] The GridFSLoader
data loader has been removed as the required mongo extension has been deprecated and will not be ported to PHP 7.x
.
[Dependency Injection] A new interface \Liip\ImagineBundle\DependencyInjection/Factory/FactoryInterface
has been introduced and is shared between the loaders (LoaderFactoryInterface
) and resolvers (ResolverFactoryInterface
).
[Dependency Injection] All class name parameters have been removed from the service definitions. Instead of overwriting the class name parameters to provide your own implementation, use service decoration.
[Data Transformer] The data transformer interface (\Liip\ImagineBundle\Imagine\Data\Transforme\TransformerInterface
) was deprecated in version 1.x
and has been removed.
[Templating] The imagine extension \Liip\ImagineBundle\Templating\ImagineExtension
has been renamed to FilterExtension
. Similarly, the template helper \Liip\ImagineBundle\Templating\Helper\ImagineHelper
has been renamed to FilterHelper
.
[Utility] The \Liip\ImagineBundle\Utility/Framework/SymfonyFramework::hasDefinitionSharing()
method has been removed due to our higher Symfony requirements rending it unnecessary.
[General] The use of fully-qualified class name strings is no longer supported and the ::class
compile-time class constant is now used.
[Enqueue] Enqueue's producer send() method has been deprecated and will be removed, use sendCommand() instead. When interacting with the producer to resolve images in the background you must make the following changes to your code:
<?php
// 1.0
$producer->send(\Liip\ImagineBundle\Async\Topics::RESOLVE_CACHE /* ... */);
// 2.0
$producer->sendCommand(\Liip\ImagineBundle\Async\Commands::RESOLVE_CACHE /* ... */);
Published by robfrawley about 7 years ago
[Console] [BC BREAK] The resolve command's --as-script
/-s
option name/shortcut conflicted with Symfony 2.x core console options (specifically --shell
/-s
) and has been renamed to --machine-readable
/-m
(fixes #988). The -s
option shortcut was the only conflict, but the --as-script
option name proved confusing and unclear so it too was renamed.
[Console] The output formatting for the remove
command has been updated and aligned with the behavior previously introduced in 1.9.0
for the resolve
command, making both of them consistent and in-line with the expected 2.0.0
output. The --machine-readable
/-m
option name/shortcut has now been added to the remove
command as well, enabling predictable, consistent, script parseable output stripped of text styles and supplemental formatting.
Published by robfrawley about 7 years ago
FileSystemLoader
class constructor have changed. Passing an array of roots as the third parameter and an (optional) LocatorInterace
as the fourth parameter is deprecated. A LocatorInterface
should now be passed as third parameter, and the array of roots to the LocatorInterface::__construct()
method directly. All prior signatures will continue to work until 2.0
is release.--force
parameter to resolve console command to force image resolution regardless of cache. Added the --as-script
parameter to resolve console command to disable verbose, "prettified" output.Published by robfrawley over 7 years ago
Resources/config/routing.xml
file has been deprecated and will be removed in 2.0
. Use the new YAML variant moving forward Resources/config/routing.yaml
.Published by robfrawley over 7 years ago
No upgrade notes for this release.
Published by robfrawley over 7 years ago
[Data Loader] The FileSystemLoader
now allows you to assign keys to data roots, and directly reference them when requesting resources.
# provide index for data roots
liip_imagine:
loaders:
default:
filesystem:
data_root:
foo: /path/to/foo
bar: /path/to/bar
Assume you have a file name file.ext
in both data root paths. Given the above configuration, you can specifically request the file from the /path/to/foo
root using the following file syntax: @foo:file.ext
. Similarly, you can request the same file from /path/to/bar
using @bar:file.ext
. Note, that the auto-registered bundles (detailed below) are given indexes of their short bundle name (for example, given the bundle FooBundle
, you can request a file from its public resources path via @FooBundle:path/to/file.ext
).
[Data Loader] The FileSystemLoader
now supports automatically registering the Resources/public
folders within all loaded bundles. This can be enabled via the following configuration.
# enable bundle auto-registration
liip_imagine:
loaders:
default:
filesystem:
bundle_resources:
enabled: true
Additionally, you can whitelist or blacklist specific bundles from the auto-registration routine.
# blacklist "FooBundle" from auto-registration
liip_imagine:
loaders:
default:
filesystem:
bundle_resources:
enabled: true
access_control_type: blacklist
access_control_list:
- FooBundle
# whitelist "BarBundle" from auto-registration
liip_imagine:
loaders:
default:
filesystem:
bundle_resources:
enabled: true
access_control_type: whitelist
access_control_list:
- BarBundle
[Data Locator] The *Locator
services passed to FileSystemLoader
are now marked as "non-shared" or "prototype" within the DI container, resulting in new instances being passed every time the services are requested.
Published by robfrawley over 7 years ago
[Data Loader] The FileSystemLoader
's resource locator has been abstracted out into FileSystemLocator
(provides the same realpath
-based locator algorithm introduced in the 1.7.0
release) and FileSystemInsecureLocator
(provides the old locator algorithm from version 1.6.x
and prior).
The latter implementation can present security concerns, as it will blindly following symbolic links, including those that point outside your configured data_root
directory(ies). It is not recommended unless your deployment process relies heavily on multi-level symbolic links that renders the new locator difficult (and sometime impossible) to
setup.
[Deprecation] [Data Loader] Instantiating FileSystemLoader
without providing a forth constructor argument of signature \Liip\ImagineBundle\Binary\Locator\LocatorInterface $locator
is deprecated and the ability to do so will be removed in the next major release, 2.0
.
[Configuration] The liip_imagine.loaders.default.filesystem.locator
bundle configuration option has been introduced and allows the following enum
values: filesystem
and filesystem_insecure
. These correspond to the aforementioned FileSystemLocator
and FileSystemInsecureLocator
resource locator implementations that affect the behavior of FileSystemLoader
. This option defaults to filesystem
.
# use the current, default locator algorithm
liip_imagine:
loaders:
default:
filesystem:
locator: filesystem
# use the old (pre 0.7.x) locator algorithm
liip_imagine:
loaders:
default:
filesystem:
locator: filesystem_insecure
[Dependency Injection] All compiler passes (filters, post-processors, data loaders, cache resolvers, etc) have been updated to log their behavior, allowing you to easily debug tagged services, including both core-provided and custom services defined by your application). In Symfony >= 3.2
this output is located in the var/cache/[dev|prod|env]/app*ProjectContainerCompiler.log
file. Output will be similar to the following example on a fresh install.
LoadersCompilerPass: Registered imagine-bimdle binary loader: liip_imagine.binary.loader.default
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.relative_resize
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.resize
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.thumbnail
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.crop
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.grayscale
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.paste
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.watermark
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.background
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.strip
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.scale
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.upscale
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.downscale
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.auto_rotate
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.rotate
FiltersCompilerPass: Registered imagine-bimdle filter loader: liip_imagine.filter.loader.interlace
PostProcessorsCompilerPass: Registered imagine-bimdle filter post-processor: liip_imagine.filter.post_processor.jpegoptim
PostProcessorsCompilerPass: Registered imagine-bimdle filter post-processor: liip_imagine.filter.post_processor.optipng
PostProcessorsCompilerPass: Registered imagine-bimdle filter post-processor: liip_imagine.filter.post_processor.pngquant
PostProcessorsCompilerPass: Registered imagine-bimdle filter post-processor: liip_imagine.filter.post_processor.mozjpeg
ResolversCompilerPass: Registered imagine-bimdle cache resolver: liip_imagine.cache.resolver.default
ResolversCompilerPass: Registered imagine-bimdle cache resolver: liip_imagine.cache.resolver.no_cache_web_path
Published by robfrawley over 7 years ago
[Data Loader] The FileSystemLoader
data loader performs a more robust security check against image resource paths to ensure they reside within the defined data root path(s). If utilizing symbolic links, you should reference the troubleshooting guide at the end of this upgrade notice.
[Data Loader] The FileSystemLoader
data loader now accepts an array of paths (as strings) for its third constructor argument, enabling the loader to check multiple paths for the requested image resource. Note that this change creates a BC break for those relying on the protected class property FileSystemLoader::$dataRoot
, whose type has changed to string[]
and has been renamed to $dataRoots
(plural).
[Configuration] The liip_imagine.loaders.default.filesystem.data_root
configuration option now accepts an array of paths (as strings), or a single string path (to preserve BC). This change allows the filesystem
data loader to check multiple data root paths for the requested image resource. The following YML configuration provides examples using both a string and an array for the value.
# provide an array of scalar paths
liip_imagine:
loaders:
default:
filesystem:
data_root:
- /multiple/root/paths/foo
- /multiple/root/paths/bar
# provide an single scalar path
liip_imagine:
loaders:
default:
filesystem:
data_root: /single/root/path
[Troubleshooting] If you are using the FileSystemLoader
data loader in conjunction with symbolic links that point outside the data_root
(which defaults to %kernel.root_dir%/../web
) then you are required to set all outside resource paths under the data_root
option.
The following is a list of the most common exception error messages encountered when the data_root
option is not correctly configured
The full option key for data_root
is
liip_imagine.loaders.default.filesystem.data_root
Published by alexwilson almost 8 years ago
Published by lsmith77 about 8 years ago
Note this release requires a higher minimal version of the imagine library "imagine/Imagine": "^0.6.3,<0.7",
Published by makasim over 8 years ago
Published by makasim over 8 years ago
Published by makasim over 8 years ago
Published by makasim over 8 years ago
Published by makasim almost 9 years ago
Published by makasim almost 9 years ago
Published by makasim almost 9 years ago