danielebarchiesi@4: array( danielebarchiesi@4: 'name' => t('Image styles'), danielebarchiesi@4: 'feature_source' => TRUE, danielebarchiesi@4: 'default_hook' => 'image_default_styles', danielebarchiesi@4: 'alter_hook' => 'image_styles', danielebarchiesi@4: ) danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export_options(). danielebarchiesi@4: */ danielebarchiesi@4: function image_features_export_options() { danielebarchiesi@4: $options = array(); danielebarchiesi@4: foreach (image_styles() as $name => $style) { danielebarchiesi@4: $options[$name] = $style['name']; danielebarchiesi@4: } danielebarchiesi@4: return $options; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export(). danielebarchiesi@4: */ danielebarchiesi@4: function image_features_export($data, &$export, $module_name = '') { danielebarchiesi@4: $pipe = array(); danielebarchiesi@4: $map = features_get_default_map('image'); danielebarchiesi@4: foreach ($data as $style) { danielebarchiesi@4: $export['dependencies']['image'] = 'image'; danielebarchiesi@4: // If another module provides this style, add it as a dependency danielebarchiesi@4: if (isset($map[$style]) && $map[$style] != $module_name) { danielebarchiesi@4: $module = $map[$style]; danielebarchiesi@4: $export['dependencies'][$module] = $module; danielebarchiesi@4: } danielebarchiesi@4: // Otherwise, export the style danielebarchiesi@4: elseif (image_style_load($style)) { danielebarchiesi@4: $export['features']['image'][$style] = $style; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return $pipe; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export_render(). danielebarchiesi@4: */ danielebarchiesi@4: function image_features_export_render($module_name, $data, $export = NULL) { danielebarchiesi@4: $code = array(); danielebarchiesi@4: $code[] = ' $styles = array();'; danielebarchiesi@4: $code[] = ''; danielebarchiesi@4: foreach ($data as $name) { danielebarchiesi@4: if ($style = image_style_load($name)) { danielebarchiesi@4: _image_features_style_sanitize($style); danielebarchiesi@4: $style_export = features_var_export($style, ' '); danielebarchiesi@4: $style_identifier = features_var_export($name); danielebarchiesi@4: $code[] = " // Exported image style: {$name}."; danielebarchiesi@4: $code[] = " \$styles[{$style_identifier}] = {$style_export};"; danielebarchiesi@4: $code[] = ""; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: $code[] = ' return $styles;'; danielebarchiesi@4: $code = implode("\n", $code); danielebarchiesi@4: return array('image_default_styles' => $code); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_revert(). danielebarchiesi@4: */ danielebarchiesi@4: function image_features_revert($module) { danielebarchiesi@4: if ($default_styles = features_get_default('image', $module)) { danielebarchiesi@4: foreach (array_keys($default_styles) as $default_style) { danielebarchiesi@4: if ($style = image_style_load($default_style)) { danielebarchiesi@4: if ($style['storage'] != IMAGE_STORAGE_DEFAULT) { danielebarchiesi@4: image_default_style_revert($style); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Remove unnecessary keys for export. danielebarchiesi@4: */ danielebarchiesi@4: function _image_features_style_sanitize(&$style, $child = FALSE) { danielebarchiesi@4: $omit = $child ? array('isid', 'ieid', 'storage') : array('isid', 'ieid', 'storage', 'module'); danielebarchiesi@4: if (is_array($style)) { danielebarchiesi@4: foreach ($style as $k => $v) { danielebarchiesi@4: if (in_array($k, $omit, TRUE)) { danielebarchiesi@4: unset($style[$k]); danielebarchiesi@4: } danielebarchiesi@4: else if (is_array($v)) { danielebarchiesi@4: _image_features_style_sanitize($style[$k], TRUE); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: }