You are here

function simple_node_importer_form_alter in Simple Node Importer 8

Same name and namespace in other branches
  1. 7 simple_node_importer.module \simple_node_importer_form_alter()

Implements hook_form_alter().

File

./simple_node_importer.module, line 143
Simple node importer module file.

Code

function simple_node_importer_form_alter(&$form, FormStateInterface &$form_state, $form_id) {
  if ($form_id == 'node_simple_node_form') {

    // Set the session variable to false.
    $sessionVariable = \Drupal::service('user.private_tempstore')
      ->get('simple_node_importer');
    $sessionVariable
      ->set('file_upload_session', FALSE);
    $form['status']['#access'] = FALSE;
    $form['title']['#required'] = FALSE;
    $form['title']['#access'] = FALSE;
    $form['field_select_content_type']['widget']['#ajax'] = [
      'callback' => 'simple_node_importer_snp_ajax_breif_callback',
      'wrapper' => 'replace_breif_note_div',
      'event' => 'change',
    ];
    $form['field_select_entity_type']['widget']['#ajax'] = [
      'callback' => 'simple_node_importer_snpentity_ajax_breif_callback',
      'wrapper' => 'replace_breif_note_div',
      'event' => 'change',
    ];
    $form['field_select_content_type']['#states'] = [
      'visible' => [
        'select[name="field_select_entity_type"]' => [
          'value' => 'node',
        ],
      ],
      'required' => [
        'select[name="field_select_entity_type"]' => [
          'value' => 'node',
        ],
      ],
    ];
    $form['replace_breif_note_div'] = [
      '#type' => 'container',
      '#markup' => '',
      '#attributes' => [
        'id' => 'replace-breif-note-div',
      ],
      '#weight' => 3,
    ];
    $form['download_template'] = [
      '#type' => 'submit',
      '#value' => t('Download Sample File'),
      '#weight' => 3,
      '#submit' => [
        'simple_node_importer_template_submit_handler',
      ],
      '#limit_validation_errors' => [
        [
          'field_select_content_type',
        ],
        [
          'field_select_entity_type',
        ],
      ],
      '#states' => [
        'invisible' => [
          ':input[name="field_select_entity_type"]' => [
            'value' => '_none',
          ],
        ],
      ],
    ];
    $form['field_upload_csv']['#states'] = [
      'invisible' => [
        ':input[name="field_select_entity_type"]' => [
          'value' => '_none',
        ],
      ],
    ];
    $form['#validate'][] = 'simple_node_importer_validate';
    $fieldSelectContentOptions = $form['field_select_entity_type']['widget']['#options'];

    /*
     ** Check whether Admin set the content type to import or not.
     ** If variable 'content_type_select' is empty.
     ** ask to select the content type list.
     */
    if (count($fieldSelectContentOptions) == 1) {
      $form['field_select_entity_type']['#access'] = FALSE;
      $form['field_select_content_type']['#access'] = FALSE;
      $form['field_upload_csv']['#access'] = FALSE;
      $form['download_template']['#access'] = FALSE;
      $form['actions']['submit']['#access'] = FALSE;
      $link = \Drupal::l(t('Admin Settings Page'), new url('simple_node_importer.config_form'));
      $message = t('Kindly contact Admin to select the entity types and content types which are allowed to be imported, for this you can visit:@link', [
        "@link" => $link,
      ]);
      drupal_set_message($message);
    }
    $form['field_upload_csv']['#upload_validators']['file_validate_extensions'] = [
      'csv',
    ];
    $form['actions']['submit']['#submit'][] = "simple_node_importer_form_submit_redirect_handler";
  }
  if ($form_id == 'node_simple_node_edit_form') {
    drupal_set_message(t('OOPs! Sorry you are not allowed to resubmit this node again. Please start with new import.'));
    $form['field_select_content_type']['#disabled'] = TRUE;
    $form['field_select_entity_type']['#disabled'] = TRUE;
    $form['field_upload_csv']['#disabled'] = TRUE;
    $form['actions']['submit']['#disabled'] = TRUE;
  }
  if ($form_id == 'simple_node_importer_config_form') {
    $form['#submit'][] = 'simple_node_importer_config_form_submit';
  }
  $refKey = \Drupal::request()
    ->get('refkey');
  $bundleName = \Drupal::request()
    ->get('bundle');
  if ($bundleName != 'user') {
    $bundleFormId = 'node_' . $bundleName . '_form';
  }
  else {
    $bundleFormId = 'user_register_form';
  }
  $excludeArr = [
    'type',
    'reference',
    'name',
    'mail',
    'roles',
    'status',
  ];
  if ($form_id == $bundleFormId && !empty($refKey)) {
    $failedRow = NodeImportController::getFailedRowsInRc(NULL, $refKey);
    foreach ($failedRow as $rowVal) {
      $sni_nid = $rowVal['sni_nid'];
      unset($rowVal['sni_nid']);
      $entity_type = \Drupal::request()
        ->get('entity_type');
      foreach ($rowVal as $fieldKey => $fieldVal) {
        if (!in_array($fieldKey, $excludeArr)) {
          $fieldWidget = $form[$fieldKey]['widget'];
          $fieldSetVal = GetServices::generateFieldSetValue($fieldKey, $fieldVal, $fieldWidget, $entity_type, $bundleName);
          if (isset($fieldSetVal['bugField']) && !empty($fieldSetVal['bugField'])) {
            foreach ($fieldSetVal['bugField'] as $err) {
              $msg = t("Please check the value or format of the field: @bugField", [
                '@bugField' => $err,
              ]);
              \Drupal::messenger()
                ->addError($msg);
            }
            $form[$fieldKey] = $fieldSetVal['fieldWidget'];
          }
          else {
            $form[$fieldKey] = $fieldSetVal;
          }
        }
        else {
          if ($fieldKey == 'name' && !empty($fieldVal)) {
            $user = user_load_by_name($fieldVal);
            if ($user) {
              $msg = t("User already exists with username: @bugField", [
                '@bugField' => $fieldKey,
              ]);
              \Drupal::messenger()
                ->addError($msg);
            }
          }
          elseif ($fieldKey == 'mail' && !empty($fieldVal)) {
            $user = user_load_by_mail($fieldVal);
            if ($user) {
              $msg = t("User already exists with email: @bugField", [
                '@bugField' => $fieldKey,
              ]);
              \Drupal::messenger()
                ->addError($msg);
            }
          }
          if (!in_array($fieldKey, [
            'type',
            'status',
            'reference',
          ])) {
            $fieldWidget = $form['account'][$fieldKey];
            $fieldSetVal = GetServices::generateFieldSetValue($fieldKey, $fieldVal, $fieldWidget, $entity_type, $bundleName);
            if (isset($fieldSetVal['bugField']) && !empty($fieldSetVal['bugField'])) {
              foreach ($fieldSetVal['bugField'] as $err) {
                $msg = t("Please check the value or format of the field: @bugField", [
                  '@bugField' => $err,
                ]);
                \Drupal::messenger()
                  ->addError($msg);
              }
              $form['account'][$fieldKey] = $fieldSetVal['fieldWidget'];
            }
            else {
              $form['account'][$fieldKey] = $fieldSetVal;
            }
          }
          elseif ($fieldKey == 'status') {
            $form[$fieldKey]['widget']['value']['#default_value'] = $fieldVal == 1 || $fieldVal == TRUE ? TRUE : FALSE;
          }
        }
      }
    }
    $form['refkey'] = [
      '#type' => 'hidden',
      '#value' => $refKey,
    ];
    $form['sni_nid'] = [
      '#type' => 'hidden',
      '#value' => $sni_nid,
    ];
    $form['actions']['submit']['#submit'][] = 'simple_node_importer_update_rc_table_form_submit';
  }
}