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