You are here

function ctools_field_foreign_keys in Chaos Tool Suite (ctools) 7

Derive the foreign keys that a field provides.

Parameters

$field_name: The name of the field.

Return value

An array of foreign keys according to Schema API.

1 call to ctools_field_foreign_keys()
ctools_entity_from_field_get_children in plugins/relationships/entity_from_field.inc

File

includes/fields.inc, line 338
Extend core fields with some helper functions to reduce code complexity within views and ctools plugins.

Code

function ctools_field_foreign_keys($field_name) {
  $foreign_keys =& drupal_static(__FUNCTION__, array());
  if (!isset($foreign_keys[$field_name])) {
    $foreign_keys[$field_name] = array();
    $field = field_info_field($field_name);
    if (!empty($field['foreign keys'])) {
      $foreign_keys[$field_name] = $field['foreign keys'];
    }
    else {

      // Try to fetch foreign keys from schema, as not everything
      // stores foreign keys properly in the field info.
      $module = $field['module'];
      module_load_install($module);
      $schema = module_invoke($module, 'field_schema', $field);
      if (!empty($schema['foreign keys'])) {
        $foreign_keys[$field_name] = $schema['foreign keys'];
      }
    }
  }
  return $foreign_keys[$field_name];
}