diff --git a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitBase.php b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitBase.php index ffb3554..6c552b3 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitBase.php +++ b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitBase.php @@ -38,16 +38,18 @@ public function process($operation, ImageInterface $image, array $data = array()) { // Check if operation plugin has been instantiated already. If not, // create an instance. + if (!isset($this->operationPlugins[$operation])) { + $manager = \Drupal::service('image.toolkit.operation.manager'); + $plugin_id = $manager->getToolkitOperationPluginId($this->getPluginId(), $operation); + $this->operationPlugins[$operation] = $manager->createInstance($plugin_id); + } + // Return the the value returned by the operation process method. if (isset($this->operationPlugins[$operation])) { - $plugin = $this->operationPlugins[$operation]; + return $this->operationPlugins[$operation]->process($this, $image, $data); } else { - $manager = \Drupal::service('image.toolkit.operation.manager'); - $plugin_id = $manager->getToolkitOperationPluginId($this->getPluginId(), $operation); - $plugin = $manager->createInstance($plugin_id); - $this->operationPlugins[$operation] = $plugin; + return FALSE; } - return $plugin->process($this, $image, $data); } } diff --git a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperation/GDToolkitCrop.php b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperation/GDToolkitCrop.php index 9cc7a72..eb0720a 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperation/GDToolkitCrop.php +++ b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperation/GDToolkitCrop.php @@ -47,8 +47,6 @@ class GDToolkitCrop extends ImageToolkitOperationBase { * * @return bool * TRUE or FALSE, based on success. - * - * @see image_crop() */ public function process(ImageToolkitInterface $toolkit, ImageInterface $image, array $data = array()) { $res = $toolkit->createTmp($image, $data['width'], $data['height']); diff --git a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperationManager.php b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperationManager.php index 8452227..b84159b 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperationManager.php +++ b/core/modules/system/lib/Drupal/system/Plugin/ImageToolkitOperationManager.php @@ -37,17 +37,17 @@ public function __construct(\Traversable $namespaces, CacheBackendInterface $cac /** * @todo */ - public function getToolkitOperationPluginId($toolkitName, $operation) { + public function getToolkitOperationPluginId($toolkit_id, $operation) { $result = NULL; $resultWeight = PHP_INT_MAX; $definitions = $this->getDefinitions(); foreach ($definitions as $plugin_id => $definition) { - if ($definition['toolkit'] === $toolkitName && $definition['operation'] === $operation && $definition['weight'] < $resultWeight) { + if ($definition['toolkit'] === $toolkit_id && $definition['operation'] === $operation && $definition['weight'] < $resultWeight) { $result = $plugin_id; $resultWeight = $definition['weight']; } } return $result; } - + }