You are here

public function BootstrapLayoutsBase::setConfiguration in Bootstrap Layouts 8.5

Sets the configuration for this plugin instance.

Parameters

array $configuration: An associative array containing the plugin's configuration.

Overrides LayoutDefault::setConfiguration

File

src/Plugin/Layout/BootstrapLayoutsBase.php, line 204

Class

BootstrapLayoutsBase
Layout class for all bootstrap layouts.

Namespace

Drupal\bootstrap_layouts\Plugin\Layout

Code

public function setConfiguration(array $configuration) {

  // Don't use NestedArray::mergeDeep here since this will merge both the
  // default classes and the classes stored in config.
  $default = $this
    ->defaultConfiguration();

  // Ensure top level properties exist.
  $configuration += $default;

  // Ensure specific top level sub-properties exists.
  $configuration['layout'] += $default['layout'];
  $configuration['regions'] += $default['regions'];

  // Remove any region configuration that doesn't apply to current layout.
  $regions = $this
    ->getPluginDefinition()
    ->getRegions();
  foreach (array_keys($configuration['regions']) as $region) {
    if (!isset($regions[$region])) {
      unset($configuration['regions'][$region]);
    }
  }
  $this->configuration = $configuration;
}