Problem/Motivation
Sometimes we need to respond on new image derivative creation.
Steps to reproduce
- Create an image style
- Upload a new image
- Call the uri of the new style
- The derivative image is generated, but there's no way to react to this, like sending some HTTP request to another system to inform about the new derivative image creation
Proposed resolution
Introduce a new hook_image_derivative_created(string $original_uri, string $style, string $derivative_uri) that can be implemented by other modules that will handle the derivative image creation.
Remaining tasks
Accept and commit.
User interface changes
None.
Introduced terminology
None.
API changes
Introduces new hook_image_derivative_created(string $original_uri, string $style, string $derivative_uri).
Data model changes
None.
Release notes snippet
Introduce new hook_image_derivative_created(string $original_uri, string $style, string $derivative_uri).
Comments
Comment #2
tikaszvince commentedComment #4
mondrakeRelated, #2986669: Split ImageStyle into the config entity and a separate event-based image processing service
Comment #13
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It either no longer applies to Drupal core, or fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
Apart from a re-roll or rebase, this issue may need more work to address feedback in the issue or MR comments. To progress an issue, incorporate this feedback as part of the process of updating the issue. This helps other contributors to know what is outstanding.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #14
efpapado commentedThe patch does apply on 10.1.x. Setting to Needs review and retesting.
Comment #15
efpapado commentedI'm proposing another patch, which has (almost) the same code as yours, but on a different class: Instead of invoking the hook on
ImageStyleDownloadController::deliver(), I invoke it onImageStyle::createDerivative()to make sure that the hook is invoked also when the derivative is created by other methods (for example through the image_style_warmer module).Comment #16
efpapado commentedFixed PHPCS problems.
Comment #17
smustgrave commentedThis issue is being reviewed by the kind folks in Slack, #needs-review-queue-initiative. We are working to keep the size of Needs Review queue [2700+ issues] to around 400 (1 month or less), following Review a patch or merge request as a guide.
Adding a new api will require a change record. An example is usually very helpful.
Issue summary should be updated to more clearly define the proposed solution and api change.
Will also need test coverage of the api working
Comment #20
efpapado commentedUpdated the patch for the 11.x branch, created a merge request, and created a draft change record.
Comment #21
efpapado commentedAfter some thought, I added another argument in the hook, which is the id of the image style. Although by default it can be derived from the derivative image uri, there can be cases where this is not possible (for example a custom implementation of an external file system like s3fs.)
Updated also the change record.
Comment #22
smustgrave commentedSending to NW for the open tags
Issue summary update and test coverage
Looking at the MR new api should be typehinted also.
Comment #23
efpapado commentedAdded type hints to api, added a test. Not sure about the issue summary update, isn't the change record enough?
Comment #24
smustgrave commentedNo issue summary is separate from a CR. Recommend using default issue template
Comment #25
efpapado commentedIs it ok now?
Comment #26
efpapado commentedComment #27
smustgrave commentedSummary yes
But tests are failing too btw.
Comment #28
efpapado commentedRemoved a useless assertion that was breaking the tests.
Comment #29
efpapado commentedSetting it back to needs work, the tests are failing, although they succeed locally. I will investigate further...