diff --git a/commerce_features.module b/commerce_features.module index 7243f90..bc52a97 100644 --- a/commerce_features.module +++ b/commerce_features.module @@ -58,6 +58,14 @@ function commerce_features_features_api() { 'file' => drupal_get_path('module', 'commerce_features') . '/commerce_customer.features.inc', ); } + if (module_exists('commerce_flat_rate')) { + $features['commerce_flat_rate_services'] = array( + 'name' => t('Commerce flat rate services'), + 'features_source' => TRUE, + 'default_hook' => 'commerce_flat_rate_default_services', + 'file' => drupal_get_path('module', 'commerce_features') . '/commerce_flat_rate_services.features.inc', + ); + } return $features; } diff --git a/commerce_flat_rate_services.features.inc b/commerce_flat_rate_services.features.inc new file mode 100644 index 0000000..7346e4b --- /dev/null +++ b/commerce_flat_rate_services.features.inc @@ -0,0 +1,98 @@ + " . features_var_export($flat_rate_service, ' ') . ","; + } + + } + $output[] = ' );'; + $output[] = ' return $items;'; + $output = implode("\n", $output); + return array('commerce_shipping_service_info' => $output); +} + +/** + * Implements hook_features_revert(). + */ +function commerce_flat_rate_services_features_revert($module = NULL) { + // Get default flat rate services + if (module_hook($module, 'commerce_shipping_service_info')) { + $default_types = module_invoke($module, 'commerce_shipping_service_info'); + $existing_types = commerce_shipping_services('flat_rate'); + foreach ($default_types as $type) { + // Add / or update + if (!isset($existing_types[$type['name']])) { + $type['is_new'] = TRUE; + } + commerce_flat_rate_service_save($type, TRUE); + } + } + else { + drupal_set_message(t('Could not load default flat rate services.'), 'error'); + return FALSE; + } + + // Reset the caches. + commerce_shipping_services_reset(); + entity_defaults_rebuild(); + // Schedule a menu rebuild. + variable_set('menu_rebuild_needed', TRUE); + + return TRUE; +} + +/** + * Implements hook_features_rebuild(). + */ +function commerce_flat_rate_services_features_rebuild($module) { + commerce_shipping_services_reset(); + return commerce_flat_rate_services_features_revert($module); +}