public function BootstrapSiteAlertAdmin::submitForm in Bootstrap Site Alert 8
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ BootstrapSiteAlertAdmin.php, line 301
Class
- BootstrapSiteAlertAdmin
- Class BootstrapSiteAlertAdmin.
Namespace
Drupal\bootstrap_site_alert\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
// Clear out all our old states to prevent erroneous default values.
// There is no wildcard to get these so this is the easiest way.
$string = 'bootstrap_site_alert';
$this->database
->delete('key_value')
->condition('name', $this->database
->escapeLike($string) . "%", 'LIKE')
->execute();
// Save the values to the state.
foreach ($form_state
->getValues() as $key => $value) {
if ($key === 'bsa_container') {
foreach ($value["bsa_fieldset"] as $bs_key => $bs_value) {
foreach ($bs_value as $inner_key => $inner_value) {
// Clean up our page paths so it works well with page matcher.
// A little janky but it works.
if ($inner_key === 'bootstrap_site_alert_only_paths') {
$text = array_filter(explode("\r\n", $inner_value), 'trim');
foreach ($text as $item_key => $item) {
$text[$item_key] = ltrim($item, '/');
}
$inner_value = implode("\r\n", $text);
}
$this->state
->set($inner_key . $bs_key, $inner_value);
}
}
}
}
// Set our BS version.
$ver = $form_state
->getValue('bootstrap_site_alert_version', FALSE);
$this->state
->set('bootstrap_site_alert_version', $ver);
// Set the count so the form renders right on start.
$this->state
->set('bootstrap_site_alert_count', isset($bs_key) ? $bs_key + 1 : 1);
$this->ajaxPressed = FALSE;
// Save a random key so that we can use it to track a 'dismiss' action for
// this particular alert.
$random = new Random();
$this->state
->set('bootstrap_site_alert_key', $random
->string(16, TRUE));
// Flushes the pages after save.
Cache::invalidateTags([
'rendered',
]);
}