You are here

function google_tag_update_8101 in GoogleTagManager 8

Convert config item to separate module settings and container config items.

File

./google_tag.install, line 136
Provides install, update, and uninstall functions.

Code

function google_tag_update_8101(&$sandbox) {
  $data = \Drupal::config('google_tag.settings')
    ->get();
  if (!empty($data['_default_container'])) {

    // Config appears to be updated; do nothing.
    return t('Config appears to be updated; no changes made');
  }

  // Create a container configuration item.
  $container_config = \Drupal::service('config.factory')
    ->getEditable('google_tag.container.primary');
  if (!empty($container_config
    ->get())) {

    // Config appears to be updated; do nothing.
    return t('Config appears to be updated; no changes made');
  }
  $keys = array_flip([
    'uri',
    'compact_snippet',
    'include_file',
    'rebuild_snippets',
    'debug_output',
    '_core',
  ]);
  $data = array_diff_key($data, $keys);
  $container_data = [
    'status' => TRUE,
    'id' => 'primary',
    'label' => 'Primary',
    'weight' => 0,
  ] + $data;
  $container_config
    ->setData($container_data)
    ->save();

  // Update the module configuration item.
  $module_config = \Drupal::service('config.factory')
    ->getEditable('google_tag.settings');
  $module_data = $module_config
    ->get();
  unset($keys['_core']);
  $data['container_id'] = '';
  $module_data = array_intersect_key($module_data, $keys);
  $module_data = [
    'uri' => 'public://google_tag',
  ] + $module_data + [
    '_default_container' => $data,
  ];
  $module_config
    ->setData($module_data)
    ->save();
  return t('Converted config item to separate settings and container config items');
}