danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * Implements hook_features_api().
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6 function image_features_api() {
|
danielebarchiesi@4
|
7 return array(
|
danielebarchiesi@4
|
8 'image' => array(
|
danielebarchiesi@4
|
9 'name' => t('Image styles'),
|
danielebarchiesi@4
|
10 'feature_source' => TRUE,
|
danielebarchiesi@4
|
11 'default_hook' => 'image_default_styles',
|
danielebarchiesi@4
|
12 'alter_hook' => 'image_styles',
|
danielebarchiesi@4
|
13 )
|
danielebarchiesi@4
|
14 );
|
danielebarchiesi@4
|
15 }
|
danielebarchiesi@4
|
16
|
danielebarchiesi@4
|
17 /**
|
danielebarchiesi@4
|
18 * Implements hook_features_export_options().
|
danielebarchiesi@4
|
19 */
|
danielebarchiesi@4
|
20 function image_features_export_options() {
|
danielebarchiesi@4
|
21 $options = array();
|
danielebarchiesi@4
|
22 foreach (image_styles() as $name => $style) {
|
danielebarchiesi@4
|
23 $options[$name] = $style['name'];
|
danielebarchiesi@4
|
24 }
|
danielebarchiesi@4
|
25 return $options;
|
danielebarchiesi@4
|
26 }
|
danielebarchiesi@4
|
27
|
danielebarchiesi@4
|
28 /**
|
danielebarchiesi@4
|
29 * Implements hook_features_export().
|
danielebarchiesi@4
|
30 */
|
danielebarchiesi@4
|
31 function image_features_export($data, &$export, $module_name = '') {
|
danielebarchiesi@4
|
32 $pipe = array();
|
danielebarchiesi@4
|
33 $map = features_get_default_map('image');
|
danielebarchiesi@4
|
34 foreach ($data as $style) {
|
danielebarchiesi@4
|
35 $export['dependencies']['image'] = 'image';
|
danielebarchiesi@4
|
36 // If another module provides this style, add it as a dependency
|
danielebarchiesi@4
|
37 if (isset($map[$style]) && $map[$style] != $module_name) {
|
danielebarchiesi@4
|
38 $module = $map[$style];
|
danielebarchiesi@4
|
39 $export['dependencies'][$module] = $module;
|
danielebarchiesi@4
|
40 }
|
danielebarchiesi@4
|
41 // Otherwise, export the style
|
danielebarchiesi@4
|
42 elseif (image_style_load($style)) {
|
danielebarchiesi@4
|
43 $export['features']['image'][$style] = $style;
|
danielebarchiesi@4
|
44 }
|
danielebarchiesi@4
|
45 }
|
danielebarchiesi@4
|
46 return $pipe;
|
danielebarchiesi@4
|
47 }
|
danielebarchiesi@4
|
48
|
danielebarchiesi@4
|
49 /**
|
danielebarchiesi@4
|
50 * Implements hook_features_export_render().
|
danielebarchiesi@4
|
51 */
|
danielebarchiesi@4
|
52 function image_features_export_render($module_name, $data, $export = NULL) {
|
danielebarchiesi@4
|
53 $code = array();
|
danielebarchiesi@4
|
54 $code[] = ' $styles = array();';
|
danielebarchiesi@4
|
55 $code[] = '';
|
danielebarchiesi@4
|
56 foreach ($data as $name) {
|
danielebarchiesi@4
|
57 if ($style = image_style_load($name)) {
|
danielebarchiesi@4
|
58 _image_features_style_sanitize($style);
|
danielebarchiesi@4
|
59 $style_export = features_var_export($style, ' ');
|
danielebarchiesi@4
|
60 $style_identifier = features_var_export($name);
|
danielebarchiesi@4
|
61 $code[] = " // Exported image style: {$name}.";
|
danielebarchiesi@4
|
62 $code[] = " \$styles[{$style_identifier}] = {$style_export};";
|
danielebarchiesi@4
|
63 $code[] = "";
|
danielebarchiesi@4
|
64 }
|
danielebarchiesi@4
|
65 }
|
danielebarchiesi@4
|
66 $code[] = ' return $styles;';
|
danielebarchiesi@4
|
67 $code = implode("\n", $code);
|
danielebarchiesi@4
|
68 return array('image_default_styles' => $code);
|
danielebarchiesi@4
|
69 }
|
danielebarchiesi@4
|
70
|
danielebarchiesi@4
|
71 /**
|
danielebarchiesi@4
|
72 * Implements hook_features_revert().
|
danielebarchiesi@4
|
73 */
|
danielebarchiesi@4
|
74 function image_features_revert($module) {
|
danielebarchiesi@4
|
75 if ($default_styles = features_get_default('image', $module)) {
|
danielebarchiesi@4
|
76 foreach (array_keys($default_styles) as $default_style) {
|
danielebarchiesi@4
|
77 if ($style = image_style_load($default_style)) {
|
danielebarchiesi@4
|
78 if ($style['storage'] != IMAGE_STORAGE_DEFAULT) {
|
danielebarchiesi@4
|
79 image_default_style_revert($style);
|
danielebarchiesi@4
|
80 }
|
danielebarchiesi@4
|
81 }
|
danielebarchiesi@4
|
82 }
|
danielebarchiesi@4
|
83 }
|
danielebarchiesi@4
|
84 }
|
danielebarchiesi@4
|
85
|
danielebarchiesi@4
|
86 /**
|
danielebarchiesi@4
|
87 * Remove unnecessary keys for export.
|
danielebarchiesi@4
|
88 */
|
danielebarchiesi@4
|
89 function _image_features_style_sanitize(&$style, $child = FALSE) {
|
danielebarchiesi@4
|
90 $omit = $child ? array('isid', 'ieid', 'storage') : array('isid', 'ieid', 'storage', 'module');
|
danielebarchiesi@4
|
91 if (is_array($style)) {
|
danielebarchiesi@4
|
92 foreach ($style as $k => $v) {
|
danielebarchiesi@4
|
93 if (in_array($k, $omit, TRUE)) {
|
danielebarchiesi@4
|
94 unset($style[$k]);
|
danielebarchiesi@4
|
95 }
|
danielebarchiesi@4
|
96 else if (is_array($v)) {
|
danielebarchiesi@4
|
97 _image_features_style_sanitize($style[$k], TRUE);
|
danielebarchiesi@4
|
98 }
|
danielebarchiesi@4
|
99 }
|
danielebarchiesi@4
|
100 }
|
danielebarchiesi@4
|
101 }
|