public function EmergencyForm::submitRegionToBlock in Display Suite 8.3
Same name and namespace in other branches
- 8.2 src/Form/EmergencyForm.php \Drupal\ds\Form\EmergencyForm::submitRegionToBlock()
Submit callback for the region to block form.
File
- src/
Form/ EmergencyForm.php, line 138
Class
- EmergencyForm
- Emergency form for DS.
Namespace
Drupal\ds\FormCode
public function submitRegionToBlock(array &$form, FormStateInterface $form_state) {
if ($form_state
->getValue('remove_block_region')) {
$save = FALSE;
$region_blocks = $this
->config('ds_extras.settings')
->get('region_blocks');
$remove = $form_state
->getValue('remove_block_region');
foreach ($remove as $key => $value) {
if ($value !== 0 && $key == $value) {
$save = TRUE;
// Make sure there is no active block instance for this ds block
// region.
if (\Drupal::moduleHandler()
->moduleExists('block')) {
$ids = \Drupal::entityQuery('block')
->condition('plugin', 'ds_region_block:' . $key)
->execute();
/* @var \Drupal\block\BlockInterface $block_storage */
$block_storage = \Drupal::service('entity_type.manager')
->getStorage('block');
foreach ($block_storage
->loadMultiple($ids) as $block) {
$block
->delete();
}
}
unset($region_blocks[$key]);
}
}
if ($save) {
$this
->messenger()
->addMessage($this
->t('Block regions were removed.'));
// Clear cached block and ds plugin definitions.
\Drupal::service('plugin.manager.block')
->clearCachedDefinitions();
\Drupal::service('plugin.manager.ds')
->clearCachedDefinitions();
$this
->config('ds_extras.settings')
->set('region_blocks', $region_blocks)
->save();
}
}
else {
$this
->messenger()
->addMessage($this
->t('No block regions were removed.'));
}
}