comparison sites/all/modules/flexslider/flexslider.install @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents
children
comparison
equal deleted inserted replaced
1:67ce89da90df 2:b74b41bb73f0
1 <?php
2 /**
3 * @file
4 * Installation actions for FlexSlider
5 */
6
7 /**
8 * Implements hook_schema().
9 */
10 function flexslider_schema() {
11 $schema = array();
12
13 $schema['flexslider_optionset'] = array(
14 'description' => 'Store option sets for flexslider instances.',
15 'export' => array(
16 'key' => 'name',
17 'identifier' => 'preset',
18 'default hook' => 'flexslider_default_presets',
19 'api' => array(
20 'owner' => 'flexslider',
21 'api' => 'flexslider_default_preset',
22 'minimum_version' => 1,
23 'current_version' => 1,
24 ),
25 ),
26 'fields' => array(
27 'name' => array(
28 'description' => 'The machine-readable option set name.',
29 'type' => 'varchar',
30 'length' => 255,
31 'not null' => TRUE,
32 ),
33 'title' => array(
34 'description' => 'The human-readable title for this option set.',
35 'type' => 'varchar',
36 'length' => 255,
37 'not null' => TRUE,
38 ),
39 'theme' => array(
40 'description' => 'The flexslider theme.',
41 'type' => 'varchar',
42 'length' => 255,
43 'not null' => TRUE,
44 'default' => 'classic',
45 ),
46 'imagestyle_normal' => array(
47 'description' => 'The image style for normal images.',
48 'type' => 'varchar',
49 'length' => 255,
50 'not null' => TRUE,
51 'default' => 'flexslider_full',
52 ),
53 'imagestyle_thumbnail' => array(
54 'description' => 'The image style for thumbnail images.',
55 'type' => 'varchar',
56 'length' => 255,
57 'not null' => TRUE,
58 'default' => 'flexslider_thumbnail',
59 ),
60 'options' => array(
61 'description' => 'The options array.',
62 'type' => 'blob',
63 'size' => 'big',
64 'serialize' => TRUE,
65 ),
66 ),
67 'primary key' => array('name'),
68 );
69
70 return $schema;
71 }
72
73 /**
74 * Implements hook_install().
75 *
76 * Adds a 'default' option set for fresh installs.
77 */
78 function flexslider_install() {
79 // Do nothing for now
80 }
81
82 /**
83 * Implements hook_uninstall().
84 */
85 function flexslider_uninstall() {
86 variable_del('flexslider_debug');
87 variable_del('flexslider_version');
88 }
89
90 /**
91 * Implements hook_requirements().
92 */
93 function flexslider_requirements($phase) {
94 $requirements = array();
95 // Ensure translations don't break at install time
96 $t = get_t();
97
98 // Check to see if the flexslider library is available
99 if ($phase == 'runtime') {
100 $requirements['flexslider'] = array(
101 'title' => $t('FlexSlider'),
102 // @todo have the version automatically detected
103 'description' => $t('Version 2.0 installed'),
104 'severity' => REQUIREMENT_OK,
105 );
106 _flexslider_requirements_library_installed($requirements);
107 }
108 return $requirements;
109 }
110
111 /**
112 * Implements hook_update_N().
113 *
114 * Remove/Update table fields to better suit FlexSlider
115 */
116 function flexslider_update_7001(&$sandbox) {
117 $field_new = array(
118 'description' => 'The image style for normal images.',
119 'type' => 'varchar',
120 'length' => 255,
121 'not null' => TRUE,
122 'default' => 'flexslider_full',
123 );
124 // Change the default image style
125 db_change_field('flexslider_optionset', 'imagestyle_normal', $field_new, array());
126 // Drop the unused table column
127 db_drop_field('flexslider_optionset', 'imagestyle_thumb');
128 }
129
130 /**
131 * Implements hook_update_N().
132 *
133 * Enables the Image module since it is now explicitly listed as a
134 * dependency.
135 */
136 function flexslider_update_7002(&$sandbox) {
137 module_enable(array('image'));
138 }
139
140 /**
141 * Implements hook_update_N().
142 *
143 * Migrate settings from FlexSlider v1 to v2
144 */
145 function flexslider_update_7200(&$sandbox) {
146 $t = get_t();
147
148 $optionsets = flexslider_optionset_load_all();
149
150 foreach ($optionsets as $optionset) {
151 // Map old options to new keys/values
152 $optionset->options['animationSpeed'] = $optionset->options['animationDuration'];
153 $optionset->options['direction'] = $optionset->options['slidedirection'];
154 $optionset->options['keyboard'] = $optionset->options['keyboardnav'];
155 $optionset->options['startAt'] = $optionset->options['slidetostart'];
156 $optionset->options['start'] = $optionset->options['startCallback'];
157 $optionset->options['before'] = $optionset->options['beforeCallback'];
158 $optionset->options['after'] = $optionset->options['afterCallback'];
159 $optionset->options['end'] = $optionset->options['endCallback'];
160
161 // Delete any options which no longer exist
162 unset($optionset->options['animationDuration']);
163 unset($optionset->options['slidedirection']);
164 unset($optionset->options['keyboardnav']);
165 unset($optionset->options['startCallback']);
166 unset($optionset->options['beforeCallback']);
167 unset($optionset->options['afterCallback']);
168 unset($optionset->options['endCallback']);
169 unset($optionset->options['controlsContainer']); // This value changed in the new version. We have to reset it to the default value
170
171 // Merge in defaults for new options
172 $optionset->options += _flexslider_optionset_defaults();
173
174 // Save the updated optionset
175 flexslider_optionset_save($optionset);
176 }
177 drupal_set_message($t('Optionsets migrated. However it is recommended to go validate all your settings manually. Especially if you have callback functions defined. They may reference functions which no longer exist.'), 'warning');
178 }
179
180 function flexslider_update_7201(&$sandbox) {
181 $field_new = array(
182 'description' => 'The image style for thumbnail images.',
183 'type' => 'varchar',
184 'length' => 255,
185 'not null' => TRUE,
186 'default' => 'flexslider_thumbnail',
187 );
188 // Change the default image style
189 db_add_field('flexslider_optionset', 'imagestyle_thumbnail', $field_new, array());
190 }
191
192 /**
193 * Check if the library is available
194 *
195 * @param array $requirements
196 * Requirements definition
197 */
198 function _flexslider_requirements_library_installed(&$requirements) {
199 $t = get_t();
200
201 $path = libraries_get_path('flexslider');
202 $installed = file_exists($path . '/jquery.flexslider-min.js') && file_exists($path . '/jquery.flexslider.js');
203
204 // Check the results of the test
205 if (!$installed) {
206 $requirements['flexslider']['description'] = $t('FlexSlider library not found. Please consult the README.txt for installation instructions.');
207 $requirements['flexslider']['severity'] = REQUIREMENT_ERROR;
208 $requirements['flexslider']['value'] = $t('FlexSlider library not found.');
209 return;
210 }
211
212 $js = file_exists($path . '/jquery.flexslider-min.js') ? fopen($path . '/jquery.flexslider-min.js', 'r') : fopen($path . '/jquery.flexslider.js', 'r');
213 $header = fread($js, 64);
214 $matches = array();
215 if (preg_match("/ v([0-9]+)\.([0-9]+)/", $header, $matches)) {
216 if (!($matches[1] == 2 and $matches[2] >= 0)) {
217 $requirements['flexslider']['description'] = $t('FlexSlider must be version 2.0 or higher, but lower than version 3.0. Please consult the README.txt for installation instructions.');
218 $requirements['flexslider']['severity'] = REQUIREMENT_WARNING;
219 $requirements['flexslider']['value'] = $t('Incorrect version detected.');
220 return;
221 }
222 else {
223 $version = $matches[1] . "." . $matches[2];
224 variable_set('flexslider_version', $version);
225 $requirements['flexslider']['description'] = $t('Version %version installed', array( '%version' => $version));
226 $requirements['flexslider']['value'] = $t('FlexSlider library installed.');
227 return;
228 }
229 }
230 else {
231 $requirements['flexslider']['description'] = $t('FlexSlider version could not be determined. Please consult the README.txt for installation instructions.');
232 $requirements['flexslider']['severity'] = REQUIREMENT_WARNING;
233 $requirements['flexslider']['value'] = $t('Unable to detect version.');
234 }
235 }
236
237 // @todo add hook_update_N function to migrate old option set data to new values