You are here

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);
}