You are here

function ctools_entity_field_value_ctools_access_settings in Chaos Tool Suite (ctools) 7

Settings form for the 'by entity_bundle' access plugin.

1 string reference to 'ctools_entity_field_value_ctools_access_settings'
entity_field_value.inc in plugins/access/entity_field_value.inc

File

plugins/access/entity_field_value.inc, line 80

Code

function ctools_entity_field_value_ctools_access_settings($form, &$form_state, $conf) {
  $plugin = $form_state['plugin'];
  list($parent, $entity_type, $bundle_type, $field_name) = explode(':', $plugin['name']);
  $entity_info = entity_get_info($entity_type);
  $instances = field_info_instances($entity_type, $bundle_type);
  $instance = $instances[$field_name];
  $field = field_info_field_by_id($instance['field_id']);
  foreach ($field['columns'] as $column => $attributes) {
    $columns[$column] = _field_sql_storage_columnname($field_name, $column);
  }
  ctools_include('fields');
  $entity = (object) array(
    $entity_info['entity keys']['bundle'] => $bundle_type,
  );
  foreach ($columns as $column => $sql_column) {
    if (isset($conf[$sql_column])) {
      if (is_array($conf[$sql_column])) {
        foreach ($conf[$sql_column] as $delta => $conf_value) {
          if (is_numeric($delta)) {
            if (is_array($conf_value)) {
              $entity->{$field_name}[LANGUAGE_NONE][$delta][$column] = $conf_value[$column];
            }
            else {
              $entity->{$field_name}[LANGUAGE_NONE][$delta][$column] = $conf_value;
            }
          }
        }
      }
      else {
        $entity->{$field_name}[LANGUAGE_NONE][0][$column] = $conf[$sql_column];
      }
    }
  }
  $form['#parents'] = array(
    'settings',
  );
  $langcode = field_valid_language(NULL);
  $form['settings'] += (array) ctools_field_invoke_field($instance, 'form', $entity_type, $entity, $form, $form_state, array(
    'default' => TRUE,
    'language' => $langcode,
  ));

  // Weight is really not important once this is populated and will only interfere with the form layout.
  foreach (element_children($form['settings']) as $element) {
    unset($form['settings'][$element]['#weight']);
  }
  return $form;
}