danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * Main info hook that features uses to determine what components are provided
|
danielebarchiesi@4
|
5 * by the implementing module.
|
danielebarchiesi@4
|
6 *
|
danielebarchiesi@4
|
7 * @return array
|
danielebarchiesi@4
|
8 * An array of components, keyed by the component name. Each component can
|
danielebarchiesi@4
|
9 * define several keys:
|
danielebarchiesi@4
|
10 *
|
danielebarchiesi@4
|
11 * 'file': Optional path to a file to include which contains the rest
|
danielebarchiesi@4
|
12 * of the features API hooks for this module.
|
danielebarchiesi@4
|
13 *
|
danielebarchiesi@4
|
14 * 'default_hook': The defaults hook for your component that is called
|
danielebarchiesi@4
|
15 * when the cache of default components is generated. Examples include
|
danielebarchiesi@4
|
16 * hook_views_default_views() or hook_context_default_contexts().
|
danielebarchiesi@4
|
17 *
|
danielebarchiesi@4
|
18 * 'default_file': The file-writing behavior to use when exporting this
|
danielebarchiesi@4
|
19 * component. May be one of 3 constant values:
|
danielebarchiesi@4
|
20 *
|
danielebarchiesi@4
|
21 * FEATURES_DEFAULTS_INCLUDED_COMMON: write hooks/components to
|
danielebarchiesi@4
|
22 * `.features.inc` with other components. This is the default behavior
|
danielebarchiesi@4
|
23 * if this key is not defined.
|
danielebarchiesi@4
|
24 *
|
danielebarchiesi@4
|
25 * FEATURES_DEFAULTS_INCLUDED: write hooks/components to a component-
|
danielebarchiesi@4
|
26 * specific include named automatically by features.
|
danielebarchiesi@4
|
27 *
|
danielebarchiesi@4
|
28 * FEATURES_DEFAULTS_CUSTOM: write hooks/components to a component-
|
danielebarchiesi@4
|
29 * specific include with a custom name provided. If your module provides
|
danielebarchiesi@4
|
30 * large amounts of code that should not be parsed often (only on specific
|
danielebarchiesi@4
|
31 * cache clears/rebuilds, for example) you should use the 2nd or 3rd
|
danielebarchiesi@4
|
32 * options to split your component into its own include.
|
danielebarchiesi@4
|
33 *
|
danielebarchiesi@4
|
34 * 'default_filename': The filename to use when 'default_file' is set to
|
danielebarchiesi@4
|
35 * FEATURES_DEFAULTS_CUSTOM.
|
danielebarchiesi@4
|
36 *
|
danielebarchiesi@4
|
37 * 'feature_source': Boolean value for whether this component should be
|
danielebarchiesi@4
|
38 * offered as an option on the initial feature creation form.
|
danielebarchiesi@4
|
39 *
|
danielebarchiesi@4
|
40 * 'base': Optional. An alternative base key to use when calling features
|
danielebarchiesi@4
|
41 * hooks for this component. Can be used for features component types that
|
danielebarchiesi@4
|
42 * are declared "dynamically" or are part of a family of components.
|
danielebarchiesi@4
|
43 *
|
danielebarchiesi@4
|
44 * 'alter_type': What type of alter hook this hook uses. 'normal' is called
|
danielebarchiesi@4
|
45 * after the main hook is called. 'inline' is embeded within the default hook
|
danielebarchiesi@4
|
46 * and may not be implemented by some default hooks.
|
danielebarchiesi@4
|
47 * 'none' is no alter hook exists. Defaults to 'normal'
|
danielebarchiesi@4
|
48 *
|
danielebarchiesi@4
|
49 * 'alter_hook': What the name of the alter hook for this component is.
|
danielebarchiesi@4
|
50 * Do not include the '_alter' part. Defaults to 'default_hook'.
|
danielebarchiesi@4
|
51 */
|
danielebarchiesi@4
|
52 function hook_features_api() {
|
danielebarchiesi@4
|
53 return array(
|
danielebarchiesi@4
|
54 'mycomponent' => array(
|
danielebarchiesi@4
|
55 'default_hook' => 'mycomponent_defaults',
|
danielebarchiesi@4
|
56 'default_file' => FEATURES_DEFAULTS_INCLUDED,
|
danielebarchiesi@4
|
57 'feature_source' => TRUE,
|
danielebarchiesi@4
|
58 'file' => drupal_get_path('module', 'mycomponent') . '/mycomponent.features.inc',
|
danielebarchiesi@4
|
59 ),
|
danielebarchiesi@4
|
60 );
|
danielebarchiesi@4
|
61 }
|
danielebarchiesi@4
|
62
|
danielebarchiesi@4
|
63 /**
|
danielebarchiesi@4
|
64 * Component hook. The hook should be implemented using the name of the
|
danielebarchiesi@4
|
65 * component, not the module, eg. [component]_features_export() rather than
|
danielebarchiesi@4
|
66 * [module]_features_export().
|
danielebarchiesi@4
|
67 *
|
danielebarchiesi@4
|
68 * Process the export array for a given component. Implementations of this hook
|
danielebarchiesi@4
|
69 * have three key tasks:
|
danielebarchiesi@4
|
70 *
|
danielebarchiesi@4
|
71 * 1. Determine module dependencies for any of the components passed to it
|
danielebarchiesi@4
|
72 * e.g. the views implementation iterates over each views' handlers and
|
danielebarchiesi@4
|
73 * plugins to determine which modules need to be added as dependencies.
|
danielebarchiesi@4
|
74 *
|
danielebarchiesi@4
|
75 * 2. Correctly add components to the export array. In general this is usually
|
danielebarchiesi@4
|
76 * adding all of the items in $data to $export['features']['my_key'], but
|
danielebarchiesi@4
|
77 * can become more complicated if components are shared between features
|
danielebarchiesi@4
|
78 * or modules.
|
danielebarchiesi@4
|
79 *
|
danielebarchiesi@4
|
80 * 3. Delegating further detection and export tasks to related or derivative
|
danielebarchiesi@4
|
81 * components.
|
danielebarchiesi@4
|
82 *
|
danielebarchiesi@4
|
83 * Each export processor can kickoff further export processors by returning a
|
danielebarchiesi@4
|
84 * keyed array (aka the "pipe") where the key is the next export processor hook
|
danielebarchiesi@4
|
85 * to call and the value is an array to be passed to that processor's $data
|
danielebarchiesi@4
|
86 * argument. This allows an export process to start simply at a few objects:
|
danielebarchiesi@4
|
87 *
|
danielebarchiesi@4
|
88 * [context]
|
danielebarchiesi@4
|
89 *
|
danielebarchiesi@4
|
90 * And then branch out, delegating each component to its appropriate hook:
|
danielebarchiesi@4
|
91 *
|
danielebarchiesi@4
|
92 * [context]--------+------------+
|
danielebarchiesi@4
|
93 * | | |
|
danielebarchiesi@4
|
94 * [node] [block] [views]
|
danielebarchiesi@4
|
95 * |
|
danielebarchiesi@4
|
96 * [CCK]
|
danielebarchiesi@4
|
97 * |
|
danielebarchiesi@4
|
98 * [imagecache]
|
danielebarchiesi@4
|
99 *
|
danielebarchiesi@4
|
100 * @param array $data
|
danielebarchiesi@4
|
101 * An array of machine names for the component in question to be exported.
|
danielebarchiesi@4
|
102 * @param array &$export
|
danielebarchiesi@4
|
103 * By reference. An array of all components to be exported with a given
|
danielebarchiesi@4
|
104 * feature. Component objects that should be exported should be added to
|
danielebarchiesi@4
|
105 * this array.
|
danielebarchiesi@4
|
106 * @param string $module_name
|
danielebarchiesi@4
|
107 * The name of the feature module to be generated.
|
danielebarchiesi@4
|
108 * @return array
|
danielebarchiesi@4
|
109 * The pipe array of further processors that should be called.
|
danielebarchiesi@4
|
110 */
|
danielebarchiesi@4
|
111 function hook_features_export($data, &$export, $module_name) {
|
danielebarchiesi@4
|
112 // The following is the simplest implementation of a straight object export
|
danielebarchiesi@4
|
113 // with no further export processors called.
|
danielebarchiesi@4
|
114 foreach ($data as $component) {
|
danielebarchiesi@4
|
115 $export['features']['mycomponent'][$component] = $component;
|
danielebarchiesi@4
|
116 }
|
danielebarchiesi@4
|
117 return array();
|
danielebarchiesi@4
|
118 }
|
danielebarchiesi@4
|
119
|
danielebarchiesi@4
|
120 /**
|
danielebarchiesi@4
|
121 * Component hook. The hook should be implemented using the name of the
|
danielebarchiesi@4
|
122 * component, not the module, eg. [component]_features_export() rather than
|
danielebarchiesi@4
|
123 * [module]_features_export().
|
danielebarchiesi@4
|
124 *
|
danielebarchiesi@4
|
125 * List all objects for a component that may be exported.
|
danielebarchiesi@4
|
126 *
|
danielebarchiesi@4
|
127 * @return array
|
danielebarchiesi@4
|
128 * A keyed array of items, suitable for use with a FormAPI select or
|
danielebarchiesi@4
|
129 * checkboxes element.
|
danielebarchiesi@4
|
130 */
|
danielebarchiesi@4
|
131 function hook_features_export_options() {
|
danielebarchiesi@4
|
132 $options = array();
|
danielebarchiesi@4
|
133 foreach (mycomponent_load() as $mycomponent) {
|
danielebarchiesi@4
|
134 $options[$mycomponent->name] = $mycomponent->title;
|
danielebarchiesi@4
|
135 }
|
danielebarchiesi@4
|
136 return $options;
|
danielebarchiesi@4
|
137 }
|
danielebarchiesi@4
|
138
|
danielebarchiesi@4
|
139 /**
|
danielebarchiesi@4
|
140 * Component hook. The hook should be implemented using the name of the
|
danielebarchiesi@4
|
141 * component, not the module, eg. [component]_features_export() rather than
|
danielebarchiesi@4
|
142 * [module]_features_export().
|
danielebarchiesi@4
|
143 *
|
danielebarchiesi@4
|
144 * Render one or more component objects to code.
|
danielebarchiesi@4
|
145 *
|
danielebarchiesi@4
|
146 * @param string $module_name
|
danielebarchiesi@4
|
147 * The name of the feature module to be exported.
|
danielebarchiesi@4
|
148 * @param array $data
|
danielebarchiesi@4
|
149 * An array of machine name identifiers for the objects to be rendered.
|
danielebarchiesi@4
|
150 * @param array $export
|
danielebarchiesi@4
|
151 * The full export array of the current feature being exported. This is only
|
danielebarchiesi@4
|
152 * passed when hook_features_export_render() is invoked for an actual feature
|
danielebarchiesi@4
|
153 * update or recreate, not during state checks or other operations.
|
danielebarchiesi@4
|
154 * @return array
|
danielebarchiesi@4
|
155 * An associative array of rendered PHP code where the key is the name of the
|
danielebarchiesi@4
|
156 * hook that should wrap the PHP code. The hook should not include the name
|
danielebarchiesi@4
|
157 * of the module, e.g. the key for `hook_example` should simply be `example`
|
danielebarchiesi@4
|
158 * The values in the array can also be in the form of an associative array
|
danielebarchiesi@4
|
159 * with the required key of 'code' and optional key of 'args', if 'args' need
|
danielebarchiesi@4
|
160 * to be added to the hook.
|
danielebarchiesi@4
|
161 */
|
danielebarchiesi@4
|
162 function hook_features_export_render($module_name, $data, $export = NULL) {
|
danielebarchiesi@4
|
163 $code = array();
|
danielebarchiesi@4
|
164 $code[] = '$mycomponents = array();';
|
danielebarchiesi@4
|
165 foreach ($data as $name) {
|
danielebarchiesi@4
|
166 $code[] = " \$mycomponents['{$name}'] = " . features_var_export(mycomponent_load($name)) .";";
|
danielebarchiesi@4
|
167 }
|
danielebarchiesi@4
|
168 $code[] = "return \$mycomponents;";
|
danielebarchiesi@4
|
169 $code = implode("\n", $code);
|
danielebarchiesi@4
|
170 return array('mycomponent_defaults' => $code);
|
danielebarchiesi@4
|
171 }
|
danielebarchiesi@4
|
172
|
danielebarchiesi@4
|
173 /**
|
danielebarchiesi@4
|
174 * Component hook. The hook should be implemented using the name of the
|
danielebarchiesi@4
|
175 * component, not the module, eg. [component]_features_export() rather than
|
danielebarchiesi@4
|
176 * [module]_features_export().
|
danielebarchiesi@4
|
177 *
|
danielebarchiesi@4
|
178 * Revert all component objects for a given feature module.
|
danielebarchiesi@4
|
179 *
|
danielebarchiesi@4
|
180 * @param string $module_name
|
danielebarchiesi@4
|
181 * The name of the feature module whose components should be reverted.
|
danielebarchiesi@4
|
182 * @return boolean
|
danielebarchiesi@4
|
183 * TRUE or FALSE for whether the components were successfully reverted.
|
danielebarchiesi@4
|
184 * NOTE: This return value is no longer used in the latest Features so
|
danielebarchiesi@4
|
185 * modules should no longer count on this value
|
danielebarchiesi@4
|
186 */
|
danielebarchiesi@4
|
187 function hook_features_revert($module_name) {
|
danielebarchiesi@4
|
188 $mycomponents = module_invoke($module_name, 'mycomponent_defaults');
|
danielebarchiesi@4
|
189 if (!empty($mycomponents)) {
|
danielebarchiesi@4
|
190 foreach ($mycomponents as $mycomponent) {
|
danielebarchiesi@4
|
191 mycomponent_delete($mycomponent);
|
danielebarchiesi@4
|
192 }
|
danielebarchiesi@4
|
193 }
|
danielebarchiesi@4
|
194 }
|
danielebarchiesi@4
|
195
|
danielebarchiesi@4
|
196 /**
|
danielebarchiesi@4
|
197 * Component hook. The hook should be implemented using the name of the
|
danielebarchiesi@4
|
198 * component, not the module, eg. [component]_features_export() rather than
|
danielebarchiesi@4
|
199 * [module]_features_export().
|
danielebarchiesi@4
|
200 *
|
danielebarchiesi@4
|
201 * Rebuild all component objects for a given feature module. Should only be
|
danielebarchiesi@4
|
202 * implemented for 'faux-exportable' components.
|
danielebarchiesi@4
|
203 *
|
danielebarchiesi@4
|
204 * This hook is called at points where Features determines that it is safe
|
danielebarchiesi@4
|
205 * (ie. the feature is in state `FEATURES_REBUILDABLE`) for your module to
|
danielebarchiesi@4
|
206 * replace objects in the database with defaults that you collect from your
|
danielebarchiesi@4
|
207 * own defaults hook. See API.txt for how Features determines whether a
|
danielebarchiesi@4
|
208 * rebuild of components is possible.
|
danielebarchiesi@4
|
209 *
|
danielebarchiesi@4
|
210 * @param string $module_name
|
danielebarchiesi@4
|
211 * The name of the feature module whose components should be rebuilt.
|
danielebarchiesi@4
|
212 */
|
danielebarchiesi@4
|
213 function hook_features_rebuild($module_name) {
|
danielebarchiesi@4
|
214 $mycomponents = module_invoke($module_name, 'mycomponent_defaults');
|
danielebarchiesi@4
|
215 if (!empty($mycomponents)) {
|
danielebarchiesi@4
|
216 foreach ($mycomponents as $mycomponent) {
|
danielebarchiesi@4
|
217 mycomponent_save($mycomponent);
|
danielebarchiesi@4
|
218 }
|
danielebarchiesi@4
|
219 }
|
danielebarchiesi@4
|
220 }
|
danielebarchiesi@4
|
221
|
danielebarchiesi@4
|
222 /**
|
danielebarchiesi@4
|
223 * Alter the final array of Component names to be exported, just prior to
|
danielebarchiesi@4
|
224 * the rendering of defaults. Allows modules a final say in whether or not
|
danielebarchiesi@4
|
225 * certain Components are exported (the Components' actual data, however,
|
danielebarchiesi@4
|
226 * cannot be altered by this hook).
|
danielebarchiesi@4
|
227 *
|
danielebarchiesi@4
|
228 * @param array &$export
|
danielebarchiesi@4
|
229 * By reference. An array of all component names to be exported with a given
|
danielebarchiesi@4
|
230 * feature.
|
danielebarchiesi@4
|
231 * @param array $module_name
|
danielebarchiesi@4
|
232 * The name of the feature module to be generated.
|
danielebarchiesi@4
|
233 */
|
danielebarchiesi@4
|
234 function hook_features_export_alter(&$export, $module_name) {
|
danielebarchiesi@4
|
235 // Example: do not allow the page content type to be exported, ever.
|
danielebarchiesi@4
|
236 if (!empty($export['features']['node']['page'])) {
|
danielebarchiesi@4
|
237 unset($export['features']['node']['page']);
|
danielebarchiesi@4
|
238 }
|
danielebarchiesi@4
|
239 }
|
danielebarchiesi@4
|
240
|
danielebarchiesi@4
|
241 /**
|
danielebarchiesi@4
|
242 * Alter the pipe array for a given component. This hook should be implemented
|
danielebarchiesi@4
|
243 * with the name of the component type in place of `component` in the function
|
danielebarchiesi@4
|
244 * name, e.g. `features_pipe_views_alter()` will alter the pipe for the Views
|
danielebarchiesi@4
|
245 * component.
|
danielebarchiesi@4
|
246 *
|
danielebarchiesi@4
|
247 * @param array &$pipe
|
danielebarchiesi@4
|
248 * By reference. The pipe array of further processors that should be called.
|
danielebarchiesi@4
|
249 * @param array $data
|
danielebarchiesi@4
|
250 * An array of machine names for the component in question to be exported.
|
danielebarchiesi@4
|
251 * @param array &$export
|
danielebarchiesi@4
|
252 * By reference. An array of all components to be exported with a given
|
danielebarchiesi@4
|
253 * feature.
|
danielebarchiesi@4
|
254 */
|
danielebarchiesi@4
|
255 function hook_features_pipe_COMPONENT_alter(&$pipe, $data, $export) {
|
danielebarchiesi@4
|
256 if (in_array($data, 'my-node-type')) {
|
danielebarchiesi@4
|
257 $pipe['dependencies'][] = 'mymodule';
|
danielebarchiesi@4
|
258 }
|
danielebarchiesi@4
|
259 }
|
danielebarchiesi@4
|
260
|
danielebarchiesi@4
|
261 /**
|
danielebarchiesi@4
|
262 * Alter the pipe array for a given component.
|
danielebarchiesi@4
|
263 *
|
danielebarchiesi@4
|
264 * @param array &$pipe
|
danielebarchiesi@4
|
265 * By reference. The pipe array of further processors that should be called.
|
danielebarchiesi@4
|
266 * @param array $data
|
danielebarchiesi@4
|
267 * An array of machine names for the component in question to be exported.
|
danielebarchiesi@4
|
268 * @param array &$export
|
danielebarchiesi@4
|
269 * By reference. An array of all components to be exported with a given
|
danielebarchiesi@4
|
270 * feature.
|
danielebarchiesi@4
|
271 *
|
danielebarchiesi@4
|
272 * The component being exported is contained in $export['component'].
|
danielebarchiesi@4
|
273 * The module being exported contained in $export['module_name'].
|
danielebarchiesi@4
|
274 */
|
danielebarchiesi@4
|
275 function hook_features_pipe_alter(&$pipe, $data, $export) {
|
danielebarchiesi@4
|
276 if ($export['component'] == 'node' && in_array($data, 'my-node-type')) {
|
danielebarchiesi@4
|
277 $pipe['dependencies'][] = 'mymodule';
|
danielebarchiesi@4
|
278 }
|
danielebarchiesi@4
|
279 }
|
danielebarchiesi@4
|
280
|
danielebarchiesi@4
|
281 /**
|
danielebarchiesi@4
|
282 * @defgroup features_component_alter_hooks Feature's component alter hooks
|
danielebarchiesi@4
|
283 * @{
|
danielebarchiesi@4
|
284 * Hooks to modify components defined by other features. These come in the form
|
danielebarchiesi@4
|
285 * hook_COMPONENT_alter where COMPONENT is the default_hook declared by any of
|
danielebarchiesi@4
|
286 * components within features.
|
danielebarchiesi@4
|
287 *
|
danielebarchiesi@4
|
288 * CTools also has a variety of hook_FOO_alters.
|
danielebarchiesi@4
|
289 *
|
danielebarchiesi@4
|
290 * Note: While views is a component of features, it declares it's own alter
|
danielebarchiesi@4
|
291 * function which takes a similar form:
|
danielebarchiesi@4
|
292 * hook_views_default_views_alter(&$views)
|
danielebarchiesi@4
|
293 */
|
danielebarchiesi@4
|
294
|
danielebarchiesi@4
|
295 /**
|
danielebarchiesi@4
|
296 * Alter the default fields right before they are cached into the database.
|
danielebarchiesi@4
|
297 *
|
danielebarchiesi@4
|
298 * @param &$fields
|
danielebarchiesi@4
|
299 * By reference. The fields that have been declared by another feature.
|
danielebarchiesi@4
|
300 */
|
danielebarchiesi@4
|
301 function hook_field_default_fields_alter(&$fields) {
|
danielebarchiesi@4
|
302 }
|
danielebarchiesi@4
|
303
|
danielebarchiesi@4
|
304 /**
|
danielebarchiesi@4
|
305 * Alter the default fieldgroup groups right before they are cached into the
|
danielebarchiesi@4
|
306 * database.
|
danielebarchiesi@4
|
307 *
|
danielebarchiesi@4
|
308 * @param &$groups
|
danielebarchiesi@4
|
309 * By reference. The fieldgroup groups that have been declared by another
|
danielebarchiesi@4
|
310 * feature.
|
danielebarchiesi@4
|
311 */
|
danielebarchiesi@4
|
312 function hook_fieldgroup_default_groups_alter(&$groups) {
|
danielebarchiesi@4
|
313 }
|
danielebarchiesi@4
|
314
|
danielebarchiesi@4
|
315 /**
|
danielebarchiesi@4
|
316 * Alter the default filter formats right before they are cached into the
|
danielebarchiesi@4
|
317 * database.
|
danielebarchiesi@4
|
318 *
|
danielebarchiesi@4
|
319 * @param &$formats
|
danielebarchiesi@4
|
320 * By reference. The formats that have been declared by another feature.
|
danielebarchiesi@4
|
321 */
|
danielebarchiesi@4
|
322 function hook_filter_default_formats_alter(&$formats) {
|
danielebarchiesi@4
|
323 }
|
danielebarchiesi@4
|
324
|
danielebarchiesi@4
|
325 /**
|
danielebarchiesi@4
|
326 * Alter the default menus right before they are cached into the database.
|
danielebarchiesi@4
|
327 *
|
danielebarchiesi@4
|
328 * @param &$menus
|
danielebarchiesi@4
|
329 * By reference. The menus that have been declared by another feature.
|
danielebarchiesi@4
|
330 */
|
danielebarchiesi@4
|
331 function hook_menu_default_menu_custom_alter(&$menus) {
|
danielebarchiesi@4
|
332 }
|
danielebarchiesi@4
|
333
|
danielebarchiesi@4
|
334 /**
|
danielebarchiesi@4
|
335 * Alter the default menu links right before they are cached into the database.
|
danielebarchiesi@4
|
336 *
|
danielebarchiesi@4
|
337 * @param &$links
|
danielebarchiesi@4
|
338 * By reference. The menu links that have been declared by another feature.
|
danielebarchiesi@4
|
339 */
|
danielebarchiesi@4
|
340 function hook_menu_default_menu_links_alter(&$links) {
|
danielebarchiesi@4
|
341 }
|
danielebarchiesi@4
|
342
|
danielebarchiesi@4
|
343 /**
|
danielebarchiesi@4
|
344 * Alter the default menu items right before they are cached into the database.
|
danielebarchiesi@4
|
345 *
|
danielebarchiesi@4
|
346 * @param &$items
|
danielebarchiesi@4
|
347 * By reference. The menu items that have been declared by another feature.
|
danielebarchiesi@4
|
348 */
|
danielebarchiesi@4
|
349 function hook_menu_default_items_alter(&$items) {
|
danielebarchiesi@4
|
350 }
|
danielebarchiesi@4
|
351
|
danielebarchiesi@4
|
352 /**
|
danielebarchiesi@4
|
353 * Alter the default vocabularies right before they are cached into the
|
danielebarchiesi@4
|
354 * database.
|
danielebarchiesi@4
|
355 *
|
danielebarchiesi@4
|
356 * @param &$vocabularies
|
danielebarchiesi@4
|
357 * By reference. The vocabularies that have been declared by another feature.
|
danielebarchiesi@4
|
358 */
|
danielebarchiesi@4
|
359 function hook_taxonomy_default_vocabularies_alter(&$vocabularies) {
|
danielebarchiesi@4
|
360 }
|
danielebarchiesi@4
|
361
|
danielebarchiesi@4
|
362 /**
|
danielebarchiesi@4
|
363 * Alter the default permissions right before they are cached into the
|
danielebarchiesi@4
|
364 * database.
|
danielebarchiesi@4
|
365 *
|
danielebarchiesi@4
|
366 * @param &$permissions
|
danielebarchiesi@4
|
367 * By reference. The permissions that have been declared by another feature.
|
danielebarchiesi@4
|
368 */
|
danielebarchiesi@4
|
369 function hook_user_default_permissions_alter(&$permissions) {
|
danielebarchiesi@4
|
370 }
|
danielebarchiesi@4
|
371
|
danielebarchiesi@4
|
372 /**
|
danielebarchiesi@4
|
373 * Alter the default roles right before they are cached into the database.
|
danielebarchiesi@4
|
374 *
|
danielebarchiesi@4
|
375 * @param &$roles
|
danielebarchiesi@4
|
376 * By reference. The roles that have been declared by another feature.
|
danielebarchiesi@4
|
377 */
|
danielebarchiesi@4
|
378 function hook_user_default_roles_alter(&$roles) {
|
danielebarchiesi@4
|
379 }
|
danielebarchiesi@4
|
380
|
danielebarchiesi@4
|
381 /**
|
danielebarchiesi@4
|
382 * @}
|
danielebarchiesi@4
|
383 */
|
danielebarchiesi@4
|
384
|
danielebarchiesi@4
|
385
|
danielebarchiesi@4
|
386 /**
|
danielebarchiesi@4
|
387 * @defgroup features_module_hooks Feature module hooks
|
danielebarchiesi@4
|
388 * @{
|
danielebarchiesi@4
|
389 * Hooks invoked on Feature modules when that module is enabled, disabled,
|
danielebarchiesi@4
|
390 * rebuilt, or reverted. These are ONLY invoked on the Features module on
|
danielebarchiesi@4
|
391 * which these actions are taken.
|
danielebarchiesi@4
|
392 */
|
danielebarchiesi@4
|
393
|
danielebarchiesi@4
|
394 /**
|
danielebarchiesi@4
|
395 * Feature module hook. Invoked on a Feature module before that module is
|
danielebarchiesi@4
|
396 * reverted.
|
danielebarchiesi@4
|
397 *
|
danielebarchiesi@4
|
398 * @param $component
|
danielebarchiesi@4
|
399 * String name of the component that is about to be reverted.
|
danielebarchiesi@4
|
400 */
|
danielebarchiesi@4
|
401 function hook_pre_features_revert($component) {
|
danielebarchiesi@4
|
402 }
|
danielebarchiesi@4
|
403
|
danielebarchiesi@4
|
404 /**
|
danielebarchiesi@4
|
405 * Feature module hook. Invoked on a Feature module after that module is
|
danielebarchiesi@4
|
406 * reverted.
|
danielebarchiesi@4
|
407 *
|
danielebarchiesi@4
|
408 * @param $component
|
danielebarchiesi@4
|
409 * String name of the component that has just been reverted.
|
danielebarchiesi@4
|
410 */
|
danielebarchiesi@4
|
411 function hook_post_features_revert($component) {
|
danielebarchiesi@4
|
412 }
|
danielebarchiesi@4
|
413
|
danielebarchiesi@4
|
414 /**
|
danielebarchiesi@4
|
415 * Feature module hook. Invoked on a Feature module before that module is
|
danielebarchiesi@4
|
416 * rebuilt.
|
danielebarchiesi@4
|
417 *
|
danielebarchiesi@4
|
418 * @param $component
|
danielebarchiesi@4
|
419 * String name of the component that is about to be rebuilt.
|
danielebarchiesi@4
|
420 */
|
danielebarchiesi@4
|
421 function hook_pre_features_rebuild($component) {
|
danielebarchiesi@4
|
422 }
|
danielebarchiesi@4
|
423
|
danielebarchiesi@4
|
424 /**
|
danielebarchiesi@4
|
425 * Feature module hook. Invoked on a Feature module after that module is
|
danielebarchiesi@4
|
426 * rebuilt.
|
danielebarchiesi@4
|
427 *
|
danielebarchiesi@4
|
428 * @param $component
|
danielebarchiesi@4
|
429 * String name of the component that has just been rebuilt.
|
danielebarchiesi@4
|
430 */
|
danielebarchiesi@4
|
431 function hook_post_features_rebuild($component) {
|
danielebarchiesi@4
|
432 }
|
danielebarchiesi@4
|
433
|
danielebarchiesi@4
|
434 /**
|
danielebarchiesi@4
|
435 * Feature module hook. Invoked on a Feature module before that module is
|
danielebarchiesi@4
|
436 * disabled.
|
danielebarchiesi@4
|
437 *
|
danielebarchiesi@4
|
438 * @param $component
|
danielebarchiesi@4
|
439 * String name of the component that is about to be disabled.
|
danielebarchiesi@4
|
440 */
|
danielebarchiesi@4
|
441 function hook_pre_features_disable_feature($component) {
|
danielebarchiesi@4
|
442 }
|
danielebarchiesi@4
|
443
|
danielebarchiesi@4
|
444 /**
|
danielebarchiesi@4
|
445 * Feature module hook. Invoked on a Feature module after that module is
|
danielebarchiesi@4
|
446 * disabled.
|
danielebarchiesi@4
|
447 *
|
danielebarchiesi@4
|
448 * @param $component
|
danielebarchiesi@4
|
449 * String name of the component that has just been disabled.
|
danielebarchiesi@4
|
450 */
|
danielebarchiesi@4
|
451 function hook_post_features_disable_feature($component) {
|
danielebarchiesi@4
|
452 }
|
danielebarchiesi@4
|
453
|
danielebarchiesi@4
|
454 /**
|
danielebarchiesi@4
|
455 * Feature module hook. Invoked on a Feature module before that module is
|
danielebarchiesi@4
|
456 * enabled.
|
danielebarchiesi@4
|
457 *
|
danielebarchiesi@4
|
458 * @param $component
|
danielebarchiesi@4
|
459 * String name of the component that is about to be enabled.
|
danielebarchiesi@4
|
460 */
|
danielebarchiesi@4
|
461 function hook_pre_features_enable_feature($component) {
|
danielebarchiesi@4
|
462 }
|
danielebarchiesi@4
|
463
|
danielebarchiesi@4
|
464 /**
|
danielebarchiesi@4
|
465 * Feature module hook. Invoked on a Feature module after that module is
|
danielebarchiesi@4
|
466 * enabled.
|
danielebarchiesi@4
|
467 *
|
danielebarchiesi@4
|
468 * @param $component
|
danielebarchiesi@4
|
469 * String name of the component that has just been enabled.
|
danielebarchiesi@4
|
470 */
|
danielebarchiesi@4
|
471 function hook_post_features_enable_feature($component) {
|
danielebarchiesi@4
|
472 }
|
danielebarchiesi@4
|
473
|
danielebarchiesi@4
|
474 /**
|
danielebarchiesi@4
|
475 * @}
|
danielebarchiesi@4
|
476 */
|