You are here

function google_fonts_admin_settings_form_submit in Google Fonts 7

Same name and namespace in other branches
  1. 6.2 google_fonts.admin.inc \google_fonts_admin_settings_form_submit()
  2. 7.2 google_fonts.admin.inc \google_fonts_admin_settings_form_submit()

Submit handler of the admin settings form Saves the fonts, CSS code and settings

File

./google_fonts.admin.inc, line 168
Administrative page callbacks for the Google Fonts module.

Code

function google_fonts_admin_settings_form_submit($form, &$form_state) {
  $enabled_fonts = array();
  if (isset($form_state['values']['enabled_fonts'])) {
    foreach ($form_state['values']['enabled_fonts'] as $key => $font) {
      $font_key = _google_fonts_family_array_key_encode($font->family);

      // Strip out unchecked font variants
      foreach ($form_state['values'][$font_key . '_variants'] as $variant_key => $variant) {
        if (!$variant) {
          unset($form_state['values'][$font_key . '_variants'][$variant_key]);
        }
      }

      // Only add the font if the enabler checkbox is not checked
      if (!$form_state['values'][$font_key . '_enabler']) {
        $enabled_fonts[$font_key] = array(
          'family' => $font->family,
          'variants' => $form_state['values'][$font_key . '_variants'],
          'subsets' => $form_state['values'][$font_key . '_subsets'],
        );
      }
    }
  }
  foreach ($form_state['values']['google_fonts_disabled_fonts'] as $key => $font) {
    if (!empty($font)) {
      $enabled_fonts[$key] = array(
        'family' => $font,
      );
    }
  }

  // Save the font settings to the database
  variable_set('google_fonts_enabled_fonts', $enabled_fonts);

  // Save the CSS code. If left empty, just delete the existing variable
  if (empty($form_state['values']['css_code'])) {
    variable_del('google_fonts_css_contents');
  }
  else {
    variable_set('google_fonts_css_contents', $form_state['values']['css_code']);

    // Save the CSS code as local file
    if (!_google_fonts_cache($form_state['values']['css_code'], TRUE)) {
      drupal_set_message(t('Could not generate the CSS code for the Google Fonts.'), 'error');
    }
  }

  // Clear the current messages (to prevent an unneeded 'No Google Fonts have been enabled' message)
  drupal_get_messages('status');
  drupal_set_message(t('Configuration saved'), 'status');
}