12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- /**
- * Implements hook_features_api().
- */
- function features_features_api() {
- return array(
- 'dependencies' => 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);
- }
- }
- }
|