You are here

protected function ImageToolkitOperationManager::getToolkitOperationPluginId in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php \Drupal\Core\ImageToolkit\ImageToolkitOperationManager::getToolkitOperationPluginId()

Returns the plugin ID for a given toolkit and operation.

Parameters

\Drupal\Core\ImageToolkit\ImageToolkitInterface $toolkit: The toolkit instance.

string $operation: The operation (e.g. "crop").

Return value

string The plugin ID.

Throws

\Drupal\Component\Plugin\Exception\PluginNotFoundException When no plugin is available.

1 call to ImageToolkitOperationManager::getToolkitOperationPluginId()
ImageToolkitOperationManager::getToolkitOperation in core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php
Returns a toolkit operation plugin instance.

File

core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php, line 75

Class

ImageToolkitOperationManager
Manages toolkit operation plugins.

Namespace

Drupal\Core\ImageToolkit

Code

protected function getToolkitOperationPluginId(ImageToolkitInterface $toolkit, $operation) {
  $toolkit_id = $toolkit
    ->getPluginId();
  $definitions = $this
    ->getDefinitions();
  $definitions = array_filter($definitions, function ($definition) use ($toolkit_id, $operation) {
    return $definition['toolkit'] == $toolkit_id && $definition['operation'] == $operation;
  });
  if (!$definitions) {

    // If this image toolkit plugin is a derivative and returns no operation,
    // try once again with its base plugin.
    $base_toolkit_id = $toolkit
      ->getBaseId();
    if ($toolkit_id != $base_toolkit_id && !empty($base_toolkit_id)) {
      $base_toolkit = $this->toolkitManager
        ->createInstance($base_toolkit_id);
      return $this
        ->getToolkitOperationPluginId($base_toolkit, $operation);
    }
    $message = new FormattableMarkup("No image operation plugin for '@toolkit' toolkit and '@operation' operation.", [
      '@toolkit' => $toolkit_id,
      '@operation' => $operation,
    ]);
    throw new PluginNotFoundException($toolkit_id . '.' . $operation, $message);
  }
  else {

    // Pickup the first plugin found.
    // @todo In https://www.drupal.org/node/2110591 we'll return here the UI
    //   selected plugin or the first found if missed.
    $definition = reset($definitions);
    return $definition['id'];
  }
}