| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | <?php/** * Implements hook_features_api(). */function image_features_api() {  return array(    'image' => array(      'name' => t('Image styles'),      'feature_source' => TRUE,      'default_hook' => 'image_default_styles',      'alter_hook' => 'image_styles',    )  );}/** * Implements hook_features_export_options(). */function image_features_export_options() {  $options = array();  foreach (image_styles() as $name => $style) {    $options[$name] = $style['name'];  }  return $options;}/** * Implements hook_features_export(). */function image_features_export($data, &$export, $module_name = '') {  $pipe = array();  $map = features_get_default_map('image');  foreach ($data as $style) {    $export['dependencies']['image'] = 'image';    // If another module provides this style, add it as a dependency    if (isset($map[$style]) && $map[$style] != $module_name) {      $module = $map[$style];      $export['dependencies'][$module] = $module;    }    // Otherwise, export the style    elseif (image_style_load($style)) {      $export['features']['image'][$style] = $style;    }  }  return $pipe;}/** * Implements hook_features_export_render(). */function image_features_export_render($module_name, $data, $export = NULL) {  $code = array();  $code[] = '  $styles = array();';  $code[] = '';  foreach ($data as $name) {    if ($style = image_style_load($name)) {      _image_features_style_sanitize($style);      $style_export = features_var_export($style, '  ');      $style_identifier = features_var_export($name);      $code[] = "  // Exported image style: {$name}.";      $code[] = "  \$styles[{$style_identifier}] = {$style_export};";      $code[] = "";    }  }  $code[] = '  return $styles;';  $code = implode("\n", $code);  return array('image_default_styles' => $code);}/** * Implements hook_features_revert(). */function image_features_revert($module) {  if ($default_styles = features_get_default('image', $module)) {    foreach (array_keys($default_styles) as $default_style) {      if ($style = image_style_load($default_style)) {        if ($style['storage'] != IMAGE_STORAGE_DEFAULT) {          image_default_style_revert($style);        }      }    }  }}/** * Remove unnecessary keys for export. */function _image_features_style_sanitize(array &$style) {  // Sanitize style: Don't export numeric IDs and things which get overwritten  // in image_styles() or are code/storage specific. The name property will be  // the key of the exported $style array.  $style = array_diff_key($style, array_flip(array(    'isid',    'name',    'module',    'storage',  )));  // Sanitize effects: all that needs to be kept is name, weight and data,  // which holds all the style-specific configuration. Other keys are assumed  // to belong to the definition of the effect itself, so not configuration.  foreach ($style['effects'] as $id => $effect) {    $style['effects'][$id] = array_intersect_key($effect, array_flip(array(      'name',      'data',      'weight',    )));  }}
 |