You are here

public static function ExportUser::exportUserOperation in Open Social 8.2

Same name and namespace in other branches
  1. 8 modules/social_features/social_user_export/src/ExportUser.php \Drupal\social_user_export\ExportUser::exportUserOperation()
  2. 8.3 modules/social_features/social_user_export/src/ExportUser.php \Drupal\social_user_export\ExportUser::exportUserOperation()
  3. 8.4 modules/social_features/social_user_export/src/ExportUser.php \Drupal\social_user_export\ExportUser::exportUserOperation()

Callback of one operation.

Parameters

\Drupal\user\UserInterface $entity: UserInterface entity.

array $context: Context of the operation.

1 call to ExportUser::exportUserOperation()
ExportUser::exportUsersAllOperation in modules/social_features/social_user_export/src/ExportUser.php
Callback of massive operations.

File

modules/social_features/social_user_export/src/ExportUser.php, line 27

Class

ExportUser
Class ExportUser.

Namespace

Drupal\social_user_export

Code

public static function exportUserOperation(UserInterface $entity, array &$context) {
  $moduleHandler = \Drupal::service('module_handler');
  if (empty($context['results']['file_path'])) {
    $context['results']['file_path'] = self::getFileTemporaryPath();
    $csv = Writer::createFromPath($context['results']['file_path'], 'w');
    $csv
      ->setDelimiter(',');
    $csv
      ->setEnclosure('"');
    $csv
      ->setEscape('\\');

    // Append header.
    $headers = [
      t('ID'),
      t('UUID'),
      t('First name'),
      t('Last name'),
      t('Username'),
      t('Display name'),
      t('Email'),
      t('Last login'),
      t('Last access'),
      t('Registration date'),
      t('Status'),
      t('Roles'),
      t('Posts created'),
      t('Comments created'),
      t('Topics created'),
      t('Events enrollments'),
      t('Events created'),
      t('Groups created'),
      t('Number of Likes'),
    ];

    // Add number of private messages row header if the module is turned on.
    if ($moduleHandler
      ->moduleExists('social_private_message')) {
      $headers[] = t('Number of Private Messages');
    }
    $csv
      ->insertOne($headers);
  }
  else {
    $csv = Writer::createFromPath($context['results']['file_path'], 'a');
  }

  // Add formatter.
  $csv
    ->addFormatter([
    new CsvEncoder(),
    'formatRow',
  ]);
  $roles = $entity
    ->getRoles();
  $status = $entity
    ->get('status')
    ->getValue();

  // Format last login time.
  if ($last_login_time = $entity
    ->getLastLoginTime()) {
    $last_login = \Drupal::service('date.formatter')
      ->format($last_login_time, 'custom', 'Y/m/d - H:i');
  }
  else {
    $last_login = t('never');
  }

  // Format last access time.
  if ($last_access_time = $entity
    ->getLastAccessedTime()) {
    $last_access = \Drupal::service('date.formatter')
      ->format($last_access_time, 'custom', 'Y/m/d - H:i');
  }
  else {
    $last_access = t('never');
  }

  // Add row.
  $row = [
    $entity
      ->id(),
    $entity
      ->uuid(),
    social_user_export_first_name($entity),
    social_user_export_last_name($entity),
    $entity
      ->getAccountName(),
    $entity
      ->getDisplayName(),
    $entity
      ->getEmail(),
    $last_login,
    $last_access,
    \Drupal::service('date.formatter')
      ->format($entity
      ->getCreatedTime(), 'custom', 'Y/m/d - H:i'),
    !empty($status[0]['value']) ? t('Active') : t('Blocked'),
    implode(', ', $roles),
    social_user_export_posts_count($entity),
    social_user_export_comments_count($entity),
    social_user_export_nodes_count($entity, 'topic'),
    social_user_export_events_enrollments_count($entity),
    social_user_export_nodes_count($entity, 'event'),
    social_user_export_groups_count($entity),
    social_user_export_likes_count($entity),
  ];

  // Add number of private messages if the module is turned on.
  if ($moduleHandler
    ->moduleExists('social_private_message')) {
    $row[] = social_user_export_number_of_private_messages($entity);
  }
  $csv
    ->insertOne($row);
  $context['message'] = t('Exporting: @name', [
    '@name' => $entity
      ->getAccountName(),
  ]);
}