You are here

function fb_instant_articles_display_field_ui_layouts_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_layouts_save()

Saves layout configuration of Facebook Instant Articles Display View Mode.

1 string reference to 'fb_instant_articles_display_field_ui_layouts_save'
fb_instant_articles_display_layout_form in modules/fb_instant_articles_display/includes/view_mode_layout.inc
Includes Facebook Instant Articles Display View Mode elements.

File

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

Code

function fb_instant_articles_display_field_ui_layouts_save($form, &$form_state) {
  $weight = 0;

  // Get default values.
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $view_mode = $form['#view_mode'];

  // Save layout and add regions if necessary.
  $record = new stdClass();
  $record->id = $form['#export_id'];
  $record->entity_type = $entity_type;
  $record->bundle = $bundle;
  $record->settings = array();
  $form_state['layout_saved'] = TRUE;
  $fields = fb_instant_articles_display_sort_fields($form_state['values']['fields'], 'weight');
  foreach ($fields as $key => $field) {

    // Make sure we need to save anything for this field.
    if (fb_instant_articles_display_field_valid($key, $field, $form_state, $view_mode)) {
      continue;
    }
    if (!isset($record->settings['regions'][$field['region']])) {
      $record->settings['regions'][$field['region']] = array();
    }
    $record->settings['regions'][$field['region']][$weight++] = $key;
    $record->settings['fields'][$key] = $field['region'];
  }

  // Let other modules alter the layout settings.
  drupal_alter('fb_instant_articles_display_layout_settings', $record, $form_state);
  $layout = $form['#fbia_layout'];
  if (!isset($layout->export_type)) {
    drupal_write_record('fb_instant_articles_display_layout_settings', $record);
  }
  else {
    drupal_write_record('fb_instant_articles_display_layout_settings', $record, array(
      'id',
    ));
  }

  // Clear entity info cache.
  cache_clear_all('entity_info', 'cache', TRUE);
}