block_generation-8.x-1.x-dev/src/BlockGenerationEffectManager.php
src/BlockGenerationEffectManager.php
<?php
namespace Drupal\block_generation;
use Drupal\block_generation\Annotation\BlockGenerationEffect;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\DependencyInjection\ClassResolverInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\plugin\PluginDefinition\PluginOperationsProviderDefinitionInterface;
use Drupal\plugin\PluginType\PluginTypeManagerInterface;
/**
* Manages discovery and instantiation of plugins.
*
* @see \Drupal\block_generation\BlockGenerationEffectPluginInterface
*/
class BlockGenerationEffectManager extends DefaultPluginManager implements BlockGenerationEffectManagerInterface {
protected $classResolver;
protected $pluginTypeManager;
public function __construct(
\Traversable $namespaces,
CacheBackendInterface $cache_backend,
ModuleHandlerInterface $module_handler,
ClassResolverInterface $class_resolver,
PluginTypeManagerInterface $plugin_type_manager
) {
parent::__construct('Plugin/BlockGenerationEffect', $namespaces, $module_handler, BlockGenerationEffectPluginInterface::class, BlockGenerationEffect::class);
$this->alterInfo('block_generation_effect');
$this->setCacheBackend($cache_backend, 'block_generation_effect', ['block_generation_effect']);
$this->classResolver = $class_resolver;
$this->pluginTypeManager = $plugin_type_manager;
}
/**
* Replacement for deprecated getOperationsProvider().
*/
public function getOperationsProvider($plugin_id) {
$definition = $this->getDefinition($plugin_id);
$typed_definition = $this->pluginTypeManager
->getPluginType('block_generation_effect')
->ensureTypedDefinition($definition);
if ($typed_definition instanceof PluginOperationsProviderDefinitionInterface) {
$provider_class = $typed_definition->getOperationsProviderClass();
return $this->classResolver->getInstanceFromDefinition($provider_class);
}
return NULL;
}
}
