function yamlform_update_8001 in YAML Form 8
Add support for HTML and file attachments to YamlFormEmailHandler.
File
- includes/
yamlform.update.inc, line 18 - YAML Form module update hooks.
Code
function yamlform_update_8001(&$sandbox) {
$messages = [];
// Update 'yamlform.settings' configuration.
// Copied from \views_update_8001().
$settings_config = \Drupal::configFactory()
->getEditable('yamlform.settings');
$default_data = Yaml::decode(file_get_contents(drupal_get_path('module', 'yamlform') . '/config/install/yamlform.settings.yml'));
$settings_config
->clear('mail.default_body');
$settings_config
->set('mail.default_body_text', $default_data['mail']['mail.default_body_text']);
$settings_config
->set('mail.default_body_html', $default_data['mail']['mail.default_body_html']);
$settings_config
->save();
$messages[] = \Drupal::translation()
->translate("Update form settings removed 'mail.default_body' and replaced with 'mail_default_body_text' and 'mail_default_body_html'");
// Update 'yamlform.yamlform.*' configuration.
// Copied from \views_update_8001().
$ids = [];
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('yamlform.yamlform.') as $yamlform_config_name) {
$yamlform_config = $config_factory
->getEditable($yamlform_config_name);
$handlers = $yamlform_config
->get('handlers');
$has_email_handler = FALSE;
foreach ($handlers as $handler_id => $handler) {
if ($handler['id'] != 'email') {
continue;
}
$has_email_handler = TRUE;
$base = "handlers.{$handler_id}";
// Get debug setting so that we can move it last.
$debug = $yamlform_config
->get($base . '.settings.debug');
$yamlform_config
->clear($base . '.settings.debug');
$yamlform_config
->set($base . '.settings.html', FALSE);
$yamlform_config
->set($base . '.settings.attachments', FALSE);
$yamlform_config
->set($base . '.settings.debug', $debug);
}
if ($has_email_handler) {
$ids[] = $yamlform_config
->get('id');
$yamlform_config
->save(TRUE);
}
}
if (!empty($ids)) {
$messages[] = t('Updated email handler for forms: @ids', [
'@ids' => implode(', ', array_unique($ids)),
]);
}
return implode("\n", $messages);
}