function uc_product_classes_features_revert in Ubercart 7.3
Same name and namespace in other branches
- 6.2 uc_product/uc_product.features.inc \uc_product_classes_features_revert()
Implements hook_features_revert().
See also
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();
}
}