function search_api_glossary_search_api_index_fields_validate in Search API AZ Glossary 8
Same name and namespace in other branches
- 8.2 search_api_glossary.module \search_api_glossary_search_api_index_fields_validate()
Validate search_api_glossary settings for Search API Index configuration.
1 string reference to 'search_api_glossary_search_api_index_fields_validate'
- search_api_glossary_form_search_api_index_fields_alter in ./
search_api_glossary.module - Add search_api_glossary settings to Search API Index configuration.
File
- ./
search_api_glossary.module, line 106 - Search api glossary module file.
Code
function search_api_glossary_search_api_index_fields_validate($form, FormStateInterface $form_state) {
$values = $form_state
->getValues();
$fields = $values['fields'];
$entity = $form_state
->getFormObject()
->getEntity();
$field_settings_array = $entity
->get('field_settings');
// If a glossary field exists but
// parent field has been removed or
// Glossary option is disabled and
// Glossary field is still enabled
// throw an error.
foreach ($fields as $field_name => $field_values) {
// Identify glossary fields and check parents.
// This case would occur if Glossary field is added
// but parent is removed or disabled.
if (substr($field_name, 0, strlen('field_glossaryaz')) === 'field_glossaryaz') {
// Check if the parent field for
// this glossary field exists and is enabled.
$glossary_parent_field = str_replace('field_glossaryaz_', '', $field_name);
// We dont seem to have a parent field for Glossary.
if (!array_key_exists($glossary_parent_field, $fields)) {
// Throw an exception to remove the Glossary field.
$form_state
->setErrorByName($field_name, t('@parent field is missing or removed. Please remove @glossary field or add @parent field.', array(
'@parent' => $glossary_parent_field,
'@glossary' => $field_settings_array[$field_name]['label'],
)));
}
elseif ($fields[$glossary_parent_field]['glossary_az'] == 0) {
// Throw an exception to remove the Glossary field.
// Or enable glossary option.
$form_state
->setErrorByName($field_name, t('@parent field does not have Glossary enabled. Please remove @glossary field or enable Glossary on @parent field.', array(
'@parent' => $field_settings_array[$glossary_parent_field]['label'],
'@glossary' => $field_settings_array[$field_name]['label'],
)));
}
}
}
}