Published
2011-08-31 07:31
I hope Michal will forgive me for typing during his Developer training presentation on tests. Since I heard the presentation at CiviCon, I instead tried, as an exercise based on what we learned this morning, to create a custom group and custom field via the install hook in a Drupal module.
Here are the results...
function civicrmtest_install() { civicrm_initialize(); require_once 'api/api.php'; $params = array( 'version' => 3, 'extends' => array('Individual'), 'title' => 'JamieGroup', 'is_active' => 1, ); $result = civicrm_api('CustomGroup','Create',$params); if($result['is_error'] == 1) { drupal_set_message('Error creating Custom Group'); drupal_set_message($result['error_message']); } else { $value = array_pop($result['values']); $custom_group_id = $value['id']; variable_set('civicrmtest_custom_group_id',$custom_group_id); $params = array( 'version' => 3, 'label' => 'JamieField', 'custom_group_id' => $custom_group_id, 'is_active' => 1, ); $result = civicrm_api('CustomField','Create',$params); if($result['is_error'] == 1) { drupal_set_message('Error creating Custom Field'); drupal_set_message($result['error_message']); } else { $value = array_pop($result['values']); variable_set('civicrmtest_custom_field_id',$value['id']); } } } function civicrmtest_uninstall() { civicrm_initialize(); require_once 'api/api.php'; $custom_field_id = variable_get('civicrmtest_custom_field_id', null); if(!is_null($custom_field_id)) { $params = array( 'version' => 3, 'id' => $custom_field_id, ); $result = civicrm_api('CustomField','Delete',$params); if($result['is_error'] == 1) { drupal_set_message('Error deleting Custom Field'); drupal_set_message($result['error_message']); } else { variable_del('civicrmtest_custom_field_id'); } } $custom_group_id = variable_get('civicrmtest_custom_group_id', null); if(!is_null($custom_group_id)) { $params = array( 'version' => 3, 'id' => $custom_group_id, ); $result = civicrm_api('CustomGroup','Delete',$params); if($result['is_error'] == 1) { drupal_set_message('Error deleting Custom Group'); drupal_set_message($result['error_message']); } else { variable_del('civicrmtest_custom_group_id'); } } }
Comments
To continue the discussion we had about sensible default values during the sprint, is_active IMO should be an optional param that if not present defaults to true.