Mercurial > hg > rr-repo
diff sites/all/modules/bundle_inherit/bundle_inherit.install @ 4:ce11bbd8f642
added modules
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:38:44 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/bundle_inherit/bundle_inherit.install Thu Sep 19 10:38:44 2013 +0100 @@ -0,0 +1,66 @@ +<?php +/** + * @file + * Bundle Inherit module install file. + */ + +/** + * Implements hook_schema(). + */ +function bundle_inherit_schema() { + $schema['bundle_hierarchy'] = array( + 'description' => 'Holds info about hierarchy relations between entity types.', + 'fields' => array( + 'entity_type' => array( + 'description' => 'The entity type of the bundles.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => TRUE, + ), + 'bundle' => array( + 'description' => 'Child bundle name.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => TRUE, + ), + 'bundle_parent' => array( + 'description' => 'Parent bundle name.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => TRUE, + ), + ), + 'primary key' => array('entity_type', 'bundle'), + 'indexes' => array( + 'parent' => array('entity_type', 'bundle_parent'), + ), + ); + + + return $schema; +} + + +/** + * Implements hook_uninstall(). + * + * We should remove 'locked' state from all inherited fields instances. + * + * @todo + * Maybe some better way to implement this function exists (talking about + * performance). But anyway we are getting info about instances from cache + * so I think that this implementation is more stable and logicaly loocking. + */ +function bundle_inherit_uninstall() { + $records = db_select('bundle_hierarchy', 'bh') + ->fields('bh') + ->execute(); + foreach ($records as $record) { + $instances = field_info_instances($record->entity_type, $record->bundle_parent); + foreach ($instances as $instance) { + $inherited_instance = field_info_instance($record->entity_type, $instance['field_name'], $record->bundle); + $inherited_instance['locked'] = FALSE; + field_update_instance($inherited_instance); + } + } +} \ No newline at end of file