function civicrm_entity_rules_data_info in CiviCRM Entity 7
Same name and namespace in other branches
- 7.2 civicrm_entity.rules.inc \civicrm_entity_rules_data_info()
Implements of hook_rules_data_type_info().
File
- ./
civicrm_entity.rules.inc, line 11 - Implement Drupal Rules integration for CiviCRM
Code
function civicrm_entity_rules_data_info() {
if (!civicrm_initialize(TRUE)) {
return;
}
module_load_include('module', 'civicrm_entity', 'civicrm_entity');
$info = array();
$entities = _civicrm_entity_enabled_entities();
foreach ($entities as $drupal_entity => $civicrm_entity) {
$info[$drupal_entity] = array(
'label' => t('CiviCRM @entity', array(
'@entity' => $civicrm_entity,
)),
// parent => 'civicrm_entity',
'wrap' => TRUE,
'group' => 'CiviCRM',
// 'ui class' => 'RulesDataUIEntityExportable',
'module' => 'civicrm',
);
$info[$drupal_entity]['property_info'] = _civicrm_entity_getproperties($civicrm_entity);
// I don't think these are being 'kept'.
$fields = civicrm_api($civicrm_entity, 'getfields', array(
'version' => 3,
'action' => 'create',
));
foreach ($fields['values'] as $fieldname => $field_specs) {
if (!empty($field_specs['type']) && $field_specs['type'] == 1) {
// Type is empty for custom fields - we should sort that out
// but skipping for now.
if (CRM_Utils_Array::Value('FKClassName', $field_specs)) {
$fks = _civicrm_entity_chained_fks();
if (array_key_exists($field_specs['FKClassName'], $fks)) {
$fks_entity = $fks[$field_specs['FKClassName']];
$info[$drupal_entity]['property_info'][$fieldname] = array(
'label' => empty($field_specs['title']) ? 'label not defined in CiviCRM schema' : $field_specs['title'],
'type' => 'civicrm_' . $fks_entity,
);
}
}
if ($fieldname == 'entity_id') {
$fks_entity = 'contact';
$info[$drupal_entity]['property_info'][$fieldname] = array(
'label' => empty($field_specs['title']) ? 'label not defined in CiviCRM schema' : $field_specs['title'],
'type' => 'civicrm_' . $fks_entity,
);
}
$info[$drupal_entity]['property_info'][$fieldname] = array(
'label' => empty($field_specs['title']) ? 'label not defined in CiviCRM schema' : $field_specs['title'],
'type' => 'integer',
);
if (!empty($field_specs['options'])) {
$info[$drupal_entity]['property_info'][$fieldname]['type'] = 'list<integer>';
$info[$drupal_entity]['property_info'][$fieldname]['options list'] = '_civicrm_entity_rules_attach_options';
$info[$drupal_entity]['property_info'][$fieldname]['options data'] = $field_specs['options'];
}
}
}
}
return $info;
}