function tmgmt_extension_suit_form_tmgmt_overview_form_validate in TMGMT Extension Suite 8
Overview form validate.
Parameters
array $form:
\Drupal\Core\Form\FormStateInterface $form_state:
1 string reference to 'tmgmt_extension_suit_form_tmgmt_overview_form_validate'
File
- ./
tmgmt_extension_suit.module, line 312
Code
function tmgmt_extension_suit_form_tmgmt_overview_form_validate(array $form, FormStateInterface $form_state) {
$plugin = $form_state
->get('plugin');
$item_type = $form_state
->get('item_type');
$entity_languages = [];
$items = array_filter($form_state
->getValue('items'));
$excluded_items = [];
$source_language = $form_state
->getValue('source_language');
$target_language = $form_state
->getValue('target_language');
$target_languages = $form_state
->getValue('target_languages');
if ($target_language == SourceOverviewForm::ALL) {
$target_languages = array_combine(array_keys($target_languages), array_keys($target_languages));
}
elseif (!in_array($target_language, [
Language::LANGCODE_NOT_SPECIFIED,
SourceOverviewForm::MULTIPLE,
SourceOverviewForm::ALL,
])) {
$target_languages = [
$target_language,
];
}
if (empty($items)) {
$form_state
->setError($form, t("You didn't select any source items."));
return;
}
foreach ($items as $item) {
switch ($plugin) {
case 'content':
$entity_manager = \Drupal::entityTypeManager();
$entity = $entity_manager
->getStorage($item_type)
->load($item);
$entity_source_language = $entity
->language()
->getId();
break;
case 'config':
$config_factory = Drupal::configFactory()
->get($item);
$entity_source_language = $config_factory
->get('langcode');
break;
default:
$entity_source_language = 'en';
}
if ($source_language != SourceOverviewForm::SOURCE && $source_language != $entity_source_language) {
$excluded_items[$item] = $item;
}
$entity_languages[$entity_source_language] = TRUE;
}
if (count($entity_languages) > 1) {
$form_state
->setError($form, t("You can't request translation in a batch for items in different source languages."));
return;
}
if (empty(array_diff($items, $excluded_items))) {
$form_state
->setError($form, t('From the selection you made it was not possible to create any translation job.'));
return;
}
$form_state
->setValue('source_language', key($entity_languages));
$form_state
->setValue('default_target_languages', $target_languages);
}