function geshifilter_per_filter_language_settings_validate in GeSHi Filter for syntax highlighting 7
Validate function for per filter language settings.
Check that language tags differ between languages and fro the generic tags.
1 string reference to 'geshifilter_per_filter_language_settings_validate'
File
- ./
geshifilter.admin.inc, line 337
Code
function geshifilter_per_filter_language_settings_validate($form, &$form_state) {
// If we do not have per filter settings, skip all this validation.
if (isset($form_state['values']['filters']['geshifilter']['settings']['per_language_settings'])) {
// if we're coming from the _geshifilter_filter_settings (sub)form, we should
// take the text format into account
$format = isset($form_state['values']['format']) ? $form_state['values']['format'] : NULL;
$f = $format === NULL ? '' : "_{$format}";
// language tags should differ from each other
$languages = _geshifilter_get_available_languages();
$values = $form_state['values']['filters']['geshifilter']['settings']['per_language_settings']['table']['languages'];
foreach ($languages as $language1 => $language_data1) {
// iterate over the enabled languages: skip disabled ones
$field = "geshifilter_language_enabled_{$language1}";
if (!(isset($values[$language1][$field]) ? $values[$language1][$field] : variable_get($field, FALSE))) {
continue;
}
// get the associated tags as $tags1
$field = "geshifilter_language_tags_{$language1}{$f}";
if (isset($values[$language1][$field])) {
$tags1 = _geshifilter_tag_split($values[$language1][$field]);
}
else {
$tags1 = _geshifilter_tag_split(geshifilter_language_tags($language1, $format));
}
// also include the generic tags
$field = "geshifilter_tags{$f}";
$generic_tags = isset($values[$language1][$field]) ? $values[$language1][$field] : geshifilter_tags($format);
$tags1 = array_merge($tags1, _geshifilter_tag_split($generic_tags));
// check that other languages do not use these tags
foreach ($languages as $language2 => $language_data2) {
// check these tags against the tags of other enabled languages
$field = "geshifilter_language_enabled_{$language2}";
if ($language1 == $language2 || !(isset($values[$language2][$field]) ? $values[$language2][$field] : variable_get($field, FALSE))) {
continue;
}
// get tags for $language2, or skip when not in $form_state['values']
$field = "geshifilter_language_tags_{$language2}{$f}";
if (isset($values[$language2][$field])) {
$tags2 = _geshifilter_tag_split($values[$language2][$field]);
}
else {
continue;
}
// and now we can check tags1 against tags2
foreach ($tags1 as $tag1) {
foreach ($tags2 as $tag2) {
if ($tag1 == $tag2) {
form_set_error("filters][geshifilter][settings][per_language_settings][table][languages][{$language2}][geshifilter_language_tags_{$language2}{$f}", t('GeShi Filter: The language tags should differ between languages and from the generic tags.'));
}
}
}
}
}
}
return $form;
}