Project

General

Profile

Download (8.27 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/**
3
 * @file
4
 * Install, update and uninstall functions for the cdm_dataportal module.
5
 */
6

    
7
/**
8
 * Implements hook_install().
9
 */
10
function cdm_dataportal_install() {
11
  db_update('system')
12
    ->fields(array(
13
      'weight' => 20,
14
    ))
15
    ->condition('name', 'cdm_dataportal')
16
    ->execute();
17
}
18

    
19
/**
20
 * Implements hook_uninstall().
21
 */
22
function cdm_dataportal_uninstall() {
23
  // Delete all nodes with a cdm content type from the node table.
24
  // Comment @WA: you also may want to delete these content types from the
25
  // node_type table.
26
  db_delete('node')
27
    ->condition('type', 'cdm_%')
28
    ->execute();
29
}
30

    
31
/*
32
 * update functions:
33
 *
34
 * - 1 digit for Drupal core compatibility.
35
 * - 1 digit for your module's major release version (e.g., is this the 7.x-1.* (1) or 7.x-2.* (2) series of your module?). This digit should be 0 for initial porting of your module to a new Drupal core API.
36
 * - 2 digits for sequential counting, starting with 00.
37
 *
38
 * @see http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_update_N/7
39
 */
40

    
41
/**
42
 * update for RELEASE 3.1.3:
43
 *  - reset edit_map_server variable to default
44
 */
45
function cdm_dataportal_update_7301() {
46
  // reset edit_map_server variable to default
47
   return _remove_variable('edit_map_server');
48
}
49

    
50
/**
51
 * update for RELEASE 3.1.4:
52
 *  - reset edit_map_server variable to default
53
 */
54
function cdm_dataportal_update_7302() {
55

    
56
  return
57
  _remove_variable('edit_map_server') . // once again reset edit_map_server variable to default
58
  _rename_variable('cdm_dataportal_show_media', 'cdm_images_include_children');
59
}
60

    
61
/**
62
 * update for RELEASE 3.2.1:
63
 *  - adding missing permissions for role CDM Admin
64
 */
65
function cdm_dataportal_update_7303() {
66
  $role = user_role_load_by_name('CDM admin');
67
  if(!$role){
68
    return "Role CDM admin not found, so the update is skipped.";
69
  }
70

    
71
  $tasks_performed = array();
72

    
73
  // permissions for node types
74
  $node_type_names = node_type_get_names();
75
  $types_to_update = array('page', 'story', 'article');
76
  foreach ($types_to_update as $name){
77
    if(in_array($name, $node_type_names)) {
78
      $node_type_permissions = array(
79
          'create ' . $name . ' content',
80
          'edit any ' . $name . ' content',
81
          'edit own ' . $name . ' content',
82
          'delete any ' . $name . ' content',
83
          'delete own ' . $name . ' content',
84
      );
85
      user_role_grant_permissions($role->rid, $node_type_permissions);
86
      $tasks_performed[] = "node type " . $name;
87
    }
88
  }
89

    
90
  if(module_exists('extlinks')){
91
    $extlinks_permissions = array(
92
        'access extlinks content',
93
        'administer extlinks',
94
    );
95
    user_role_grant_permissions($role->rid, $extlinks_permissions);
96
    $tasks_performed[] = 'permissions for extlinks';
97
  }
98

    
99
  foreach (filter_formats() as $key=>$format){
100
    if($key == 'full_html' || $format->format == "Full HTML"){
101
      $formats_permissions = array(
102
          'use text format full_html'
103
      );
104
      user_role_grant_permissions($role->rid, $formats_permissions);
105
      $tasks_performed[] = 'use text format full_html';
106
    }
107
  }
108

    
109
  // assure  'create url aliases' can be set
110
  if(!module_exists('path')){
111
    module_enable(array('path'), TRUE);
112
    $tasks_performed[] = 'module path enabled';
113
  }
114
  $other_permissions = array(
115
      'create url aliases',
116
      'delete revisions',
117
      'revert revisions',
118
      'view own unpublished content',
119
      'flush caches'
120
  );
121
  user_role_grant_permissions($role->rid, $other_permissions);
122
  $tasks_performed[] = 'and other permissions';
123

    
124
  return "adding missing permissions for role CDM Admin: " . join(', ', $tasks_performed);
125
}
126

    
127

    
128
/**
129
 * update for RELEASE 3.2.2:
130
 *  - migrating variable cdm_dataportal_show_default_image to cdm_taxon_profile_image['show']
131
 *  - enabling required module file
132
 *  - enable new debug block for all dataportals
133
 */
134
function cdm_dataportal_update_7304() {
135

    
136
    module_enable(array('file'), TRUE);
137
    $tasks_performed[] = 'module file enabled';
138

    
139
    if(!variable_get(CDM_TAXON_PROFILE_IMAGE, FALSE)){
140
      $cdm_taxon_profile_image_settings = unserialize(CDM_TAXON_PROFILE_IMAGE_DEFAULT);
141
      $cdm_taxon_profile_image_settings['show'] = variable_get('cdm_dataportal_show_default_image', 0);
142
      variable_set(CDM_TAXON_PROFILE_IMAGE, $cdm_taxon_profile_image_settings);
143
      variable_del('cdm_dataportal_show_default_image');
144
      $tasks_performed[] = 'migrating variable cdm_dataportal_show_default_image to cdm_taxon_profile_image[\'show\']';
145
    }
146

    
147
    $cdm_admin_role = user_role_load_by_name('CDM admin');
148
    $admin_role = user_role_load_by_name("admin");
149
    if(!$admin_role){
150
      $admin_role = user_role_load_by_name("administrator");
151
    }
152
    user_multiple_role_edit(array(1), 'add_role', $admin_role->rid);
153
    $tasks_performed[] = 'admin user (uid=1) added to role ' . $admin_role->name;
154

    
155
    // CDM web service debug block
156
    $cdm_ws_debug_block = array(
157
        'block' => array(
158
            'module' => 'cdm_api',
159
            'delta' => 'cdm_ws_debug',
160
            'theme' => NULL,
161
            'status' => 1,
162
            'weight' => -50,
163
            'region' => 'sidebar_first',
164
            'pages' => '',
165
            'cache' => -1,
166
        ),
167
        'block_role' =>
168
            array(
169
                array(
170
                  'module' => 'cdm_api',
171
                  'delta' => 'cdm_ws_debug',
172
                  'rid' => $cdm_admin_role->rid
173
               ),
174
                array(
175
                  'module' => 'cdm_api',
176
                  'delta' => 'cdm_ws_debug',
177
                  'rid' => $admin_role->rid
178
               )
179
        )
180
    );
181
    // clean up existing block configuration which might be set by drupal automatically, we need to override this
182
    db_delete('block')->condition('module', 'cdm_api')->execute();
183
    db_delete('block_role')->condition('module', 'cdm_api')->execute();
184
    // insert
185
    $block_insert = db_insert('block')->fields(array('module', 'delta', 'theme', 'status', 'weight', 'region', 'pages', 'cache'));
186
    $block_role_insert = db_insert('block_role')->fields(array('module', 'delta', 'rid'));
187

    
188
    $themes = system_list('theme');
189
    foreach ($themes as $theme) {
190
      if($theme->status == "1"){ // only for enabled themes
191
        $cdm_ws_debug_block['block']['theme'] = $theme->name;
192
        $block_insert->values($cdm_ws_debug_block['block']);
193
      }
194
    }
195
    foreach($cdm_ws_debug_block['block_role'] as $block_role){
196
      $block_role_insert->values($block_role);
197
    }
198
    $block_insert->execute();
199
    $block_role_insert->execute();
200
    $tasks_performed[] = 'CDM web service debug block enabled for \'CDM admin\' users in all themes';
201
    $tasks_performed[] = _remove_variable('cdm_webservice_debug');
202
    $tasks_performed[] = _remove_variable('cdm_webservice_isStub');
203

    
204
    return  join(', ',$tasks_performed);
205
}
206

    
207

    
208
/**
209
 * Renames a persistent variable.
210
 *
211
 * @return
212
 *   A message string of the performed operation.
213
 */
214
function _rename_variable($old_name, $new_name) {
215
  $success = FALSE;
216
  $value = variable_get($old_name, FALSE);
217
  variable_del($old_name);
218
  if ($value !== FALSE) {
219
    variable_set($new_name, $value);
220
    $success = variable_get($new_name, FALSE) === $value;
221
  }
222
  else {
223
    $success = TRUE;
224
  }
225

    
226
  return "Variable '$old_name' to '$new_name' renamed. ";
227
}
228

    
229
/**
230
 * Unsets a persistent variable.
231
 *
232
 * Calls variable_del() and returns a message string.
233
 *
234
 * @return
235
 *   A message string of the performed operation.
236
 */
237
function _remove_variable($name) {
238
  variable_del($name);
239
  return "Variable '$name' removed. ";
240
}
241

    
242
/**
243
 * Sets a persistent variable.
244
 *
245
 * Calls variable_set() and returns a message string.
246
 *
247
 * @return
248
 *   A message string of the performed operation.
249
 */
250
function _create_variable($name, $value) {
251
  variable_set($name, $value);
252
  return "Variable '$name' created with value: '$value'. ";
253
}
254

    
255
/**
256
 * Overwrites a persistent variable.
257
 *
258
 * Calls _create_variable() and returns a message string.
259
 *
260
 * @return
261
 *   A message string of the performed operation.
262
 */
263
function _modify_variable($name, $value_override) {
264
  /*
265
   * FIXME take care for correct handling of tree variables
266
   * for example description_gallery contains the array:
267
   * Array
268
   (
269
   [cdm_dataportal_show_thumbnail_captions] => 1
270
   [cdm_dataportal_media_maxextend] => 120
271
   [cdm_dataportal_media_cols] => 4
272
   )
273
   * -----> solutions merge arrays !!!
274
   */
275
  return _create_variable($name, $value_override);
276
}
277

    
278

    
(5-5/13)