Skip to content

Instantly share code, notes, and snippets.

@mrded
Last active April 15, 2016 04:59
Show Gist options
  • Save mrded/ddf2c1fd871f8c92f20f35018f29d594 to your computer and use it in GitHub Desktop.
Save mrded/ddf2c1fd871f8c92f20f35018f29d594 to your computer and use it in GitHub Desktop.
Drupal 7 - Useful hook_update_N
<?php
/**
* Uninstall modules.
*/
function foo_update_7001() {
module_disable(array('module1', 'module2'));
drupal_uninstall_modules(array('module1', 'module2'));
}
/**
* Delete role.
*/
function foo_update_7002() {
user_role_delete('role 1');
}
/**
* Install modules.
*/
function foo_update_7003() {
module_enable(array('module1', 'module2'));
}
/**
* Add role visibility to a block.
*/
function foo_update_7004() {
$module = 'module1';
$delta = 'delta';
$role = user_role_load_by_name('role 1');
db_insert('block_role')
->fields(array('rid', 'module', 'delta'))
->values(array('rid' => $role->rid, 'module' => $module, 'delta' => $delta))
->execute();
}
/**
* Delete tables.
*/
function foo_update_7005() {
db_delete('table_name')
->execute();
}
/**
* Disable rule.
*/
function foo_update_7006() {
if ($rules_config = rules_config_load('rules_foo_rule1')) {
$rules_config->active = FALSE;
$rules_config->save();
}
}
/**
* Revert rule.
*/
function foo_update_7007() {
if ($rules_config = rules_config_load('rules_foo_rule1')) {
$rules_config->delete();
}
}
/**
* Revert features.
*/
function foo_update_7008() {
features_revert(array('lth_features' => array('features_component')));
}
/**
* Delete multiple custom blocks.
*/
function foo_update_7009() {
$module = 'block';
$deltas = array('24', '25');
foreach ($deltas as $delta) {
db_delete('block')
->condition('module', $module)
->condition('delta', $delta)
->execute();
db_delete('block_custom')
->condition('bid', $delta)
->execute();
db_delete('block_role')
->condition('module', $module)
->condition('delta', $delta)
->execute();
}
}
/**
* Add permissions.
*/
function foo_update_7010() {
user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('permission name')); // Anonymous users
user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('permission name')); // Authentificated users
user_role_grant_permissions(3, array('permission name')); // Role ID
}
/**
* Delete nodes and content types.
*/
function foo_update_7011() {
$types = array(
'forum',
'poll',
);
foreach($types as $type) {
// First, delete nodes
$results = db_select('node', 'n')
->fields('n', array('nid'))
->condition('type', $type)
->execute();
foreach ($results as $result) {
$nids[] = $result->nid;
}
if (!empty($nids)) {
node_delete_multiple($nids);
drupal_set_message(t('%count nodes has been deleted.', array('%count' => count($nids))));
}
// Then, delete content type
if (node_type_load($type)) {
node_type_delete($type);
variable_del('node_preview_' . $type);
drupal_set_message(t('%type content type has been deleted.', array('%type' => $type)));
}
}
node_types_rebuild();
menu_rebuild();
}
/**
* Add OG roles.
*/
function foo_update_7011() {
$group = 'node';
$bundle = 'group';
// Create new OG roles
$roles = array(
'Role 1',
'Role 2',
);
foreach ($roles as $role) {
$role = og_role_create($role, $group, 0, $bundle);
og_role_save($role);
}
}
/**
* Change OG permissions.
*/
function foo_update_7012() {
$group = 'node';
$bundle = 'circle';
// Change permissions
$og_roles = array_flip(og_roles($group, $bundle));
// Member role
$permissions = array(
'permission 1' => 0,
'permission 2' => 0,
);
og_role_change_permissions($og_roles[OG_AUTHENTICATED_ROLE], $permissions);
// Custom role
$permissions = array(
'permission 1' => 1,
'permission 2' => 1,
);
og_role_change_permissions($og_roles['Custom member'], $permissions);
}
/**
* Create new menu link.
*/
function foo_update_7013() {
$item = array(
'link_path' => '<front>',
'link_title' => 'Home',
'menu_name' => 'top-menu',
'weight' => -50,
'expanded' => 0,
'module' => 'menu',
);
menu_link_save($item);
}
/**
* Update menu link.
*/
function foo_update_7014() {
db_update('menu_links')
->fields(array(
'link_title' => 'New link name',
'expanded' => '1',
'weight' => '-47',
'hidden' => '0',
))
->condition('mlid', '7577')
->execute();
menu_rebuild();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment