? features-693024-12.patch
Index: API.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/Attic/API.txt,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 API.txt
--- API.txt	4 Jul 2010 17:44:41 -0000	1.1.2.5
+++ API.txt	5 Jul 2010 18:56:35 -0000
@@ -183,6 +183,8 @@ defaults hook.
 state.
 - `hook_features_rebuild()` updates faux-exportable components back to their
 default state. Only applies to faux-exportables.
+- `hook_features_FEATURE_DEFAULT_TYPE_alter()` enables other modules to alter
+the default state of faux-exportables.
 
 
 [1]: http://drupal.org/project/strongarm
Index: features.api.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/Attic/features.api.php,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 features.api.php
--- features.api.php	5 Jul 2010 14:20:36 -0000	1.1.2.1
+++ features.api.php	5 Jul 2010 18:56:35 -0000
@@ -233,3 +233,22 @@ function hook_features_export_alter(&$ex
  */
 function hook_features_pipe_component_alter(&$pipe, $data, $export, $module_name) {
 }
+
+/**
+ * Alter the default fields provided by a given feature.
+ *
+ * Default features of selected feature types can be altered at the module 
+ * level using hook_features_FEATURE_DEFAULT_TYPE_alter() where
+ * FEATURE_DEFAULT_TYPE is the type of default feature to be altered, e.g.,
+ * content_default_fields.
+ *
+ * @param array &$defaults
+ *   By reference. An array of default feature items of the given type.
+ * @param array $module_name
+ *   The name of the module providing the defaults.
+ */
+function hook_features_content_default_fields_alter(&$defaults, $module_name) {
+  if ($module_name == 'atrium_calendar') {
+    // Make changes to default fields here.
+  }
+}
Index: features.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/features.module,v
retrieving revision 1.1.2.69
diff -u -p -r1.1.2.69 features.module
--- features.module	2 Jul 2010 03:17:04 -0000	1.1.2.69
+++ features.module	5 Jul 2010 18:56:36 -0000
@@ -413,6 +413,25 @@ function features_get_components($featur
 }
 
 /**
+ * Return a set of default features.
+ *
+ * Passes defaults through drupal_alter() before returning to enable
+ * other modules to alter default features.
+ *
+ * @param $module_name
+ *   Name of a module implementing a default feature.
+ * @param $type
+ *   Type of feature to be loaded. E.g. 'content_default_fields'.
+ * @return An array of default feature items of the given type.
+ */
+function features_get_defaults($module_name, $type) {
+  if ($defaults = module_invoke($module_name, $type)) {
+    drupal_alter('features_' . $type, $defaults, $module_name);
+  }
+  return $defaults;
+}
+
+/**
  * Like module_invoke() but for arbitrary callback base names.
  */
 function features_invoke() {
Index: includes/features.content.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/features.content.inc,v
retrieving revision 1.1.2.14
diff -u -p -r1.1.2.14 features.content.inc
--- includes/features.content.inc	2 Jul 2010 03:17:04 -0000	1.1.2.14
+++ includes/features.content.inc	5 Jul 2010 18:56:36 -0000
@@ -133,7 +133,7 @@ function content_features_revert($module
  */
 function content_features_rebuild($module) {
   features_include_defaults('content');
-  $fields = module_invoke($module, 'content_default_fields');
+  $fields = features_get_defaults($module, 'content_default_fields');
   if (!empty($fields)) {
     module_load_include('inc', 'content', 'includes/content.crud');
     content_clear_type_cache(TRUE);
Index: includes/features.fieldgroup.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/Attic/features.fieldgroup.inc,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 features.fieldgroup.inc
--- includes/features.fieldgroup.inc	2 Jul 2010 03:17:04 -0000	1.1.2.4
+++ includes/features.fieldgroup.inc	5 Jul 2010 18:56:36 -0000
@@ -109,7 +109,7 @@ function fieldgroup_features_revert($mod
  */
 function fieldgroup_features_rebuild($module) {
   features_include_defaults('fieldgroup');
-  $groups = module_invoke($module, 'fieldgroup_default_groups');
+  $groups = features_get_defaults($module, 'fieldgroup_default_groups');
   if (!empty($groups)) {
     content_clear_type_cache(TRUE);
 
Index: includes/features.filter.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/Attic/features.filter.inc,v
retrieving revision 1.1.2.10
diff -u -p -r1.1.2.10 features.filter.inc
--- includes/features.filter.inc	2 Jul 2010 03:17:04 -0000	1.1.2.10
+++ includes/features.filter.inc	5 Jul 2010 18:56:36 -0000
@@ -73,7 +73,7 @@ function filter_features_revert($module)
  */
 function filter_features_rebuild($module) {
   features_include_defaults('filter');
-  $defaults = module_invoke($module, 'filter_default_formats');
+  $defaults = features_get_defaults($module, 'filter_default_formats');
   if (!empty($defaults)) {
     foreach ($defaults as $format) {
       _filter_features_update($format);
Index: includes/features.user.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/Attic/features.user.inc,v
retrieving revision 1.1.2.12
diff -u -p -r1.1.2.12 features.user.inc
--- includes/features.user.inc	2 Jul 2010 03:17:04 -0000	1.1.2.12
+++ includes/features.user.inc	5 Jul 2010 18:56:36 -0000
@@ -101,7 +101,7 @@ function user_features_revert($module) {
  */
 function user_features_rebuild($module) {
   features_include_defaults('user');
-  $defaults = module_invoke($module, 'user_default_permissions');
+  $defaults = features_get_defaults($module, 'user_default_permissions');
   if (!empty($defaults)) {
     $roles = _features_get_roles();
     foreach ($defaults as $permission) {
