Untitled
plain_text
a month ago
2.2 kB
1
Indexable
Never
<?php namespace Drupal\custom_csv_user_checker\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Database\Database; use Drupal\file\Entity\File; use Drupal\Core\File\FileSystemInterface; class CustomCsvUserCheckerForm extends FormBase { public function getFormId() { return 'custom_csv_user_checker_form'; } public function buildForm(array $form, FormStateInterface $form_state) { $form['csv_upload'] = [ '#type' => 'file', '#title' => $this->t('Upload CSV File'), '#description' => $this->t('Upload a CSV file containing email addresses.'), '#upload_validators' => [ 'file_validate_extensions' => ['csv'], ], ]; $form['submit'] = [ '#type' => 'submit', '#value' => $this->t('Process CSV'), ]; return $form; } public function submitForm(array &$form, FormStateInterface $form_state) { $csv_file_fid = $form_state->getValue('csv_upload'); if (!empty($csv_file_fid)) { $file = File::load($csv_file_fid[0]); if ($file instanceof File) { $file_path = $file->getFileUri(); $csv_data = array_map('str_getcsv', file($file_path)); $header = [$this->t('Email'), $this->t('Username'), $this->t('Account Status')]; $rows = []; foreach ($csv_data as $csv_row) { $email = $csv_row[0]; $query = Database::getConnection()->select('users_field_data', 'u'); $query->fields('u', ['uid', 'name']); $query->condition('u.mail', $email); $user = $query->execute()->fetchAssoc(); if (!empty($user)) { // User found $username = $user['name']; $status = $this->t('Account Present'); } else { // User not found $username = ''; $status = $this->t('Account Not Present'); } $rows[] = [$email, $username, $status]; } $form_state->set('results', [ '#theme' => 'table', '#header' => $header, '#rows' => $rows, ]); } } } }