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;
}