annotate sites/all/modules/flexslider/flexslider.install @ 9:830c812b520f

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