function language_negotiation_configure_browser_form_validate

Browser language negotiation form validation.

File

drupal/core/modules/language/language.admin.inc, line 701
Administration functions for language.module.

Code

function language_negotiation_configure_browser_form_validate($form, &$form_state) {

  // Array to check if all browser language codes are unique.
  $unique_values = array();

  // Check all mappings.
  $mappings = array();
  if (isset($form_state['values']['mappings'])) {
    $mappings = $form_state['values']['mappings'];
    foreach ($mappings as $key => $data) {

      // Make sure browser_langcode is unique.
      if (array_key_exists($data['browser_langcode'], $unique_values)) {
        form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes must be unique.'));
      }
      elseif (preg_match('/[^a-z\\-]/', $data['browser_langcode'])) {
        form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).'));
      }
      $unique_values[$data['browser_langcode']] = $data['drupal_langcode'];
    }
  }

  // Check new mapping.
  $data = $form_state['values']['new_mapping'];
  if (!empty($data['browser_langcode'])) {

    // Make sure browser_langcode is unique.
    if (array_key_exists($data['browser_langcode'], $unique_values)) {
      form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes must be unique.'));
    }
    elseif (preg_match('/[^a-z\\-]/', $data['browser_langcode'])) {
      form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).'));
    }
    $unique_values[$data['browser_langcode']] = $data['drupal_langcode'];
  }
  $form_state['mappings'] = $unique_values;
}