danielebarchiesi@4: 'Holds info about hierarchy relations between entity types.', danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'entity_type' => array( danielebarchiesi@4: 'description' => 'The entity type of the bundles.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: ), danielebarchiesi@4: 'bundle' => array( danielebarchiesi@4: 'description' => 'Child bundle name.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: ), danielebarchiesi@4: 'bundle_parent' => array( danielebarchiesi@4: 'description' => 'Parent bundle name.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('entity_type', 'bundle'), danielebarchiesi@4: 'indexes' => array( danielebarchiesi@4: 'parent' => array('entity_type', 'bundle_parent'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: danielebarchiesi@4: danielebarchiesi@4: return $schema; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_uninstall(). danielebarchiesi@4: * danielebarchiesi@4: * We should remove 'locked' state from all inherited fields instances. danielebarchiesi@4: * danielebarchiesi@4: * @todo danielebarchiesi@4: * Maybe some better way to implement this function exists (talking about danielebarchiesi@4: * performance). But anyway we are getting info about instances from cache danielebarchiesi@4: * so I think that this implementation is more stable and logicaly loocking. danielebarchiesi@4: */ danielebarchiesi@4: function bundle_inherit_uninstall() { danielebarchiesi@4: $records = db_select('bundle_hierarchy', 'bh') danielebarchiesi@4: ->fields('bh') danielebarchiesi@4: ->execute(); danielebarchiesi@4: foreach ($records as $record) { danielebarchiesi@4: $instances = field_info_instances($record->entity_type, $record->bundle_parent); danielebarchiesi@4: foreach ($instances as $instance) { danielebarchiesi@4: $inherited_instance = field_info_instance($record->entity_type, $instance['field_name'], $record->bundle); danielebarchiesi@4: $inherited_instance['locked'] = FALSE; danielebarchiesi@4: field_update_instance($inherited_instance); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: }