You are here

public function BaseMarkdownPluginManager::processDefinition in Markdown 3.0.x

Performs extra processing on plugin definitions.

By default we add defaults for the type to the definition. If a type has additional processing logic they can do that by replacing or extending the method.

Overrides DefaultPluginManager::processDefinition

1 call to BaseMarkdownPluginManager::processDefinition()
MarkdownExtensionManager::processDefinition in src/MarkdownExtensionManager.php
Performs extra processing on plugin definitions.
1 method overrides BaseMarkdownPluginManager::processDefinition()
MarkdownExtensionManager::processDefinition in src/MarkdownExtensionManager.php
Performs extra processing on plugin definitions.

File

src/BaseMarkdownPluginManager.php, line 78

Class

BaseMarkdownPluginManager

Namespace

Drupal\markdown

Code

public function processDefinition(&$definition, $plugin_id) {

  // Immediately return if plugin is not installable.
  if (!is_array($definition) || !($class = $definition['class'] ?? NULL) || !is_subclass_of($class, MarkdownInstallablePluginInterface::class)) {
    return;
  }

  // Determine if plugin is installed, if not explicitly specified.
  if (!isset($definition['installed'])) {
    $definition['installed'] = $class::installed();
  }
  elseif (is_string($definition['installed'])) {
    $definition['installed'] = class_exists($definition['installed']);
  }
  elseif (!is_bool($definition['installed'])) {
    throw new DiscoveryException('The "installed" property must either be a class name that is checked for existence or a boolean. If complex requirements are needed, use \\Drupal\\markdown\\Plugin\\Markdown\\MarkdownInstallablePluginInterface::installed() instead of setting the value in the plugin annotation.');
  }

  // Determine if plugin version, if not explicitly specified.
  if (!isset($definition['version'])) {
    $definition['version'] = $class::version();
  }
  elseif (is_string($definition['version'])) {
    if (defined($definition['version'])) {
      $definition['version'] = constant($definition['version']);
    }
    elseif (strpos($definition['version'], '::')) {
      [
        $class,
        $const,
      ] = explode('::', $definition['version']);
      $definition['version'] = $class::$const;
    }
    elseif (is_callable($definition['version'])) {
      $definition['version'] = $definition['version']();
    }
    else {
      throw new DiscoveryException('The "version" property must either be a constant or public class constant or property that exists in code somewhere. If complex requirements are needed, use \\Drupal\\markdown\\Plugin\\Markdown\\MarkdownInstallablePluginInterface::version() instead of setting the value in the plugin annotation.');
    }
  }
}