annotate modules/dashboard/dashboard.install @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Install, update and uninstall functions for the dashboard module.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Implements hook_disable().
danielebarchiesi@0 10 *
danielebarchiesi@0 11 * Stash a list of blocks enabled on the dashboard, so they can be re-enabled
danielebarchiesi@0 12 * if the dashboard is re-enabled. Then disable those blocks, since the
danielebarchiesi@0 13 * dashboard regions will no longer be defined.
danielebarchiesi@0 14 */
danielebarchiesi@0 15 function dashboard_disable() {
danielebarchiesi@0 16 // Stash a list of currently enabled blocks.
danielebarchiesi@0 17 $stashed_blocks = array();
danielebarchiesi@0 18
danielebarchiesi@0 19 $result = db_select('block', 'b')
danielebarchiesi@0 20 ->fields('b', array('module', 'delta', 'region'))
danielebarchiesi@0 21 ->condition('b.region', dashboard_regions(), 'IN')
danielebarchiesi@0 22 ->execute();
danielebarchiesi@0 23
danielebarchiesi@0 24 foreach ($result as $block) {
danielebarchiesi@0 25 $stashed_blocks[] = array(
danielebarchiesi@0 26 'module' => $block->module,
danielebarchiesi@0 27 'delta' => $block->delta,
danielebarchiesi@0 28 'region' => $block->region,
danielebarchiesi@0 29 );
danielebarchiesi@0 30 }
danielebarchiesi@0 31 variable_set('dashboard_stashed_blocks', $stashed_blocks);
danielebarchiesi@0 32
danielebarchiesi@0 33 // Disable the dashboard blocks.
danielebarchiesi@0 34 db_update('block')
danielebarchiesi@0 35 ->fields(array(
danielebarchiesi@0 36 'status' => 0,
danielebarchiesi@0 37 'region' => BLOCK_REGION_NONE,
danielebarchiesi@0 38 ))
danielebarchiesi@0 39 ->condition('region', dashboard_regions(), 'IN')
danielebarchiesi@0 40 ->execute();
danielebarchiesi@0 41 }
danielebarchiesi@0 42
danielebarchiesi@0 43 /**
danielebarchiesi@0 44 * Implements hook_enable().
danielebarchiesi@0 45 *
danielebarchiesi@0 46 * Restores blocks to the dashboard that were there when the dashboard module
danielebarchiesi@0 47 * was disabled.
danielebarchiesi@0 48 */
danielebarchiesi@0 49 function dashboard_enable() {
danielebarchiesi@0 50 global $theme_key;
danielebarchiesi@0 51 if (!$stashed_blocks = variable_get('dashboard_stashed_blocks')) {
danielebarchiesi@0 52 return;
danielebarchiesi@0 53 }
danielebarchiesi@0 54 if (!$admin_theme = variable_get('admin_theme')) {
danielebarchiesi@0 55 drupal_theme_initialize();
danielebarchiesi@0 56 $admin_theme = $theme_key;
danielebarchiesi@0 57 }
danielebarchiesi@0 58 foreach ($stashed_blocks as $block) {
danielebarchiesi@0 59 db_update('block')
danielebarchiesi@0 60 ->fields(array(
danielebarchiesi@0 61 'status' => 1,
danielebarchiesi@0 62 'region' => $block['region']
danielebarchiesi@0 63 ))
danielebarchiesi@0 64 ->condition('module', $block['module'])
danielebarchiesi@0 65 ->condition('delta', $block['delta'])
danielebarchiesi@0 66 ->condition('theme', $admin_theme)
danielebarchiesi@0 67 ->condition('status', 0)
danielebarchiesi@0 68 ->execute();
danielebarchiesi@0 69 }
danielebarchiesi@0 70 variable_del('dashboard_stashed_blocks');
danielebarchiesi@0 71 }
danielebarchiesi@0 72
danielebarchiesi@0 73 /**
danielebarchiesi@0 74 * Implements hook_uninstall().
danielebarchiesi@0 75 */
danielebarchiesi@0 76 function dashboard_uninstall() {
danielebarchiesi@0 77 variable_del('dashboard_stashed_blocks');
danielebarchiesi@0 78 }