You are here

function node_registration_node_type_form_submit in Node registration 7

Submit handler for node_registration_form_node_type_form_alter().

1 string reference to 'node_registration_node_type_form_submit'
node_registration_form_node_type_form_alter in ./node_registration.module
Implements hook_form_FORM_ID_alter() for node_type_form().

File

./node_registration.module, line 840

Code

function node_registration_node_type_form_submit($form, &$form_state) {
  $values =& $form_state['values'];
  $nt = $form['#node_type'];
  $type = $nt->type;

  // Fetch old settings.
  $old_node_status = _node_registration_node_type_enabled($type);

  // Extract new settings.
  $node_status = (int) $values['registration_node_status'];
  $date_field = $values['registration_node_date_field'];
  $max_registration_date_field = $values['registration_node_max_registration_date_field'];
  $min_registration_date_field = $values['registration_node_min_registration_date_field'];
  $capacity_field = $values['registration_node_capacity_field'];

  // Unset 'settings' from form_state so they're not automatically saved as variables.
  unset($values['registration_node_status'], $values['registration_node_date_field'], $values['registration_node_max_registration_date_field'], $values['registration_node_min_registration_date_field'], $values['registration_node_capacity_field']);

  // Check if the settings have actually changed.
  $settings_changed = $node_status != $old_node_status;

  // Save settings.
  if ($node_status) {
    _node_registration_node_type_enable($type, $node_status, array(
      'date_field' => $date_field,
      'max_registration_date_field' => $max_registration_date_field,
      'min_registration_date_field' => $min_registration_date_field,
      'capacity_field' => $capacity_field,
    ));
  }
  else {
    node_registration_node_type_delete($nt);
  }

  // Reset entities & menu routes.
  if ($settings_changed) {
    entity_info_cache_clear();
    menu_rebuild();
  }
}