You are here

function uc_product_classes_features_revert in Ubercart 7.3

Same name and namespace in other branches
  1. 6.2 uc_product/uc_product.features.inc \uc_product_classes_features_revert()

Implements hook_features_revert().

See also

node_features_revert()

File

uc_product/uc_product.features.inc, line 55
Features integration for Ubercart product classes.

Code

function uc_product_classes_features_revert($module) {
  if ($default_types = features_get_default('uc_product_classes', $module)) {
    foreach ($default_types as $type_name => $type_info) {

      // We need to de-activate any missing fields. De-activating allows us to
      // preserve data. We de-activate by setting the widget_active flag to 0;
      // widget_active is incorrectly named, and really should be
      // instance_active
      if (module_exists('content')) {

        // Our existing fields ($fields) needs to be the first argument here,
        // so only fields that don't exist in code can be de-activated.
        if ($deleted_fields = array_diff(content_features_fields_normal($type_name), content_features_fields_default($type_name))) {
          foreach ($deleted_fields as $field_name) {
            db_update(content_instance_tablename())
              ->fields(array(
              'widget_active' => 0,
            ))
              ->condition('field_name', $field_name)
              ->condition('type_name', $type_name)
              ->execute();
          }
        }
      }

      // Delete node types
      // We don't use node_type_delete() because we do not actually
      // want to delete the node type (and invoke hook_node_type()).
      // This can lead to bad consequences like CCK deleting field
      // storage in the DB.
      db_delete('node_type')
        ->condition('type', $type_name)
        ->execute();
      db_delete('uc_product_classes')
        ->condition('pcid', $type_name)
        ->execute();
    }
    uc_product_node_info(TRUE);
    node_types_rebuild();
    menu_rebuild();
  }
}