You are here

diff.install in Diff 7.3

Same filename and directory in other branches
  1. 8 diff.install
  2. 5.2 diff.install
  3. 5 diff.install

Provides uninstallation functions.

File

diff.install
View source
<?php

/**
 * @file
 * Provides uninstallation functions.
 */

/**
 * Implements hook_install().
 */
function diff_install() {
  user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array(
    'diff view changes',
  ));
  user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array(
    'diff view changes',
  ));
}

/**
 * Implements hook_uninstall().
 */
function diff_uninstall() {

  // Bulk delete entity based variables.
  $prefixes = array(
    'diff_enable_revisions_page_',
    'diff_show_',
    'diff_view_mode_',
    'diff_admin_path_',
    'diff_default_state_',
    'diff_additional_options_',
  );
  foreach ($prefixes as $prefix) {
    db_delete('variable')
      ->condition('name', db_like($prefix) . '%', 'LIKE')
      ->execute();
  }

  // Delete global variables.
  variable_del('diff_context_lines_trailing');
  variable_del('diff_context_lines_leading');
  variable_del('diff_theme');
  variable_del('diff_radio_behavior', '');
  foreach (field_info_fields() as $field) {
    variable_del("diff_{$field['module']}_field_{$field['type']}_default_options");
  }
}

/**
 * Updates the existing system variables to target the entity type and bundle.
 */
function diff_update_7300() {
  $node_types = array_keys(node_type_get_types());
  foreach ($node_types as $bundle) {
    $type_variables = array(
      'show_preview_changes',
      'enable_revisions_page',
      'show_diff_inline',
    );
    foreach ($type_variables as $prefix) {
      $setting = variable_get($prefix . '_' . $bundle, NULL);
      if (isset($setting)) {
        variable_del($prefix . '_' . $bundle);
        variable_set('diff_' . $prefix . '_node_' . $bundle, $setting);
      }
    }
  }
}

/**
 * Renames some internal settings names.
 */
function diff_update_7303() {

  // Get current values.
  $radio = variable_get('diff_script_revisioning', 'simple');
  $leading = variable_get('diff_leading_context_lines', 2);
  $trailing = variable_get('diff_trailing_context_lines', 2);

  // Create new variable names.
  variable_set('diff_radio_behavior', $radio);
  variable_set('diff_context_lines_leading', $leading);
  variable_set('diff_context_lines_trailing', $trailing);

  // Delete old variables.
  variable_del('diff_script_revisioning');
  variable_del('diff_leading_context_lines');
  variable_del('diff_trailing_context_lines');
}

/**
 * Removes unused variable settings and merges inline diff block settings.
 */
function diff_update_7304() {

  // This is now always applied to text fields.
  variable_del('diff_normalise_text');

  // Merge the content type settings for the inline diff block into a single
  // variable.
  $node_types = array_keys(node_type_get_types());
  $enabled_types = array();
  foreach ($node_types as $node_type) {
    if (variable_get('diff_show_diff_inline_node_' . $node_type, FALSE)) {
      $enabled_types[$node_type] = $node_type;
    }
    variable_del('diff_show_diff_inline_node_' . $node_type);
  }
  variable_set('diff_show_diff_inline_node_bundles', $enabled_types);

  // Warn users that these settings are altered.
  drupal_set_message(t('Diff <em>Inline differences</em> content type settings are now located within the <em>Inline differences</em> block settings.'));
}

/**
 * Updates to normalize the new view mode settings.
 */
function diff_update_7305() {

  // Rebuild the menus.
  variable_set('menu_rebuild_needed', TRUE);

  // Removed the enforced entity view mode.
  db_delete('variable')
    ->condition('name', db_like('diff_view_mode_standard_node_') . '%', 'LIKE')
    ->execute();

  // Removes the configurable view mode for the inline diff block, as this
  // is fairly meaningless and confusing to users.
  db_delete('variable')
    ->condition('name', db_like('diff_view_mode_inline_') . '%', 'LIKE')
    ->execute();
}

/**
 * Sets the optional additional node properties to render so that the title
 * still shows by default when doing node comparisons.
 */
function diff_update_7306() {
  variable_set('diff_additional_options_node', array(
    'title' => 'title',
  ));
}

/**
 * Grants access to the Diff "View Changes" button permission to all users
 * if the Diff module is enabled. You need to manually update the permissions
 * if the module is currently disabled.
 */
function diff_update_7307() {

  // The update hooks run even if disabled, and this throws an error.
  if (module_exists('diff')) {
    user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array(
      'diff view changes',
    ));
    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array(
      'diff view changes',
    ));
  }
}

Functions

Namesort descending Description
diff_install Implements hook_install().
diff_uninstall Implements hook_uninstall().
diff_update_7300 Updates the existing system variables to target the entity type and bundle.
diff_update_7303 Renames some internal settings names.
diff_update_7304 Removes unused variable settings and merges inline diff block settings.
diff_update_7305 Updates to normalize the new view mode settings.
diff_update_7306 Sets the optional additional node properties to render so that the title still shows by default when doing node comparisons.
diff_update_7307 Grants access to the Diff "View Changes" button permission to all users if the Diff module is enabled. You need to manually update the permissions if the module is currently disabled.