array( 'name' => 'Dependencies', 'feature_source' => TRUE, 'duplicates' => FEATURES_DUPLICATES_ALLOWED, ), ); } /** * Implements hook_features_export_options(). */ function dependencies_features_export_options() { // Excluded modules. $excluded = drupal_required_modules(); $options = array(); foreach (features_get_modules() as $module_name => $info) { if (!in_array($module_name, $excluded) && $info->status && !empty($info->info)) { $options[$module_name] = $info->info['name']; } } return $options; } /** * Implements hook_features_export(). */ function dependencies_features_export($data, &$export, $module_name = '') { // Don't allow a module to depend upon itself. if (!empty($data[$module_name])) { unset($data[$module_name]); } // Clean up existing dependencies and merge. $export['dependencies'] = _features_export_minimize_dependencies($export['dependencies'], $module_name); $export['dependencies'] = array_merge($data, $export['dependencies']); $export['dependencies'] = array_unique($export['dependencies']); } /** * Implements hook_features_revert(). */ function dependencies_features_revert($module) { dependencies_features_rebuild($module); } /** * Implements hook_features_rebuild(). * Ensure that all of a feature's dependencies are enabled. */ function dependencies_features_rebuild($module) { $feature = features_get_features($module); if (!empty($feature->info['dependencies'])) { $install = array(); foreach ($feature->info['dependencies'] as $dependency) { // Parse the dependency string into the module name and version information. $parsed_dependency = drupal_parse_dependency($dependency); $dependency = $parsed_dependency['name']; if (!module_exists($dependency)) { $install[] = $dependency; } } if (!empty($install)) { features_install_modules($install); } } }