You are here

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'
tmgmt_extension_suit_form_tmgmt_overview_form_alter in ./tmgmt_extension_suit.module
Implements hook_form_FORM_ID_alter().

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);
}