Change record status: 
Project: 
Introduced in branch: 
8.x-3.x
Introduced in version: 
8.x-3.3
Description: 

The \Drupal\feeds\Plugin\Type\ExternalPluginFormInterface interface has been deprecated and will be removed in feeds:4.0.0. Feeds has only every used this interface in the pre-alpha stage and for a long time now this interface has no purpose. But documentation in the code still suggested to use it.

Impact:

Form classes for Feeds plugins (fetcher, parser, processor) that implement ExternalPluginFormInterface will need to be updated.

Actions required:

  • Form classes should implement \Drupal\Core\Plugin\PluginFormInterface instead of ExternalPluginFormInterface.
  • For dependency injection, form classes should implement \Drupal\Core\DependencyInjection\ContainerInjectionInterface with a create() method that takes only ContainerInterface as a parameter.
  • The plugin will be set via \Drupal\feeds\Plugin\PluginAwareInterface::setPlugin() if that interface is implemented.

Example migration:

Before:

use Drupal\feeds\Plugin\Type\ExternalPluginFormInterface;

class MyForm implements ExternalPluginFormInterface {
  public static function create(ContainerInterface $container, FeedsPluginInterface $plugin) {
    return new static();
  }
}

After:

use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Plugin\PluginFormInterface;
use Drupal\feeds\Plugin\PluginAwareInterface;

class MyForm implements PluginFormInterface, ContainerInjectionInterface, PluginAwareInterface {
  protected $plugin;

  public static function create(ContainerInterface $container) {
    return new static();
  }

  public function setPlugin(FeedsPluginInterface $plugin) {
    $this->plugin = $plugin;
  }
}
Impacts: 
Module developers