You are here

function _custom_formatters_preview_variables in Custom Formatters 7.2

Gets available options for the Preview form controls.

Parameters

array $form: The form api array.

array $form_state: The form state array.

Return value

array A keyed arary of options for the JS Preview.

1 call to _custom_formatters_preview_variables()
custom_formatters_export_ui_form in plugins/export_ui/custom_formatters.inc
Custom Formatters settings form.

File

plugins/export_ui/custom_formatters.inc, line 232
CTools Export UI plugin for SexyBookmarks profiles.

Code

function _custom_formatters_preview_variables($form, $form_state) {
  $options = array();
  $item = !empty($form_state['values']) ? $form_state['values'] : (array) $form_state['item'];
  if (!is_array($item['field_types'])) {
    $item['field_types'] = drupal_explode_tags($item['field_types']);
  }

  // Entity Types.
  $options['entity_types'] = array();
  $entity_types = entity_get_info();
  foreach ($entity_types as $key => $entity) {
    if ($entity['fieldable']) {
      $options['entity_types'][$key] = $entity['label'];
    }
  }

  // Bundles.
  $options['bundles'] = array();
  if (!empty($options['entity_types'])) {
    $entity_type = !empty($item['preview']['entity_type']) ? $item['preview']['entity_type'] : 'node';
    foreach ($entity_types[$entity_type]['bundles'] as $key => $bundle) {
      $options['bundles'][$key] = $bundle['label'];
    }
  }

  // Fields.
  $options['fields'] = array();
  if (isset($entity_type) && !empty($options['bundles'])) {
    $bundle = !empty($item['preview']['bundle']) && isset($options['bundles'][$item['preview']['bundle']]) ? $item['preview']['bundle'] : key($options['bundles']);
    $fields = field_info_instances($entity_type, $bundle);
    foreach ($fields as $key => $field) {
      $field_info = field_info_field_by_id($field['field_id']);
      if (in_array($field_info['type'], $item['field_types'])) {
        $options['fields'][$key] = $field['label'];
      }
    }
  }

  // Entities.
  $options['entities'] = array();
  if (isset($entity_type) && isset($bundle) && !empty($options['fields'])) {
    $field = !empty($item['preview']['field']) ? $item['preview']['field'] : key($options['fields']);
    if (strstr($field, 'field_')) {
      $query = new EntityFieldQuery();
      $query
        ->entityCondition('entity_type', $entity_type)
        ->entityCondition('bundle', $bundle)
        ->addTag('random')
        ->range(0, 50)
        ->fieldCondition($field);
      $result = $query
        ->execute();
      if (!empty($result)) {
        $entities = entity_load($entity_type, array_keys($result[$entity_type]));
        foreach ($entities as $key => $entity) {
          $options['entities'][$key] = entity_label($entity_type, $entity) . " [eid:{$key}]";
        }
      }
    }
  }
  return $options;
}