Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Component/Plugin/PluginBase.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Component/Plugin/PluginBase.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,96 @@ +<?php + +namespace Drupal\Component\Plugin; + +/** + * Base class for plugins wishing to support metadata inspection. + */ +abstract class PluginBase implements PluginInspectionInterface, DerivativeInspectionInterface { + + /** + * A string which is used to separate base plugin IDs from the derivative ID. + */ + const DERIVATIVE_SEPARATOR = ':'; + + /** + * The plugin_id. + * + * @var string + */ + protected $pluginId; + + /** + * The plugin implementation definition. + * + * @var array + */ + protected $pluginDefinition; + + /** + * Configuration information passed into the plugin. + * + * When using an interface like + * \Drupal\Component\Plugin\ConfigurablePluginInterface, this is where the + * configuration should be stored. + * + * Plugin configuration is optional, so plugin implementations must provide + * their own setters and getters. + * + * @var array + */ + protected $configuration; + + /** + * Constructs a Drupal\Component\Plugin\PluginBase object. + * + * @param array $configuration + * A configuration array containing information about the plugin instance. + * @param string $plugin_id + * The plugin_id for the plugin instance. + * @param mixed $plugin_definition + * The plugin implementation definition. + */ + public function __construct(array $configuration, $plugin_id, $plugin_definition) { + $this->configuration = $configuration; + $this->pluginId = $plugin_id; + $this->pluginDefinition = $plugin_definition; + } + + /** + * {@inheritdoc} + */ + public function getPluginId() { + return $this->pluginId; + } + + /** + * {@inheritdoc} + */ + public function getBaseId() { + $plugin_id = $this->getPluginId(); + if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) { + list($plugin_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); + } + return $plugin_id; + } + + /** + * {@inheritdoc} + */ + public function getDerivativeId() { + $plugin_id = $this->getPluginId(); + $derivative_id = NULL; + if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) { + list(, $derivative_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); + } + return $derivative_id; + } + + /** + * {@inheritdoc} + */ + public function getPluginDefinition() { + return $this->pluginDefinition; + } + +}