You are here

function weather_display_config_form_submit in Weather 7.3

Same name and namespace in other branches
  1. 7.2 weather.forms.inc \weather_display_config_form_submit()

Implements hook_form_submit().

File

./weather.forms.inc, line 395
Provide forms for configuration of weather displays.

Code

function weather_display_config_form_submit($form, &$form_state) {
  if ($form_state['values']['number'] == NULL) {
    module_load_include('inc', 'weather', 'weather.common');

    // The number does not exist, so insert a new entry.
    $used_numbers = weather_get_displays_in_use($form_state['values']['type']);
    $free_number = 1;
    foreach ($used_numbers as $number) {
      if ($number > $free_number) {
        break;
      }
      else {
        $free_number++;
      }
    }
    db_insert('weather_displays')
      ->fields(array(
      'type' => $form_state['values']['type'],
      'number' => $free_number,
      'config' => serialize($form_state['values']['config']),
    ))
      ->execute();
  }
  else {

    // The number already exists, so overwrite the entry.
    db_merge('weather_displays')
      ->key(array(
      'type' => $form_state['values']['type'],
      'number' => $form_state['values']['number'],
    ))
      ->fields(array(
      'config' => serialize($form_state['values']['config']),
    ))
      ->execute();
  }
  if ($form_state['values']['type'] == 'user') {
    $path = 'user/' . $form_state['values']['number'] . '/weather';
  }
  else {
    $path = 'admin/config/user-interface/weather';
  }
  $form_state['redirect'] = $path;
}