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;
  }
}

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

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