pattern_library-8.x-2.x-dev/src/PatternModifierTypeManager.php

src/PatternModifierTypeManager.php
<?php

namespace Drupal\pattern_library;

use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\pattern_library\Annotation\PatternModifierType;
use Drupal\pattern_library\Plugin\PatternModifierTypeInterface;

/**
 * Pattern library modifier manager.
 */
class PatternModifierTypeManager extends DefaultPluginManager implements PatternModifierTypeManagerInterface {

  /**
   * {@inheritdoc}
   */
  public function __construct(
    \Traversable $namespaces,
    CacheBackendInterface $cache_backend,
    ModuleHandlerInterface $module_handler
  ) {
    parent::__construct(
      'Plugin/PatternModifierType',
      $namespaces,
      $module_handler,
      PatternModifierTypeInterface::class,
      PatternModifierType::class
    );

    $this->alterInfo('pattern_library_modifier');
    $this->setCacheBackend($cache_backend, 'pattern_library_modifier_type');
  }

  /**
   * {@inheritDoc}
   */
  public function processModifierValue($plugin_id, $value) {
    $classname = $this->getDefinitionClassname($plugin_id);

    if (!$classname) {
      return $value;
    }
    $value = $classname::castValue($value);

    return $classname::transformValue($value);
  }

  /**
   * Get library pattern modifier class name.
   *
   * @param $plugin_id
   *   The modifier type plugin id.
   *
   * @return string|null
   *   The modifier plugin class name; otherwise false if it doesn't exist.
   */
  protected function getDefinitionClassname($plugin_id) {
    $definition = $this->getDefinition($plugin_id);

    return isset($definition['class']) && class_exists($definition['class'])
      ? $definition['class']
      : FALSE;
  }
}

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

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