diff.install in Diff 7.3
Same filename and directory in other branches
Provides uninstallation functions.
File
diff.installView 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
Name | 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. |