You are here

function file_entity_file_formatter_file_field_settings in File Entity (fieldable files) 7

Same name and namespace in other branches
  1. 7.3 file_entity.module \file_entity_file_formatter_file_field_settings()
  2. 7.2 file_entity.module \file_entity_file_formatter_file_field_settings()

Implements hook_file_formatter_FORMATTER_settings().

This function provides a bridge to the field formatter API, so that file field formatters can be reused for displaying the file entity's file pseudo-field.

1 string reference to 'file_entity_file_formatter_file_field_settings'
file_entity_file_formatter_info in ./file_entity.module
Implements hook_file_formatter_info().

File

./file_entity.module, line 394
Extends Drupal file entities to be fieldable and viewable.

Code

function file_entity_file_formatter_file_field_settings($form, &$form_state, $settings, $formatter_type, $file_type, $view_mode) {
  if (strpos($formatter_type, 'file_field_') === 0) {
    $field_formatter_type = substr($formatter_type, strlen('file_field_'));
    $field_formatter_info = field_info_formatter_types($field_formatter_type);

    // Invoke hook_field_formatter_settings_form(). We are reusing field
    // formatter functions, but we are not working with a Field API field, so
    // set $field accordingly. Unfortunately, the API is for $settings to be
    // transfered via the $instance parameter, so we must mock it.
    if (isset($field_formatter_info['module']) && ($function = $field_formatter_info['module'] . '_field_formatter_settings_form') && function_exists($function)) {
      $field = NULL;
      $mock_instance['display'][$view_mode] = array(
        'type' => $field_formatter_type,
        'settings' => $settings,
      );
      return $function($field, $mock_instance, $view_mode, $form, $form_state);
    }
  }
}