function ImageToolkitOperationManager::getToolkitOperationPluginId

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php \Drupal\Core\ImageToolkit\ImageToolkitOperationManager::getToolkitOperationPluginId()
  2. 10 core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php \Drupal\Core\ImageToolkit\ImageToolkitOperationManager::getToolkitOperationPluginId()
  3. 11.x 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'];
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.