1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * @file |
---|
5 | * Installation and update functions. |
---|
6 | */ |
---|
7 | |
---|
8 | /** |
---|
9 | * Implementation of hook_uninstall(). |
---|
10 | */ |
---|
11 | function views_bulk_operations_uninstall() { |
---|
12 | variable_del('views_bulk_operations_actions'); |
---|
13 | actions_synchronize(actions_list(), TRUE); |
---|
14 | } |
---|
15 | |
---|
16 | /** |
---|
17 | * Implementation of hook_update_N(). |
---|
18 | * |
---|
19 | * Replace MD5 hashes with meaningful strings in selected operations arrays. |
---|
20 | */ |
---|
21 | function views_bulk_operations_update_6000() { |
---|
22 | drupal_load('module', 'views'); |
---|
23 | drupal_load('module', 'views_bulk_operations'); |
---|
24 | views_include('cache'); |
---|
25 | |
---|
26 | $operations = array(); |
---|
27 | foreach (array_keys(_views_bulk_operations_get_object_info()) as $object_type) { |
---|
28 | $hook_name = $object_type .'_operations'; |
---|
29 | foreach (module_invoke_all($hook_name) as $operation) { |
---|
30 | if (!empty($operation['callback'])) { |
---|
31 | $key = md5($operation['callback'] . (isset($operation['callback arguments']) ? serialize($operation['callback arguments']) : '')); |
---|
32 | $operations[$key] = $operation['callback'] . (empty($operation['callback arguments']) ? '' : ':'. md5(serialize($operation['callback arguments']))); |
---|
33 | } |
---|
34 | } |
---|
35 | } |
---|
36 | $result = db_query("SELECT * FROM {actions} WHERE parameters > ''"); |
---|
37 | while ($action = db_fetch_object($result)) { |
---|
38 | $key = md5($action->aid); |
---|
39 | $parameters = unserialize($action->parameters); |
---|
40 | $operations[$key] = $action->callback . (empty($parameters) ? '' : ':'. md5($action->parameters)); |
---|
41 | } |
---|
42 | foreach (array_keys(actions_list()) as $callback) { |
---|
43 | $key = md5($callback); |
---|
44 | $operations[$key] = $callback; |
---|
45 | } |
---|
46 | foreach (views_get_all_views() as $name => $view) { |
---|
47 | $changed = FALSE; |
---|
48 | foreach (array_keys($view->display) as $display) { |
---|
49 | $display_options = &$view->display[$display]->display_options; |
---|
50 | if (isset($display_options['style_plugin']) && $display_options['style_plugin'] == 'bulk') { |
---|
51 | $changed = TRUE; |
---|
52 | $selected_operations = isset($display_options['style_options']['selected_operations']) && is_array($display_options['style_options']['selected_operations']) ? |
---|
53 | array_filter($display_options['style_options']['selected_operations']) : array(); |
---|
54 | $display_options['style_options']['selected_operations'] = array(); |
---|
55 | if (!empty($selected_operations)) foreach ($selected_operations as $operation) { |
---|
56 | // If an old operation is identified, replace it. |
---|
57 | $display_options['style_options']['selected_operations'][] = isset($operations[$operation]) ? $operations[$operation] : $operation; |
---|
58 | } |
---|
59 | } |
---|
60 | } |
---|
61 | if ($changed) { |
---|
62 | $view->save(); |
---|
63 | views_object_cache_clear('view', $name); |
---|
64 | } |
---|
65 | } |
---|
66 | cache_clear_all('*', 'cache_views'); |
---|
67 | return array(); |
---|
68 | } |
---|
69 | |
---|
70 | /** |
---|
71 | * Implementation of hook_update_N(). |
---|
72 | * |
---|
73 | * Update VBO settings to latest version. |
---|
74 | */ |
---|
75 | function views_bulk_operations_update_6001() { |
---|
76 | drupal_load('module', 'views'); |
---|
77 | drupal_load('module', 'views_bulk_operations'); |
---|
78 | views_include('cache'); |
---|
79 | |
---|
80 | foreach (views_get_all_views() as $name => $view) { |
---|
81 | $changed = FALSE; |
---|
82 | foreach (array_keys($view->display) as $display) { |
---|
83 | $display_options = &$view->display[$display]->display_options; |
---|
84 | if (isset($display_options['style_plugin']) && $display_options['style_plugin'] == 'bulk') { |
---|
85 | if (!empty($display_options['style_options']['selected_operations'])) { |
---|
86 | $changed = TRUE; |
---|
87 | foreach (array_filter($display_options['style_options']['selected_operations']) as $key) { |
---|
88 | // Adjust operation key. |
---|
89 | $new_key = str_replace(':', '-', $key); |
---|
90 | |
---|
91 | // Move selected operations. |
---|
92 | $display_options['style_options']['operations'][$new_key]['selected'] = TRUE; |
---|
93 | |
---|
94 | // Move operation labels. |
---|
95 | if (isset($display_options['style_options']['labels'][$key])) { |
---|
96 | $display_options['style_options']['operations'][$new_key]['label'] = $display_options['style_options']['labels'][$key]; |
---|
97 | } |
---|
98 | |
---|
99 | // Move operations settings. |
---|
100 | if (isset($display_options['style_options'][$key])) { |
---|
101 | $display_options['style_options']['operations'][$new_key]['settings'] = $display_options['style_options'][$key]; |
---|
102 | unset($display_options['style_options'][$key]); |
---|
103 | } |
---|
104 | |
---|
105 | // Move skip confirmation. |
---|
106 | $display_options['style_options']['operations'][$new_key]['skip_confirmation'] = $display_options['style_options']['skip_confirmation']; |
---|
107 | } |
---|
108 | |
---|
109 | // Unset old values. |
---|
110 | unset($display_options['style_options']['selected_operations']); |
---|
111 | unset($display_options['style_options']['labels']); |
---|
112 | unset($display_options['style_options']['skip_confirmation']); |
---|
113 | } |
---|
114 | } |
---|
115 | } |
---|
116 | if ($changed) { |
---|
117 | $view->save(); |
---|
118 | views_object_cache_clear('view', $name); |
---|
119 | } |
---|
120 | } |
---|
121 | cache_clear_all('*', 'cache_views'); |
---|
122 | return array(); |
---|
123 | } |
---|
124 | |
---|
125 | /** |
---|
126 | * Implementation of hook_update_N(). |
---|
127 | * |
---|
128 | * Delete variable views_bulk_operations_actions to pick up new actions. |
---|
129 | */ |
---|
130 | function views_bulk_operations_update_6002() { |
---|
131 | variable_del('views_bulk_operations_actions'); |
---|
132 | return array(); |
---|
133 | } |
---|