function webform_update_8023 in Webform 6.x
Same name and namespace in other branches
- 8.5 includes/webform.install.update.inc \webform_update_8023()
Issue #2854021: Send email based on element options selection.
File
- includes/
webform.install.update.inc, line 444 - Archived Webform update hooks.
Code
function webform_update_8023() {
// Add *_options: [] to email handler settings.
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('webform.webform.') as $webform_config_name) {
$webform_config = $config_factory
->getEditable($webform_config_name);
$data = $webform_config
->getRawData();
$has_email_handler = FALSE;
foreach ($data['handlers'] as &$handler) {
if ($handler['id'] === 'email') {
$has_email_handler = TRUE;
$settings = [];
foreach ($handler['settings'] as $settings_key => $setting_value) {
$settings[$settings_key] = $setting_value;
if (preg_match('/_mail$/', $settings_key)) {
$options_name = str_replace('_mail', '', $settings_key) . '_options';
if (empty($handler['settings'][$options_name])) {
$settings[str_replace('_mail', '', $settings_key) . '_options'] = [];
}
}
}
$handler['settings'] = $settings;
}
}
if ($has_email_handler) {
$webform_config
->setData($data);
$webform_config
->save();
}
}
}