Created
May 6, 2014 04:57
-
-
Save sebas5384/e53ae978fddad831f011 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Implements hook_install(). | |
*/ | |
function power_one_install() { | |
// The "generation_site" entity type already exists at this point. | |
// Create a new entity bundle using ECK's API. | |
$new_bundle = function($name, $label, $entity_type) { | |
$bundle = new Bundle(); | |
$bundle->name = $name; | |
$bundle->label = $label; | |
$bundle->entity_type = $entity_type; | |
$bundle->save(); | |
return $bundle; | |
}; | |
// Add a field API field to the bundle. | |
$add = function($bundle, $type, $name, $label, $settings = array()) { | |
$options = array( | |
'field' => array('field_name' => $name, 'settings' => $settings), | |
'instance' => array('label' => $label, 'required' => TRUE), | |
); | |
$bundle->addField($type, $options); | |
}; | |
$add_max = function($bundle, $type, $name, $label, $max_length) use ($add) { | |
$add($bundle, $type, $name, $label, array('max_length' => $max_length)); | |
}; | |
// Add a site entity reference field to the bundle. | |
$add_ref = function($bundle) { | |
$bundle->addField('entityreference', array( | |
'field' => array( | |
'field_name' => 'pow_site', | |
'settings' => array( | |
'target_type' => 'generation_site', | |
'bundle' => 'power_one', | |
'handler_settings' => array( | |
'sort' => array( | |
'direction' => 'ASC', | |
'property' => 'title', | |
'type' => 'property', | |
), | |
'target_bundles' => array( | |
'power_one' => 'power_one', | |
), | |
), | |
), | |
), | |
'instance' => array( | |
'label' => 'Site', | |
'required' => TRUE, | |
), | |
)); | |
}; | |
// Create and field our site bundle. | |
$bundle = $new_bundle('power_one', 'Power-One', 'generation_site'); | |
$bundle->addField('date', array( | |
'field' => array( | |
'field_name' => 'pow_install_date', | |
'settings' => array( | |
'granularity' => array( | |
'day' => 'day', | |
'hour' => 0, | |
'minute' => 0, | |
'month' => 'month', | |
'second' => 0, | |
'year' => 'year', | |
), | |
), | |
), | |
'instance' => array( | |
'label' => 'Install date', | |
'required' => TRUE, | |
'settings' => array( | |
'default_value' => 'blank', | |
), | |
'widget' => array( | |
'settings' => array( | |
'year_range' => '2000:+3', | |
), | |
'type' => 'date_popup', | |
), | |
), | |
)); | |
$add($bundle, 'list_boolean', 'pow_is_rgpv', 'Uses revenue grade meters'); | |
$add($bundle, 'number_integer', 'pow_system_size', 'System size'); | |
$add_max($bundle, 'text', 'pow_timezone', 'Timezone', 20); | |
$add_max($bundle, 'text', 'pow_system_size_units', 'System size units', 10); | |
// Create an entity type for devices. | |
$device = new EntityType(); | |
$device->name = 'pow_device'; | |
$device->label = 'Power-One Device'; | |
$device->addProperty('pow_name', 'Device name', 'text', 'title'); | |
$device->addProperty('pow_eid', 'Power-One Entity ID', 'positive_integer'); | |
$device->addProperty('pow_logger_eid', 'Power-One Logger Entity ID', 'positive_integer'); | |
$device->save(); | |
// Add fields to Device bundle. | |
$bundle = $new_bundle('pow_device', 'Power-One Device', 'pow_device'); | |
$add($bundle, 'list_boolean', 'pow_is_active', 'Active'); | |
$add($bundle, 'text', 'pow_manufacturer', 'Manufacturer'); | |
$add_max($bundle, 'text', 'pow_device_id', 'Device ID', 32); | |
$add_max($bundle, 'text', 'pow_device_type_id', 'Device type ID', 32); | |
$add_max($bundle, 'text', 'pow_device_number', 'Device number', 32); | |
$add_ref($bundle); | |
// Create an entity type for loggers. | |
$device = new EntityType(); | |
$device->name = 'pow_logger'; | |
$device->label = 'Power-One Logger'; | |
$device->addProperty('pow_name', 'Logger name', 'text', 'title'); | |
$device->addProperty('pow_eid', 'Power-One Entity ID', 'positive_integer'); | |
$device->addProperty('pow_lid', 'Power-One Logger ID', 'text'); | |
$device->save(); | |
// Add fields to Logger bundle. | |
$bundle = $new_bundle('pow_logger', 'Power-One Logger', 'pow_logger'); | |
$add($bundle, 'list_boolean', 'pow_is_active', 'Active'); | |
$add($bundle, 'text', 'pow_manufacturer', 'Manufacturer'); | |
$add_max($bundle, 'text', 'pow_mac_address', 'MAC Address', 32); | |
$add_max($bundle, 'text', 'pow_model', 'Model', 32); | |
$add_ref($bundle); | |
} | |
/** | |
* Implements hook_uninstall(). | |
*/ | |
function power_one_uninstall() { | |
$entity_types = array('pow_device', 'pow_logger'); | |
foreach ($entity_types as $name) { | |
if ($type = EntityType::loadByName($name)) { | |
$type->delete(); | |
} | |
} | |
if ($bundle = Bundle::loadByMachineName('generation_site_power_one')) { | |
$bundle->delete(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment