danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Hooks related to image styles and effects.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * @addtogroup hooks
|
danielebarchiesi@0
|
10 * @{
|
danielebarchiesi@0
|
11 */
|
danielebarchiesi@0
|
12
|
danielebarchiesi@0
|
13 /**
|
danielebarchiesi@0
|
14 * Define information about image effects provided by a module.
|
danielebarchiesi@0
|
15 *
|
danielebarchiesi@0
|
16 * This hook enables modules to define image manipulation effects for use with
|
danielebarchiesi@0
|
17 * an image style.
|
danielebarchiesi@0
|
18 *
|
danielebarchiesi@0
|
19 * @return
|
danielebarchiesi@0
|
20 * An array of image effects. This array is keyed on the machine-readable
|
danielebarchiesi@0
|
21 * effect name. Each effect is defined as an associative array containing the
|
danielebarchiesi@0
|
22 * following items:
|
danielebarchiesi@0
|
23 * - "label": The human-readable name of the effect.
|
danielebarchiesi@0
|
24 * - "effect callback": The function to call to perform this image effect.
|
danielebarchiesi@0
|
25 * - "dimensions passthrough": (optional) Set this item if the effect doesn't
|
danielebarchiesi@0
|
26 * change the dimensions of the image.
|
danielebarchiesi@0
|
27 * - "dimensions callback": (optional) The function to call to transform
|
danielebarchiesi@0
|
28 * dimensions for this effect.
|
danielebarchiesi@0
|
29 * - "help": (optional) A brief description of the effect that will be shown
|
danielebarchiesi@0
|
30 * when adding or configuring this image effect.
|
danielebarchiesi@0
|
31 * - "form callback": (optional) The name of a function that will return a
|
danielebarchiesi@0
|
32 * $form array providing a configuration form for this image effect.
|
danielebarchiesi@0
|
33 * - "summary theme": (optional) The name of a theme function that will output
|
danielebarchiesi@0
|
34 * a summary of this image effect's configuration.
|
danielebarchiesi@0
|
35 *
|
danielebarchiesi@0
|
36 * @see hook_image_effect_info_alter()
|
danielebarchiesi@0
|
37 */
|
danielebarchiesi@0
|
38 function hook_image_effect_info() {
|
danielebarchiesi@0
|
39 $effects = array();
|
danielebarchiesi@0
|
40
|
danielebarchiesi@0
|
41 $effects['mymodule_resize'] = array(
|
danielebarchiesi@0
|
42 'label' => t('Resize'),
|
danielebarchiesi@0
|
43 'help' => t('Resize an image to an exact set of dimensions, ignoring aspect ratio.'),
|
danielebarchiesi@0
|
44 'effect callback' => 'mymodule_resize_effect',
|
danielebarchiesi@0
|
45 'dimensions callback' => 'mymodule_resize_dimensions',
|
danielebarchiesi@0
|
46 'form callback' => 'mymodule_resize_form',
|
danielebarchiesi@0
|
47 'summary theme' => 'mymodule_resize_summary',
|
danielebarchiesi@0
|
48 );
|
danielebarchiesi@0
|
49
|
danielebarchiesi@0
|
50 return $effects;
|
danielebarchiesi@0
|
51 }
|
danielebarchiesi@0
|
52
|
danielebarchiesi@0
|
53 /**
|
danielebarchiesi@0
|
54 * Alter the information provided in hook_image_effect_info().
|
danielebarchiesi@0
|
55 *
|
danielebarchiesi@0
|
56 * @param $effects
|
danielebarchiesi@0
|
57 * The array of image effects, keyed on the machine-readable effect name.
|
danielebarchiesi@0
|
58 *
|
danielebarchiesi@0
|
59 * @see hook_image_effect_info()
|
danielebarchiesi@0
|
60 */
|
danielebarchiesi@0
|
61 function hook_image_effect_info_alter(&$effects) {
|
danielebarchiesi@0
|
62 // Override the Image module's crop effect with more options.
|
danielebarchiesi@0
|
63 $effects['image_crop']['effect callback'] = 'mymodule_crop_effect';
|
danielebarchiesi@0
|
64 $effects['image_crop']['dimensions callback'] = 'mymodule_crop_dimensions';
|
danielebarchiesi@0
|
65 $effects['image_crop']['form callback'] = 'mymodule_crop_form';
|
danielebarchiesi@0
|
66 }
|
danielebarchiesi@0
|
67
|
danielebarchiesi@0
|
68 /**
|
danielebarchiesi@0
|
69 * Respond to image style updating.
|
danielebarchiesi@0
|
70 *
|
danielebarchiesi@0
|
71 * This hook enables modules to update settings that might be affected by
|
danielebarchiesi@0
|
72 * changes to an image. For example, updating a module specific variable to
|
danielebarchiesi@0
|
73 * reflect a change in the image style's name.
|
danielebarchiesi@0
|
74 *
|
danielebarchiesi@0
|
75 * @param $style
|
danielebarchiesi@0
|
76 * The image style array that is being updated.
|
danielebarchiesi@0
|
77 */
|
danielebarchiesi@0
|
78 function hook_image_style_save($style) {
|
danielebarchiesi@0
|
79 // If a module defines an image style and that style is renamed by the user
|
danielebarchiesi@0
|
80 // the module should update any references to that style.
|
danielebarchiesi@0
|
81 if (isset($style['old_name']) && $style['old_name'] == variable_get('mymodule_image_style', '')) {
|
danielebarchiesi@0
|
82 variable_set('mymodule_image_style', $style['name']);
|
danielebarchiesi@0
|
83 }
|
danielebarchiesi@0
|
84 }
|
danielebarchiesi@0
|
85
|
danielebarchiesi@0
|
86 /**
|
danielebarchiesi@0
|
87 * Respond to image style deletion.
|
danielebarchiesi@0
|
88 *
|
danielebarchiesi@0
|
89 * This hook enables modules to update settings when a image style is being
|
danielebarchiesi@0
|
90 * deleted. If a style is deleted, a replacement name may be specified in
|
danielebarchiesi@0
|
91 * $style['name'] and the style being deleted will be specified in
|
danielebarchiesi@0
|
92 * $style['old_name'].
|
danielebarchiesi@0
|
93 *
|
danielebarchiesi@0
|
94 * @param $style
|
danielebarchiesi@0
|
95 * The image style array that being deleted.
|
danielebarchiesi@0
|
96 */
|
danielebarchiesi@0
|
97 function hook_image_style_delete($style) {
|
danielebarchiesi@0
|
98 // Administrators can choose an optional replacement style when deleting.
|
danielebarchiesi@0
|
99 // Update the modules style variable accordingly.
|
danielebarchiesi@0
|
100 if (isset($style['old_name']) && $style['old_name'] == variable_get('mymodule_image_style', '')) {
|
danielebarchiesi@0
|
101 variable_set('mymodule_image_style', $style['name']);
|
danielebarchiesi@0
|
102 }
|
danielebarchiesi@0
|
103 }
|
danielebarchiesi@0
|
104
|
danielebarchiesi@0
|
105 /**
|
danielebarchiesi@0
|
106 * Respond to image style flushing.
|
danielebarchiesi@0
|
107 *
|
danielebarchiesi@0
|
108 * This hook enables modules to take effect when a style is being flushed (all
|
danielebarchiesi@0
|
109 * images are being deleted from the server and regenerated). Any
|
danielebarchiesi@0
|
110 * module-specific caches that contain information related to the style should
|
danielebarchiesi@0
|
111 * be cleared using this hook. This hook is called whenever a style is updated,
|
danielebarchiesi@0
|
112 * deleted, or any effect associated with the style is update or deleted.
|
danielebarchiesi@0
|
113 *
|
danielebarchiesi@0
|
114 * @param $style
|
danielebarchiesi@0
|
115 * The image style array that is being flushed.
|
danielebarchiesi@0
|
116 */
|
danielebarchiesi@0
|
117 function hook_image_style_flush($style) {
|
danielebarchiesi@0
|
118 // Empty cached data that contains information about the style.
|
danielebarchiesi@0
|
119 cache_clear_all('*', 'cache_mymodule', TRUE);
|
danielebarchiesi@0
|
120 }
|
danielebarchiesi@0
|
121
|
danielebarchiesi@0
|
122 /**
|
danielebarchiesi@0
|
123 * Modify any image styles provided by other modules or the user.
|
danielebarchiesi@0
|
124 *
|
danielebarchiesi@0
|
125 * This hook allows modules to modify, add, or remove image styles. This may
|
danielebarchiesi@0
|
126 * be useful to modify default styles provided by other modules or enforce
|
danielebarchiesi@0
|
127 * that a specific effect is always enabled on a style. Note that modifications
|
danielebarchiesi@0
|
128 * to these styles may negatively affect the user experience, such as if an
|
danielebarchiesi@0
|
129 * effect is added to a style through this hook, the user may attempt to remove
|
danielebarchiesi@0
|
130 * the effect but it will be immediately be re-added.
|
danielebarchiesi@0
|
131 *
|
danielebarchiesi@0
|
132 * The best use of this hook is usually to modify default styles, which are not
|
danielebarchiesi@0
|
133 * editable by the user until they are overridden, so such interface
|
danielebarchiesi@0
|
134 * contradictions will not occur. This hook can target default (or user) styles
|
danielebarchiesi@0
|
135 * by checking the $style['storage'] property.
|
danielebarchiesi@0
|
136 *
|
danielebarchiesi@0
|
137 * If your module needs to provide a new style (rather than modify an existing
|
danielebarchiesi@0
|
138 * one) use hook_image_default_styles() instead.
|
danielebarchiesi@0
|
139 *
|
danielebarchiesi@0
|
140 * @see hook_image_default_styles()
|
danielebarchiesi@0
|
141 */
|
danielebarchiesi@0
|
142 function hook_image_styles_alter(&$styles) {
|
danielebarchiesi@0
|
143 // Check that we only affect a default style.
|
danielebarchiesi@0
|
144 if ($styles['thumbnail']['storage'] == IMAGE_STORAGE_DEFAULT) {
|
danielebarchiesi@0
|
145 // Add an additional effect to the thumbnail style.
|
danielebarchiesi@0
|
146 $styles['thumbnail']['effects'][] = array(
|
danielebarchiesi@0
|
147 'name' => 'image_desaturate',
|
danielebarchiesi@0
|
148 'data' => array(),
|
danielebarchiesi@0
|
149 'weight' => 1,
|
danielebarchiesi@0
|
150 'effect callback' => 'image_desaturate_effect',
|
danielebarchiesi@0
|
151 );
|
danielebarchiesi@0
|
152 }
|
danielebarchiesi@0
|
153 }
|
danielebarchiesi@0
|
154
|
danielebarchiesi@0
|
155 /**
|
danielebarchiesi@0
|
156 * Provide module-based image styles for reuse throughout Drupal.
|
danielebarchiesi@0
|
157 *
|
danielebarchiesi@0
|
158 * This hook allows your module to provide image styles. This may be useful if
|
danielebarchiesi@0
|
159 * you require images to fit within exact dimensions. Note that you should
|
danielebarchiesi@0
|
160 * attempt to re-use the default styles provided by Image module whenever
|
danielebarchiesi@0
|
161 * possible, rather than creating image styles that are specific to your module.
|
danielebarchiesi@0
|
162 * Image provides the styles "thumbnail", "medium", and "large".
|
danielebarchiesi@0
|
163 *
|
danielebarchiesi@0
|
164 * You may use this hook to more easily manage your site's changes by moving
|
danielebarchiesi@0
|
165 * existing image styles from the database to a custom module. Note however that
|
danielebarchiesi@0
|
166 * moving image styles to code instead storing them in the database has a
|
danielebarchiesi@0
|
167 * negligible effect on performance, since custom image styles are loaded
|
danielebarchiesi@0
|
168 * from the database all at once. Even if all styles are pulled from modules,
|
danielebarchiesi@0
|
169 * Image module will still perform the same queries to check the database for
|
danielebarchiesi@0
|
170 * any custom styles.
|
danielebarchiesi@0
|
171 *
|
danielebarchiesi@0
|
172 * @return
|
danielebarchiesi@0
|
173 * An array of image styles, keyed by the style name.
|
danielebarchiesi@0
|
174 * @see image_image_default_styles()
|
danielebarchiesi@0
|
175 */
|
danielebarchiesi@0
|
176 function hook_image_default_styles() {
|
danielebarchiesi@0
|
177 $styles = array();
|
danielebarchiesi@0
|
178
|
danielebarchiesi@0
|
179 $styles['mymodule_preview'] = array(
|
danielebarchiesi@0
|
180 'label' => 'My module preview',
|
danielebarchiesi@0
|
181 'effects' => array(
|
danielebarchiesi@0
|
182 array(
|
danielebarchiesi@0
|
183 'name' => 'image_scale',
|
danielebarchiesi@0
|
184 'data' => array('width' => 400, 'height' => 400, 'upscale' => 1),
|
danielebarchiesi@0
|
185 'weight' => 0,
|
danielebarchiesi@0
|
186 ),
|
danielebarchiesi@0
|
187 array(
|
danielebarchiesi@0
|
188 'name' => 'image_desaturate',
|
danielebarchiesi@0
|
189 'data' => array(),
|
danielebarchiesi@0
|
190 'weight' => 1,
|
danielebarchiesi@0
|
191 ),
|
danielebarchiesi@0
|
192 ),
|
danielebarchiesi@0
|
193 );
|
danielebarchiesi@0
|
194
|
danielebarchiesi@0
|
195 return $styles;
|
danielebarchiesi@0
|
196 }
|
danielebarchiesi@0
|
197
|
danielebarchiesi@0
|
198 /**
|
danielebarchiesi@0
|
199 * @} End of "addtogroup hooks".
|
danielebarchiesi@0
|
200 */
|