Project

General

Profile

Paste
Download (1.9 KB) Statistics
| Branch: | Revision:

root / drupal7 / modules / dashboard / dashboard.install @ bd0d4c5c

1
<?php
2

    
3
/**
4
 * @file
5
 * Install, update and uninstall functions for the dashboard module.
6
 */
7

    
8
/**
9
 * Implements hook_disable().
10
 *
11
 * Stash a list of blocks enabled on the dashboard, so they can be re-enabled
12
 * if the dashboard is re-enabled. Then disable those blocks, since the
13
 * dashboard regions will no longer be defined.
14
 */
15
function dashboard_disable() {
16
  // Stash a list of currently enabled blocks.
17
  $stashed_blocks = array();
18

    
19
  $result = db_select('block', 'b')
20
    ->fields('b', array('module', 'delta', 'region'))
21
    ->condition('b.region', dashboard_regions(), 'IN')
22
    ->execute();
23

    
24
  foreach ($result as $block) {
25
    $stashed_blocks[] = array(
26
      'module' => $block->module,
27
      'delta' => $block->delta,
28
      'region' => $block->region,
29
    );
30
  }
31
  variable_set('dashboard_stashed_blocks', $stashed_blocks);
32

    
33
  // Disable the dashboard blocks.
34
  db_update('block')
35
    ->fields(array(
36
      'status' => 0,
37
      'region' => BLOCK_REGION_NONE,
38
    ))
39
    ->condition('region', dashboard_regions(), 'IN')
40
    ->execute();
41
}
42

    
43
/**
44
 * Implements hook_enable().
45
 *
46
 * Restores blocks to the dashboard that were there when the dashboard module
47
 * was disabled.
48
 */
49
function dashboard_enable() {
50
  global $theme_key;
51
  if (!$stashed_blocks = variable_get('dashboard_stashed_blocks')) {
52
    return;
53
  }
54
  if (!$admin_theme = variable_get('admin_theme')) {
55
    drupal_theme_initialize();
56
    $admin_theme = $theme_key;
57
  }
58
  foreach ($stashed_blocks as $block) {
59
    db_update('block')
60
      ->fields(array(
61
        'status' => 1,
62
        'region' => $block['region']
63
      ))
64
      ->condition('module', $block['module'])
65
      ->condition('delta', $block['delta'])
66
      ->condition('theme', $admin_theme)
67
      ->condition('status', 0)
68
      ->execute();
69
  }
70
  variable_del('dashboard_stashed_blocks');
71
}
72

    
73
/**
74
 * Implements hook_uninstall().
75
 */
76
function dashboard_uninstall() {
77
  variable_del('dashboard_stashed_blocks');
78
}