Mercurial > hg > isophonics-drupal-site
view core/modules/block/src/BlockPluginCollection.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\block; use Drupal\Component\Plugin\Exception\PluginException; use Drupal\Component\Plugin\PluginManagerInterface; use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection; /** * Provides a collection of block plugins. */ class BlockPluginCollection extends DefaultSingleLazyPluginCollection { /** * The block ID this plugin collection belongs to. * * @var string */ protected $blockId; /** * Constructs a new BlockPluginCollection. * * @param \Drupal\Component\Plugin\PluginManagerInterface $manager * The manager to be used for instantiating plugins. * @param string $instance_id * The ID of the plugin instance. * @param array $configuration * An array of configuration. * @param string $block_id * The unique ID of the block entity using this plugin. */ public function __construct(PluginManagerInterface $manager, $instance_id, array $configuration, $block_id) { parent::__construct($manager, $instance_id, $configuration); $this->blockId = $block_id; } /** * {@inheritdoc} * * @return \Drupal\Core\Block\BlockPluginInterface */ public function &get($instance_id) { return parent::get($instance_id); } /** * {@inheritdoc} */ protected function initializePlugin($instance_id) { if (!$instance_id) { throw new PluginException("The block '{$this->blockId}' did not specify a plugin."); } try { parent::initializePlugin($instance_id); } catch (PluginException $e) { $module = $this->configuration['provider']; // Ignore blocks belonging to uninstalled modules, but re-throw valid // exceptions when the module is installed and the plugin is // misconfigured. if (!$module || \Drupal::moduleHandler()->moduleExists($module)) { throw $e; } } } }