function mass_pwreset_batch_process in Mass Password Reset 8
Same name and namespace in other branches
- 7 mass_pwreset.batch.inc \mass_pwreset_batch_process()
 - 2.x mass_pwreset.batch.inc \mass_pwreset_batch_process()
 
Batch process callback.
Loads user object, resets password, and optionally sends notify email.
1 string reference to 'mass_pwreset_batch_process'
- mass_pwreset_multiple_reset in ./
mass_pwreset.module  - Establish batch operation for resetting passwords.
 
File
- ./
mass_pwreset.batch.inc, line 16  - Contains batch process functions for resetting passwords.
 
Code
function mass_pwreset_batch_process($data, &$context) {
  // Initiate count values for batch iteration.
  if (!isset($context['sandbox']['progress'])) {
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['current_row'] = 0;
    $context['sandbox']['max'] = count($data['uids']);
  }
  // Establish index for loading user objects.
  $i = $context['sandbox']['current_row'];
  // Reset user password.
  if (isset($data['uids'][$i])) {
    $user = User::load($data['uids'][$i]);
    $user
      ->setPassword(user_password(40));
    $user
      ->save();
    // Update status message.
    $context['message'] = t('Processing uid: @uid', [
      '@uid' => $user
        ->id(),
    ]);
    $context['results']['passwords_reset'][] = t('User password reset');
    // Send password reset email and log event.
    if ($data['notify_active_users'] == 1) {
      // Set batch message.
      $email_message = t('Password reset email sent to uid: @uid', [
        '@uid' => $user
          ->id(),
      ]);
      $context['message'] = $email_message;
      // Notify active users.
      if (!$user
        ->isBlocked()) {
        _user_mail_notify('password_reset', $user);
        \Drupal::logger('mass_pwreset')
          ->notice($email_message);
      }
      // Notify blocked users if applicable.
      if ($data['notify_blocked_users'] == 1 && $user
        ->isBlocked()) {
        _user_mail_notify('password_reset', $user);
        \Drupal::logger('mass_pwreset')
          ->notice($email_message);
      }
    }
    // Log password reset for this uid.
    $message = t('Password reset for uid: @uid', [
      '@uid' => $user
        ->id(),
    ]);
    \Drupal::logger('mass_pwreset')
      ->notice($message);
  }
  // Update batch progress information.
  $context['sandbox']['progress'] += 1;
  $context['sandbox']['current_row'] += 1;
  // Inform the batch engine of estimated completion level reached.
  if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
    $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
  }
  // Save roles in results for finished logging.
  $context['results']['roles'] = $data['roles'];
}