diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-11-01 00:44:31 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-11-01 00:44:31 +0000 |
commit | d4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2 (patch) | |
tree | 635130c2deb28a9b57f612744f7fdd120f360fe8 | |
parent | a6c043b1aa6258292826eb784fdcc422feb0649f (diff) | |
download | brdo-d4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2.tar.gz brdo-d4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2.tar.bz2 |
#950878 follow-up: Commit the dang install file.
-rw-r--r-- | modules/dashboard/dashboard.install | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/modules/dashboard/dashboard.install b/modules/dashboard/dashboard.install new file mode 100644 index 000000000..1a80993c4 --- /dev/null +++ b/modules/dashboard/dashboard.install @@ -0,0 +1,79 @@ +<?php +// $Id$ + +/** + * @file + * Install, update and uninstall functions for the dashboard module. + */ + +/** + * Implements hook_disable(). + * + * Stash a list of blocks enabled on the dashboard, so they can be re-enabled + * if the dashboard is re-enabled. Then disable those blocks, since the + * dashboard regions will no longer be defined. + */ +function dashboard_disable() { + // Stash a list of currently enabled blocks. + $stashed_blocks = array(); + + $result = db_select('block', 'b') + ->fields('b', array('module', 'delta', 'region')) + ->condition('b.region', dashboard_regions(), 'IN') + ->execute(); + + foreach ($result as $block) { + $stashed_blocks[] = array( + 'module' => $block->module, + 'delta' => $block->delta, + 'region' => $block->region, + ); + } + variable_set('dashboard_stashed_blocks', $stashed_blocks); + + // Disable the dashboard blocks. + db_update('block') + ->fields(array( + 'status' => 0, + 'region' => BLOCK_REGION_NONE, + )) + ->condition('region', dashboard_regions(), 'IN') + ->execute(); +} + +/** + * Implements hook_enable(). + * + * Restores blocks to the dashboard that were there when the dashboard module + * was disabled. + */ +function dashboard_enable() { + global $theme_key; + if (!$stashed_blocks = variable_get('dashboard_stashed_blocks')) { + return; + } + if (!$admin_theme = variable_get('admin_theme')) { + drupal_theme_initialize(); + $admin_theme = $theme_key; + } + foreach ($stashed_blocks as $block) { + db_update('block') + ->fields(array( + 'status' => 1, + 'region' => $block['region'] + )) + ->condition('module', $block['module']) + ->condition('delta', $block['delta']) + ->condition('theme', $admin_theme) + ->condition('status', 0) + ->execute(); + } + variable_del('dashboard_stashed_blocks'); +} + +/** + * Implements hook_uninstall(). + */ +function dashboard_uninstall() { + variable_del('dashboard_stashed_blocks'); +} |