block_generation-8.x-1.x-dev/src/BlockGenerationGenerationEffectManager.php

src/BlockGenerationGenerationEffectManager.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\PluginType\PluginTypeManagerInterface;

/**
 * Manages discovery and instantiation of BlockGenerationEffect plugins.
 *
 * @see \Drupal\block_generation\BlockGenerationEffectPluginInterface
 */
class BlockGenerationGenerationEffectManager extends DefaultPluginManager implements BlockGenerationEffectManagerInterface {


  /**
   * The class resolver service.
   *
   * @var \Drupal\Core\DependencyInjection\ClassResolverInterface
   */
  protected $classResolver;

  /**
   * The plugin type manager.
   *
   * @var \Drupal\plugin\PluginType\PluginTypeManagerInterface
   */
  protected $pluginTypeManager;

  /**
   * Constructs a new BlockGenerationGenerationEffectManager.
   *
   * @param \Traversable $namespaces
   *   Plugin namespaces.
   * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
   *   Cache backend.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   Module handler.
   * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
   *   Class resolver.
   * @param \Drupal\plugin\PluginType\PluginTypeManagerInterface $plugin_type_manager
   *   Plugin type manager.
   */
  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;
  }

  /**
   * Gets the operations provider for a plugin.
   *
   * @param string $plugin_id
   *   The plugin ID.
   *
   * @return object|null
   *   The operations provider instance or NULL.
   */
  public function getOperationsProvider($plugin_id) {
    $definition = $this->getDefinition($plugin_id);

    $plugin_type = $this->pluginTypeManager->getPluginType('block_generation_effect');
    $typed_definition = $plugin_type->ensureTypedDefinition($definition);
    if ($typed_definition) {
      $provider_class = $typed_definition->getOperationsProviderClass();
      return $this->classResolver->getInstanceFromDefinition($provider_class);
    }

    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getDefinitions() {
    return parent::getDefinitions();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc