Problem/Motivation

Hello project maintainers,
This is an automated issue to help make this module compatible with Drupal 9.

To read more about this effort by the Drupal Association, please read: Accelerating Drupal 9 module and theme readiness with automated patches

Periodically patches will be added to this issue that remove Drupal 9 deprecations. To stop further patches from being posted simply close this issue(any status besides Active, Needs Review or Needs work) or remove the "ProjectUpdateBotD9" tag from the issue.

The patches will be posted by the Project Update Bot official user account. This account will not receive any issue credit contributions for itself or any company.

Proposed resolution

You have a few options for how to use this issue:

  1. Accept automated patches until this issue is closed

    If this issue is left open(status of Active, Needs Review or Needs work) and the "ProjectUpdateBotD9" tag is left on this issue, new patches will be posted periodically if new deprecations are needed.

    As the Drupal Rector project improves and is able to fix more deprecations the patches posted here will cover more of the deprecations in the module.

  2. Leave open but stop new automated patches.

    If you want to use this issue as a starting point to remove deprecations but don't want new automated patches simply leave this issue open but remove the "ProjectUpdateBotD9" from the issue.

    You can use Drupal Rector yourself to make these patches.

    If you want to receive automated patches again simply add back the "ProjectUpdateBotD9" tag.

  3. Close it and don't use it

    If the maintainers of this project don't find this issue useful they can simply close this issue(any status besides Active, Needs Review or Needs work) and no more automated patches will be posted here.

    If the issue is reopened then new automated patches will be posted.

    If you are using another issue(s) to work on Drupal 9 compatibility it may be useful to other contributors to add those issues as "Related issues" when closing this issue.

Remaining tasks

Using the patches

  1. Apply the patch in the comment by Project Update Bot
  2. Thoroughly test the patch. These patches are automatically generated so they haven't been tested manually or automatically.

Providing feedback

If there are problems with one of the patches posted by the Project Update Bot, such as it does not correctly replace a deprecation, you can file an issue in the Rector issue queue. For other issues with the bot, for instance if the issue summary created by the bot is unclear,  use the Infrastructure project issue queue using the component “Bot: Drupal Rector”.

Comments

Project Update Bot created an issue. See original summary.

project update bot’s picture

Status: Active » Needs review
StatusFileSize
new13.7 KB

This is an automated patch generated by Drupal Rector. Please see the issue summary for more details.

It is important that any automated tests available are run with this patch and that you manually test this patch.

Drupal 9 Compatibility

According to the Upgrade Status module, even with this patch, this module is not yet compatible with Drupal 9.

Currently Drupal-Rector, version 0.5.6, cannot fix all Drupal 9 compatibility problems.

This patch does not update the info.yml file for Drupal 9 compatibility.

Leaving this issue open, even after committing the current patch, will allow the Project Update Bot to post additional Drupal 9 compatibility fixes as they become available in Drupal-Rector.

Debug info

Bot run #1478

This patch was created using these packages:

  1. mglaman/phpstan-drupal: 0.12.3
  2. palantirnet/drupal-rector: 0.5.6
  3. rector/rector-prefixed: v0.7.29
jacobbell84’s picture

Issue summary: View changes
StatusFileSize
new55.96 KB

I'm taking a stab at getting the module updated for D9. Aside from the automated fixes, I made a couple other changes.

  1. The PHP warnings that are causing the tests to fail were also causing the D9 install to have errors. I refactored the module to use a hash of the target_uri as a key instead of the target_uri itself, which lets us avoid putting a length on the index, so that issue 3068310 no longer comes into play anymore. This is the same approach the migrate module uses to keep track of source ids.
  2. Converted all the array references to use short array syntax, per Drupal standards.
  3. Converted the non-hook functions in the image_replace.module to be functions in two services instead, so we can take advantage of dependency injection a little more.
  4. Removed the old view and rules .inc files to avoid confusion, since they aren't functional in D8

Status: Needs review » Needs work

The last submitted patch, 3: image_replace-d9.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

jacobbell84’s picture

Status: Needs work » Needs review
StatusFileSize
new56.46 KB

Fixing test issues.

znerol’s picture

Thanks a lot @jacobbell84 this is very much appreciated.

jacobbell84’s picture

StatusFileSize
new58.28 KB

No problem! Attached patch addresses some coding standard issues that the test runner flagged.

jacobbell84’s picture

StatusFileSize
new58.3 KB

Hopefully last patch, fixing the dependency format in the info file. @znerol, now that we have test coverage again, and assuming there's no issues with the patch, could we have this be a beta release of the module vs keeping it on the dev branch? Sometimes with clients it's a hard sell to use modules that are dev only releases.

steveoriol’s picture

+1 for a beta release,
for example, if we install this patch the patch for the media support "image_replace-support-core-media-module-5.patch" no longer installs, and vice versa...

jacobbell84’s picture

@steveoriol, exactly, planning on re-rolling that patch as soon as this one makes it in.

znerol’s picture

StatusFileSize
new55.58 KB
new14.97 KB

Thanks again for the contributions. I've changed some things before commit:

  • During the update, drop the primary key after migrating the entries. Otherwise the DELETE queries will potentially result in a full table scan. (really only a nitpik)
  • Revert ImageReplaceHelper. I'm not gonna go into the details here about the proper design of object oriented systems. Moving procedural code into a helper class does not improve the situation at all, and it has nothing to do with object oriented design. No intention to offend anyone here.
  • Rework ImageReplaceStorage into ImageReplaceStorageInterface and ImageReplaceStorageInterface
  • Ensure that tests pass without deprecation warnings in both D8.9.x and D9.0.x
znerol’s picture

Title: Automated Drupal 9 compatibility fixes » Drupal 9 compatibility

  • znerol committed 58dc088 on 8.x-1.x
    Issue #3147793 by jacobbell84, znerol: Drupal 9 compatibility
    
znerol’s picture

Status: Needs review » Fixed

Done! Thanks @jacobbell84

jacobbell84’s picture

Thank you for the quick turnaround!

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

jacobbell84’s picture