Browser language negotiation form validation.
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;
}