diff --git a/core/core.services.yml b/core/core.services.yml index 2f04124..900acdb 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -764,7 +764,8 @@ services: - { name: event_subscriber } image.toolkit.manager: class: Drupal\Core\ImageToolkit\ImageToolkitManager - arguments: ['@container.namespaces', '@cache.discovery', '@config.factory', '@module_handler', '@image.toolkit.operation.manager', '@logger.channel.image'] + arguments: ['@config.factory'] + parent: default_plugin_manager image.toolkit.operation.manager: class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager arguments: ['@logger.channel.image'] diff --git a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitBase.php b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitBase.php index 454a91a..d56a560 100644 --- a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitBase.php +++ b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitBase.php @@ -13,7 +13,6 @@ use Drupal\Core\Image\ImageInterface; use Drupal\Core\Plugin\PluginBase; use Psr\Log\LoggerInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; abstract class ImageToolkitBase extends PluginBase implements ImageToolkitInterface { @@ -59,37 +58,19 @@ * The toolkit operation manager. * @param \Psr\Log\LoggerInterface $logger * A logger instance. + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The config factory. */ - public function __construct(array $configuration, $plugin_id, array $plugin_definition, ImageToolkitOperationManagerInterface $operation_manager, LoggerInterface $logger) { + public function __construct(array $configuration, $plugin_id, array $plugin_definition, ImageToolkitOperationManagerInterface $operation_manager, LoggerInterface $logger, ConfigFactoryInterface $config_factory) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->operationManager = $operation_manager; $this->logger = $logger; - } - - /** - * {@inheritdoc} - */ - public function __construct(array $configuration, $plugin_id, array $plugin_definition, ConfigFactoryInterface $config_factory) { - parent::__construct($configuration, $plugin_id, $plugin_definition); - $this->configFactory = $config_factory; } /** * {@inheritdoc} */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { - return new static( - $configuration, - $plugin_id, - $plugin_definition, - $container->get('config.factory') - ); - } - - /** - * {@inheritdoc} - */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return array(); } diff --git a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php index 270f870..0c9db14 100644 --- a/core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php +++ b/core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php @@ -11,8 +11,6 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; -use Drupal\Component\Plugin\Factory\DefaultFactory; -use Psr\Log\LoggerInterface; /** * Manages toolkit plugins. @@ -27,20 +25,6 @@ class ImageToolkitManager extends DefaultPluginManager { protected $configFactory; /** - * The image toolkit operation manager. - * - * @var \Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface - */ - protected $operationManager; - - /** - * A logger instance. - * - * @var \Psr\Log\LoggerInterface - */ - protected $logger; - - /** * Constructs the ImageToolkitManager object. * * @param \Traversable $namespaces @@ -48,22 +32,16 @@ class ImageToolkitManager extends DefaultPluginManager { * keyed by the corresponding namespace to look for plugin implementations. * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend * Cache backend instance to use. - * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory - * The config factory. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. - * @param \Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface $operation_manager - * The toolkit operation manager. - * @param \Psr\Log\LoggerInterface $logger - * A logger instance. + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The config factory. */ - public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler, ImageToolkitOperationManagerInterface $operation_manager, LoggerInterface $logger) { + public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ConfigFactoryInterface $config_factory) { parent::__construct('Plugin/ImageToolkit', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\Annotation\ImageToolkit'); $this->setCacheBackend($cache_backend, 'image_toolkit_plugins'); $this->configFactory = $config_factory; - $this->operationManager = $operation_manager; - $this->logger = $logger; } /** @@ -120,13 +98,4 @@ public function getAvailableToolkits() { return $output; } - /** - * {@inheritdoc} - */ - public function createInstance($plugin_id, array $configuration = array()) { - $plugin_definition = $this->getDefinition($plugin_id); - $plugin_class = DefaultFactory::getPluginClass($plugin_id, $plugin_definition); - return new $plugin_class($configuration, $plugin_id, $plugin_definition, $this->operationManager, $this->logger); - } - } diff --git a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php index 1612ea4..863a1a4 100644 --- a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php +++ b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php @@ -10,6 +10,7 @@ use Drupal\Component\Utility\Unicode; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\ImageToolkit\ImageToolkitBase; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Defines the GD2 toolkit for image manipulation within Drupal. @@ -36,6 +37,20 @@ class GDToolkit extends ImageToolkitBase { protected $type; /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('image.toolkit.operation.manager'), + $container->get('logger.channel.image'), + $container->get('config.factory') + ); + } + + /** * Sets the GD image resource. * * @param resource $resource diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/TestToolkit.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/TestToolkit.php index b6fa239..8fccaea 100644 --- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/TestToolkit.php +++ b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/TestToolkit.php @@ -11,7 +11,9 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\ImageToolkit\ImageToolkitBase; +use Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface; use Drupal\Core\State\StateInterface; +use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -53,11 +55,23 @@ class TestToolkit extends ImageToolkitBase { protected $height; /** - * {@inheritdoc} + * Constructs a TestToolkit object. + * + * @param array $configuration + * A configuration array containing information about the plugin instance. + * @param string $plugin_id + * The plugin_id for the plugin instance. + * @param array $plugin_definition + * The plugin implementation definition. + * @param \Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface $operation_manager + * The toolkit operation manager. + * @param \Psr\Log\LoggerInterface $logger + * A logger instance. + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The config factory. */ - public function __construct(array $configuration, $plugin_id, array $plugin_definition, ConfigFactoryInterface $config_factory, StateInterface $state) { - parent::__construct($configuration, $plugin_id, $plugin_definition, $config_factory); - + public function __construct(array $configuration, $plugin_id, array $plugin_definition, ImageToolkitOperationManagerInterface $operation_manager, LoggerInterface $logger, ConfigFactoryInterface $config_factory, StateInterface $state) { + parent::__construct($configuration, $plugin_id, $plugin_definition, $operation_manager, $logger, $config_factory); $this->state = $state; } @@ -69,6 +83,8 @@ public static function create(ContainerInterface $container, array $configuratio $configuration, $plugin_id, $plugin_definition, + $container->get('image.toolkit.operation.manager'), + $container->get('logger.channel.image'), $container->get('config.factory'), $container->get('state') ); @@ -96,7 +112,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta */ public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { if ($form_state['values']['test']['test_parameter'] == 0) { - form_set_error('test][test_parameter', $form_state, $this->t('Test parameter should be different from 0.')); + $form_state->setErrorByName('test][test_parameter', $this->t('Test parameter should be different from 0.')); } }