You are here

function yamlform_update_8014 in YAML Form 8

Issue #2748699: Change all references from Inputs to Elements.

File

includes/yamlform.update.inc, line 345
YAML Form module update hooks.

Code

function yamlform_update_8014() {
  $config_factory = \Drupal::configFactory();

  // Update 'yamlform.settings' configuration.
  $settings_config = \Drupal::configFactory()
    ->getEditable('yamlform.settings');
  $yaml = Yaml::encode($settings_config
    ->getRawData());
  $yaml = preg_replace('/(\\s+)inputs: /', '\\1elements: ', $yaml);
  $yaml = preg_replace('/(\\s+)default_inputs: /', '\\1default_elements: ', $yaml);
  $settings_config
    ->setData(Yaml::decode($yaml));
  $settings_config
    ->save();

  // Update 'yamlform.yamlform.*' configuration.
  $yamlform_config_names = [
    'example_inputs' => 'example_elements',
    'example_inputs_extras' => 'example_elements_extras',
    'example_inputs_formats' => 'example_elements_formats',
    'example_inputs_masks' => 'example_elements_masks',
    'example_inputs_states' => 'example_elements_states',
  ];
  foreach ($config_factory
    ->listAll('yamlform.yamlform.') as $yamlform_config_name) {
    $yamlform_config = $config_factory
      ->getEditable($yamlform_config_name);
    $yamlform_id = str_replace('yamlform.yamlform.', '', $yamlform_config_name);
    $yaml = Yaml::encode($yamlform_config
      ->getRawData());
    $yaml = preg_replace('/(\\s+)inputs: /', '\\1elements: ', $yaml);
    $yaml = preg_replace('/(\\s+)excluded_inputs: /', '\\1excluded_elements: ', $yaml);
    $yaml = str_replace('_inputs_', '_elements_', $yaml);
    $yaml = str_replace(' input ', ' element ', $yaml);
    $yaml = str_replace(' Inputs', ' Elements', $yaml);
    $yaml = str_replace(' inputs', ' elements', $yaml);
    $yaml = str_replace('Private input', 'Private element ', $yaml);
    if (isset($yamlform_config_names[$yamlform_id])) {
      $yaml = str_replace($yamlform_id, $yamlform_config_names[$yamlform_id], $yaml);
      $data = Yaml::decode($yaml);
      \Drupal::configFactory()
        ->getEditable('yamlform.yamlform.' . $yamlform_id)
        ->delete();
      \Drupal::configFactory()
        ->getEditable('yamlform.yamlform.' . $yamlform_config_names[$yamlform_id])
        ->setData($data)
        ->save();
    }
    else {
      $data = Yaml::decode($yaml);
      \Drupal::configFactory()
        ->getEditable('yamlform.yamlform.' . $yamlform_id)
        ->setData($data)
        ->save();
    }
  }
}