Last active
April 15, 2016 04:59
-
-
Save mrded/ddf2c1fd871f8c92f20f35018f29d594 to your computer and use it in GitHub Desktop.
Drupal 7 - Useful hook_update_N
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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