You are here

function availability_calendars_admin_settings_submit in Availability Calendars 7.2

Same name and namespace in other branches
  1. 6.2 availability_calendars.admin.inc \availability_calendars_admin_settings_submit()

Form submit callback for the admin_settings form.

Processes the submitted form. The states are non-system settings, and are handled here. Other values are handled by the default system settings form handling.

_state

Parameters

array $form:

1 string reference to 'availability_calendars_admin_settings_submit'
availability_calendars_admin_settings in ./availability_calendars.admin.inc
Retrieve form callback for the admin/config/availability-calendars/settings page.

File

./availability_calendars.admin.inc, line 254

Code

function availability_calendars_admin_settings_submit($form, &$form_state) {
  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
  if ($op == t('Save configuration')) {

    // Process the state settings here and do not pass them to the default submit handler for system settings forms.
    $element = $form_state['values']['states'];
    unset($form_state['values']['states']);

    // Extract the states.
    $states = array();
    foreach ($element as $i => $state_fields) {

      // Only add non-empty labels.
      if (!empty($state_fields['label'])) {
        if (empty($state_fields['css_class'])) {
          $state_fields['css_class'] = availability_calendars_string_to_safe_id($state_fields['label']);
        }
        $states[$state_fields['css_class']] = array(
          'css_class' => $state_fields['css_class'],
          'label' => $state_fields['label'],
          'weight' => $state_fields['weight'],
          'is_available' => $state_fields['is_available'],
        );
      }
    }
    $default = $form_state['values']['defaultstatus'];
    if (!empty($element[$default]['css_class'])) {
      $form_state['values']['availability_calendars_settings_system']['defaultstatus'] = $element[$default]['css_class'];
    }

    // Finally, save the states.
    availability_calendars_update_states($states);

    // Remove all per node settings if the setting changes from yes to no.
    if ($form_state['values']['availability_calendars_settings_system_pernodeoverride'] == 0) {
      $settings = availability_calendars_get_settings();
      if ($settings->pernodeoverride) {
        availability_calendars_delete_node_settings();
      }
    }

    // Clean-up the representation of supported content types before storing as a variable.
    $form_state['values']['availability_calendars_settings_content_types'] = array_keys(array_filter($form_state['values']['availability_calendars_settings_content_types']));
  }
}