12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?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;
- }
- }
- }
- }
|