Skip to content

Instantly share code, notes, and snippets.

@jackfoust
Last active August 29, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jackfoust/1c6236c4d05b00dc6fcd to your computer and use it in GitHub Desktop.
Save jackfoust/1c6236c4d05b00dc6fcd to your computer and use it in GitHub Desktop.
#drupal Entity export. Useful in hook_install() and hook_uninstall(). Drupal 7
<?php
/**
* @file
* Export serialized data containing fields attached to an Entity. Example used when Features not installed.
*/
function MODULE_NAME_install() {
drupal_install_schema(SCHEMA_NAME);
MODULE_NAME_add_entity_fields();
}
/**
Implentation of hook_uninstall().
*/
function MODULE_NAME_uninstall() {
drupal_uninstall_schema(SCHEMA_NAME);
MODULE_NAME_delete_entity_fields();
}
function MODULE_NAME_entity_export() {
$export_data = array();
$export_data['entity_name'] = 'ENTITY';
$export_data['bundle_name'] = 'BUNDLE';
$instances = field_info_instances($export_data['entity_name'], $export_data['bundle_name']);
foreach ($instances as $field_name => $field) {
$export_data['data'][] = array(
'field' => field_info_field($field_name),
'instance' => field_info_instance($export_data['entity_name'], $field_name, $export_data['bundle_name']),
);
}
return serialize($export_data);
}
function MODULE_NAME_return_entity_fields() {
return unserialize(SERIALIZED_EXPORT);
}
function MODULENAME_add_entity_fields() {
$fields = MODULE_NAME_return_entity_fields();
if (!empty($fields)) {
foreach ($fields['data'] as $item) {
field_create_field($item['field']);
field_create_instance($item['instance']);
}
}
}
function MODULE_NAME_delete_entity_fields() {
$fields = MODULE_NAME_return_entity_fields();
if (!empty($fields)) {
foreach ($fields['data'] as $item) {
field_delete_instance($item['instance'], TRUE);
field_delete_field($item['field']['field_name']);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment