You are here

function fb_instant_articles_display_field_ui_fields_save in Facebook Instant Articles 7

Same name and namespace in other branches
  1. 7.2 modules/fb_instant_articles_display/includes/view_mode_layout.inc \fb_instant_articles_display_field_ui_fields_save()

Saves the field settings from the 'Manage display' screen.

1 string reference to 'fb_instant_articles_display_field_ui_fields_save'
fb_instant_articles_display_field_ui_fields in modules/fb_instant_articles_display/includes/view_mode_layout.inc
Adds the fields to the Field UI form.

File

modules/fb_instant_articles_display/includes/view_mode_layout.inc, line 467
View mode layout functions for Facebook Instant Articles Display.

Code

function fb_instant_articles_display_field_ui_fields_save($form, &$form_state) {

  // Setup some variables.
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $view_mode = $form['#view_mode'];

  // Delete previous field configuration configuration.
  db_delete('fb_instant_articles_display_field_settings')
    ->condition('entity_type', $entity_type)
    ->condition('bundle', $bundle)
    ->condition('view_mode', $view_mode)
    ->execute();
  if (empty($form_state['layout_saved'])) {
    return;
  }
  $field_settings = array();

  // Save settings for each field.
  $fields = $form['#fbia_fields'];
  foreach ($fields as $field) {

    // Field settings.
    $field_values = $form_state['values']['fields'][$field];

    // In case the region is hidden, do not save.
    if (isset($field_values['region']) && $field_values['region'] == 'hidden') {
      continue;
    }

    // Build settings.
    $settings = array();
    $settings['weight'] = $field_values['weight'];
    $settings['label'] = $field_values['label'];
    $settings['format'] = $field_values['format']['type'];

    // Any formatter settings.
    if (isset($form_state['formatter_settings'][$field])) {
      $settings['formatter_settings'] = $form_state['formatter_settings'][$field];
    }
    $field_settings[$field] = $settings;
  }

  // Allow other modules to modify the field settings before they get saved.
  drupal_alter('fb_instant_articles_display_field_settings', $field_settings, $form, $form_state);

  // Save the record.
  if (!empty($field_settings)) {
    $record = new stdClass();
    $record->id = $form['#export_id'];
    $record->entity_type = $entity_type;
    $record->bundle = $bundle;
    $record->view_mode = $view_mode;
    $record->settings = $field_settings;
    drupal_write_record('fb_instant_articles_display_field_settings', $record);
  }

  // Clear the field cache.
  cache_clear_all('fb_instant_articles_display_fields:', 'cache', TRUE);
  cache_clear_all('fb_instant_articles_display_field_settings', 'cache');
}