You are here

public static function ExportUser::exportUserOperation in Open Social 8.4

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.2 modules/social_features/social_user_export/src/ExportUser.php \Drupal\social_user_export\ExportUser::exportUserOperation()
  3. 8.3 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) {
  $type = \Drupal::service('plugin.manager.user_export_plugin');
  $plugin_definitions = $type
    ->getDefinitions();

  // Check if headers exists.
  if (empty($context['results']['headers'])) {
    $headers = [];

    /** @var \Drupal\social_user_export\Plugin\UserExportPluginBase $instance */
    foreach ($plugin_definitions as $plugin_id => $plugin_definition) {
      $instance = $type
        ->createInstance($plugin_id);
      $headers[] = $instance
        ->getHeader();
    }
    $context['results']['headers'] = $headers;
  }

  // Create the file if applicable.
  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('\\');
    $csv
      ->insertOne($context['results']['headers']);
  }
  else {
    $csv = Writer::createFromPath($context['results']['file_path'], 'a');
  }

  // Add formatter.
  $csv
    ->addFormatter([
    new CsvEncoder(),
    'formatRow',
  ]);
  $row = [];

  /** @var \Drupal\social_user_export\Plugin\UserExportPluginBase $instance */
  foreach ($plugin_definitions as $plugin_id => $plugin_definition) {
    $instance = $type
      ->createInstance($plugin_id);
    $row[] = $instance
      ->getValue($entity);
  }
  $csv
    ->insertOne($row);
  $context['message'] = t('Exporting: @name', [
    '@name' => $entity
      ->getAccountName(),
  ]);
}