danielebarchiesi@2: 'Store option sets for flexslider instances.', danielebarchiesi@2: 'export' => array( danielebarchiesi@2: 'key' => 'name', danielebarchiesi@2: 'identifier' => 'preset', danielebarchiesi@2: 'default hook' => 'flexslider_default_presets', danielebarchiesi@2: 'api' => array( danielebarchiesi@2: 'owner' => 'flexslider', danielebarchiesi@2: 'api' => 'flexslider_default_preset', danielebarchiesi@2: 'minimum_version' => 1, danielebarchiesi@2: 'current_version' => 1, danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: 'fields' => array( danielebarchiesi@2: 'name' => array( danielebarchiesi@2: 'description' => 'The machine-readable option set name.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'title' => array( danielebarchiesi@2: 'description' => 'The human-readable title for this option set.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'theme' => array( danielebarchiesi@2: 'description' => 'The flexslider theme.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'classic', danielebarchiesi@2: ), danielebarchiesi@2: 'imagestyle_normal' => array( danielebarchiesi@2: 'description' => 'The image style for normal images.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'flexslider_full', danielebarchiesi@2: ), danielebarchiesi@2: 'imagestyle_thumbnail' => array( danielebarchiesi@2: 'description' => 'The image style for thumbnail images.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'flexslider_thumbnail', danielebarchiesi@2: ), danielebarchiesi@2: 'options' => array( danielebarchiesi@2: 'description' => 'The options array.', danielebarchiesi@2: 'type' => 'blob', danielebarchiesi@2: 'size' => 'big', danielebarchiesi@2: 'serialize' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: 'primary key' => array('name'), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: return $schema; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_install(). danielebarchiesi@2: * danielebarchiesi@2: * Adds a 'default' option set for fresh installs. danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_install() { danielebarchiesi@2: // Do nothing for now danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_uninstall(). danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_uninstall() { danielebarchiesi@2: variable_del('flexslider_debug'); danielebarchiesi@2: variable_del('flexslider_version'); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_requirements(). danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_requirements($phase) { danielebarchiesi@2: $requirements = array(); danielebarchiesi@2: // Ensure translations don't break at install time danielebarchiesi@2: $t = get_t(); danielebarchiesi@2: danielebarchiesi@2: // Check to see if the flexslider library is available danielebarchiesi@2: if ($phase == 'runtime') { danielebarchiesi@2: $requirements['flexslider'] = array( danielebarchiesi@2: 'title' => $t('FlexSlider'), danielebarchiesi@2: // @todo have the version automatically detected danielebarchiesi@2: 'description' => $t('Version 2.0 installed'), danielebarchiesi@2: 'severity' => REQUIREMENT_OK, danielebarchiesi@2: ); danielebarchiesi@2: _flexslider_requirements_library_installed($requirements); danielebarchiesi@2: } danielebarchiesi@2: return $requirements; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_update_N(). danielebarchiesi@2: * danielebarchiesi@2: * Remove/Update table fields to better suit FlexSlider danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_update_7001(&$sandbox) { danielebarchiesi@2: $field_new = array( danielebarchiesi@2: 'description' => 'The image style for normal images.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'flexslider_full', danielebarchiesi@2: ); danielebarchiesi@2: // Change the default image style danielebarchiesi@2: db_change_field('flexslider_optionset', 'imagestyle_normal', $field_new, array()); danielebarchiesi@2: // Drop the unused table column danielebarchiesi@2: db_drop_field('flexslider_optionset', 'imagestyle_thumb'); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_update_N(). danielebarchiesi@2: * danielebarchiesi@2: * Enables the Image module since it is now explicitly listed as a danielebarchiesi@2: * dependency. danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_update_7002(&$sandbox) { danielebarchiesi@2: module_enable(array('image')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_update_N(). danielebarchiesi@2: * danielebarchiesi@2: * Migrate settings from FlexSlider v1 to v2 danielebarchiesi@2: */ danielebarchiesi@2: function flexslider_update_7200(&$sandbox) { danielebarchiesi@2: $t = get_t(); danielebarchiesi@2: danielebarchiesi@2: $optionsets = flexslider_optionset_load_all(); danielebarchiesi@2: danielebarchiesi@2: foreach ($optionsets as $optionset) { danielebarchiesi@2: // Map old options to new keys/values danielebarchiesi@2: $optionset->options['animationSpeed'] = $optionset->options['animationDuration']; danielebarchiesi@2: $optionset->options['direction'] = $optionset->options['slidedirection']; danielebarchiesi@2: $optionset->options['keyboard'] = $optionset->options['keyboardnav']; danielebarchiesi@2: $optionset->options['startAt'] = $optionset->options['slidetostart']; danielebarchiesi@2: $optionset->options['start'] = $optionset->options['startCallback']; danielebarchiesi@2: $optionset->options['before'] = $optionset->options['beforeCallback']; danielebarchiesi@2: $optionset->options['after'] = $optionset->options['afterCallback']; danielebarchiesi@2: $optionset->options['end'] = $optionset->options['endCallback']; danielebarchiesi@2: danielebarchiesi@2: // Delete any options which no longer exist danielebarchiesi@2: unset($optionset->options['animationDuration']); danielebarchiesi@2: unset($optionset->options['slidedirection']); danielebarchiesi@2: unset($optionset->options['keyboardnav']); danielebarchiesi@2: unset($optionset->options['startCallback']); danielebarchiesi@2: unset($optionset->options['beforeCallback']); danielebarchiesi@2: unset($optionset->options['afterCallback']); danielebarchiesi@2: unset($optionset->options['endCallback']); danielebarchiesi@2: unset($optionset->options['controlsContainer']); // This value changed in the new version. We have to reset it to the default value danielebarchiesi@2: danielebarchiesi@2: // Merge in defaults for new options danielebarchiesi@2: $optionset->options += _flexslider_optionset_defaults(); danielebarchiesi@2: danielebarchiesi@2: // Save the updated optionset danielebarchiesi@2: flexslider_optionset_save($optionset); danielebarchiesi@2: } danielebarchiesi@2: 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: } danielebarchiesi@2: danielebarchiesi@2: function flexslider_update_7201(&$sandbox) { danielebarchiesi@2: $field_new = array( danielebarchiesi@2: 'description' => 'The image style for thumbnail images.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'flexslider_thumbnail', danielebarchiesi@2: ); danielebarchiesi@2: // Change the default image style danielebarchiesi@2: db_add_field('flexslider_optionset', 'imagestyle_thumbnail', $field_new, array()); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Check if the library is available danielebarchiesi@2: * danielebarchiesi@2: * @param array $requirements danielebarchiesi@2: * Requirements definition danielebarchiesi@2: */ danielebarchiesi@2: function _flexslider_requirements_library_installed(&$requirements) { danielebarchiesi@2: $t = get_t(); danielebarchiesi@2: danielebarchiesi@2: $path = libraries_get_path('flexslider'); danielebarchiesi@2: $installed = file_exists($path . '/jquery.flexslider-min.js') && file_exists($path . '/jquery.flexslider.js'); danielebarchiesi@2: danielebarchiesi@2: // Check the results of the test danielebarchiesi@2: if (!$installed) { danielebarchiesi@2: $requirements['flexslider']['description'] = $t('FlexSlider library not found. Please consult the README.txt for installation instructions.'); danielebarchiesi@2: $requirements['flexslider']['severity'] = REQUIREMENT_ERROR; danielebarchiesi@2: $requirements['flexslider']['value'] = $t('FlexSlider library not found.'); danielebarchiesi@2: return; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $js = file_exists($path . '/jquery.flexslider-min.js') ? fopen($path . '/jquery.flexslider-min.js', 'r') : fopen($path . '/jquery.flexslider.js', 'r'); danielebarchiesi@2: $header = fread($js, 64); danielebarchiesi@2: $matches = array(); danielebarchiesi@2: if (preg_match("/ v([0-9]+)\.([0-9]+)/", $header, $matches)) { danielebarchiesi@2: if (!($matches[1] == 2 and $matches[2] >= 0)) { danielebarchiesi@2: $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: $requirements['flexslider']['severity'] = REQUIREMENT_WARNING; danielebarchiesi@2: $requirements['flexslider']['value'] = $t('Incorrect version detected.'); danielebarchiesi@2: return; danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $version = $matches[1] . "." . $matches[2]; danielebarchiesi@2: variable_set('flexslider_version', $version); danielebarchiesi@2: $requirements['flexslider']['description'] = $t('Version %version installed', array( '%version' => $version)); danielebarchiesi@2: $requirements['flexslider']['value'] = $t('FlexSlider library installed.'); danielebarchiesi@2: return; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $requirements['flexslider']['description'] = $t('FlexSlider version could not be determined. Please consult the README.txt for installation instructions.'); danielebarchiesi@2: $requirements['flexslider']['severity'] = REQUIREMENT_WARNING; danielebarchiesi@2: $requirements['flexslider']['value'] = $t('Unable to detect version.'); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // @todo add hook_update_N function to migrate old option set data to new values