Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.4 kB
2
Indexable
Never
custom_csv_user_checker.info.yml
------------------------------------------------
name: 'Custom CSV User Checker'
type: module
description: 'Processes a CSV file to check user account presence.'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
  - drupal:user


custom_csv_user_checker.module
-----------------------------------------------
<?php

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form().
 */
function custom_csv_user_checker_form($form, FormStateInterface $form_state) {
  $form['csv_upload'] = [
    '#type' => 'file',
    '#title' => t('Upload CSV File'),
    '#description' => t('Upload a CSV file containing email addresses.'),
    '#upload_validators' => [
      'file_validate_extensions' => ['csv'],
    ],
  ];

  $form['submit'] = [
    '#type' => 'submit',
    '#value' => t('Process CSV'),
  ];

  return $form;
}

/**
 * Form submission handler.
 */
function custom_csv_user_checker_form_submit($form, FormStateInterface $form_state) {
  $csv_file = $form_state->getValue('csv_upload')[0];
  $file_path = \Drupal::service('file_system')->realpath($csv_file->getFileUri());
  $csv_data = array_map('str_getcsv', file($file_path));

  $header = ['Email', 'Username', 'Account Status'];
  $rows = [];

  foreach ($csv_data as $csv_row) {
    $email = $csv_row[0];
    $account = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties(['mail' => $email]);

    if (!empty($account)) {
      $account = reset($account);
      $username = $account->getAccountName();
      $status = 'Account Present';
    } else {
      $username = '';
      $status = 'Account Not Present';
    }

    $rows[] = [$email, $username, $status];
  }

  $form_state->set('results', [
    '#theme' => 'table',
    '#header' => $header,
    '#rows' => $rows,
  ]);
}

/**
 * Implements hook_theme().
 */
function custom_csv_user_checker_theme($existing, $type, $theme, $path) {
  return [
    'csv_user_checker_results' => [
      'variables' => ['results' => []],
    ],
  ];
}


custom_csv_user_checker.routing.yml
----------------------------------------------------
custom_csv_user_checker.form:
  path: '/custom-csv-user-checker'
  defaults:
    _form: '\Drupal\custom_csv_user_checker\Form\CustomCsvUserCheckerForm'
    _title: 'CSV User Checker'
  requirements:
    _permission: 'access content'