summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-11-01 00:44:31 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-11-01 00:44:31 +0000
commitd4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2 (patch)
tree635130c2deb28a9b57f612744f7fdd120f360fe8
parenta6c043b1aa6258292826eb784fdcc422feb0649f (diff)
downloadbrdo-d4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2.tar.gz
brdo-d4b10cce5aa0ef7e0ec32d181c94bc07c98d91e2.tar.bz2
#950878 follow-up: Commit the dang install file.
-rw-r--r--modules/dashboard/dashboard.install79
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');
+}