search_api-8.x-1.15/src/Plugin/ConfigurablePluginBase.php
src/Plugin/ConfigurablePluginBase.php
<?php namespace Drupal\search_api\Plugin; use Drupal\Core\Plugin\PluginDependencyTrait; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a base class for all configurable Search API plugins. */ abstract class ConfigurablePluginBase extends HideablePluginBase implements ConfigurablePluginInterface { // Normally, we'd just need \Drupal\Core\Entity\DependencyTrait here for // plugins. However, in a few cases, plugins use plugins themselves, and then // the additional calculatePluginDependencies() method from this trait is // useful. Since PHP 5 complains when adding this trait along with its // "parent" trait to the same class, we just add it here in case a child class // does need it. use PluginDependencyTrait; /** * {@inheritdoc} */ public function __construct(array $configuration, $plugin_id, array $plugin_definition) { $configuration += $this->defaultConfiguration(); parent::__construct($configuration, $plugin_id, $plugin_definition); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { $plugin = new static($configuration, $plugin_id, $plugin_definition); /** @var \Drupal\Core\StringTranslation\TranslationInterface $translation */ $translation = $container->get('string_translation'); $plugin->setStringTranslation($translation); return $plugin; } /** * {@inheritdoc} */ public function label() { $plugin_definition = $this->getPluginDefinition(); return $plugin_definition['label']; } /** * {@inheritdoc} */ public function getDescription() { $plugin_definition = $this->getPluginDefinition(); return isset($plugin_definition['description']) ? $plugin_definition['description'] : ''; } /** * {@inheritdoc} */ public function defaultConfiguration() { return []; } /** * {@inheritdoc} */ public function getConfiguration() { return $this->configuration; } /** * {@inheritdoc} */ public function setConfiguration(array $configuration) { $this->configuration = $configuration + $this->defaultConfiguration(); } /** * {@inheritdoc} */ public function calculateDependencies() { return []; } /** * {@inheritdoc} */ public function onDependencyRemoval(array $dependencies) { // By default, we're not reacting to anything and so we should leave // everything as it was. return FALSE; } }