entity_activity-8.x-1.0-beta13/src/Plugin/LogGeneratorPluginCollection.php

src/Plugin/LogGeneratorPluginCollection.php
<?php

namespace Drupal\entity_activity\Plugin;

use Drupal\Core\Plugin\DefaultLazyPluginCollection;
use Drupal\entity_activity\Plugin\LogGenerator\BrokenLogGenerator;

/**
 * A collection of entity activity log generators.
 */
class LogGeneratorPluginCollection extends DefaultLazyPluginCollection {

  /**
   * {@inheritdoc}
   */
  public function sortHelper($a_id, $b_id) {
    $a_weight = $this->get($a_id)->getWeight();
    $b_weight = $this->get($b_id)->getWeight();
    if ($a_weight == $b_weight) {
      return 0;
    }

    return ($a_weight < $b_weight) ? -1 : 1;
  }

  /**
   * {@inheritdoc}
   */
  protected function initializePlugin($instance_id) {
    parent::initializePlugin($instance_id);

    // If the initialized handler is broken preserve the original
    // handler's plugin ID.
    // @see \Drupal\webform\Plugin\WebformHandler\BrokenWebformHandler::setPluginId
    $plugin = $this->get($instance_id);
    if ($plugin instanceof BrokenLogGenerator) {
      $original_id = $this->configurations[$instance_id]['id'];
      $plugin->setPluginId($original_id);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    $configuration = parent::getConfiguration();

    // Remove configuration if not enabled.
    foreach ($configuration as $instance_id => $instance_config) {
      $instance_config['bundles'] = array_filter($instance_config['bundles']);
      $instance_config['referenced_by'] = array_filter($instance_config['referenced_by']);
      $default_config = [];
      $default_config['id'] = $instance_id;
      $default_config += $this->get($instance_id)->defaultConfiguration();
      // In order to determine if a plugin is configured, we must compare it to
      // its default configuration.
      if ($default_config === $instance_config) {
        unset($configuration[$instance_id]);
      }

    }
    return $configuration;
  }

}

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

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