1.20.x system.install system_update_1061()

Update contrib entity display mode module to core version.

Related topics

File

modules/system/system.install, line 2987
Install, update and uninstall functions for the system module.

Code

function system_update_1061() {
  $old_config = config('entity_view_mode.settings');
  $new_config = config('entity.view_modes');

  // Backdrop pre-1.6 display modes from entity_view_mode.module:
  if (!$old_config->isNew()) {
    $old_data = $old_config->get('entity_view_modes');
  }
  // Drupal 7 entity_view_mode.module:
  else {
    $old_data = update_variable_get('entity_view_modes');
  }

  $new_data = array();
  if ($old_data) {
    foreach ($old_data as $entity_type => $old_view_modes) {
      foreach ($old_view_modes as $view_mode_name => $view_mode) {
        // Backdrop does not have a "custom settings" flag.
        if (isset($view_mode['custom settings'])) {
          unset($view_mode['custom settings']);
        }
        $new_data[$entity_type][$view_mode_name] = $view_mode;
      }
    }
  }

  // Only update core if no display modes have yet been set.
  if ($new_data && !$new_config->get('view_modes')) {
    $new_config->set('view_modes', $new_data);
    $new_config->save();

    // Delete the old configuration regardless of location.
    $old_config->delete();
    update_variable_del('entity_view_modes');
  }

  // Remove the entry for the entity_view_mode module in the system table. This
  // will "disable" the module if present.
  db_query("DELETE FROM {system} WHERE name = 'entity_view_mode' AND type = 'module'");
}