You are here

public function PurgeUsersQueueWorker::processItem in Auto Purge Users 8

Same name and namespace in other branches
  1. 8.3 src/Plugin/QueueWorker/PurgeUsersQueueWorker.php \Drupal\purge_users\Plugin\QueueWorker\PurgeUsersQueueWorker::processItem()
  2. 8.2 src/Plugin/QueueWorker/PurgeUsersQueueWorker.php \Drupal\purge_users\Plugin\QueueWorker\PurgeUsersQueueWorker::processItem()

Works on a single queue item.

Parameters

mixed $data: The data that was passed to \Drupal\Core\Queue\QueueInterface::createItem() when the item was queued.

Throws

\Drupal\Core\Queue\RequeueException Processing is not yet finished. This will allow another process to claim the item immediately.

\Exception A QueueWorker plugin may throw an exception to indicate there was a problem. The cron process will log the exception, and leave the item in the queue to be processed again later.

\Drupal\Core\Queue\SuspendQueueException More specifically, a SuspendQueueException should be thrown when a QueueWorker plugin is aware that the problem will affect all subsequent workers of its queue. For example, a callback that makes HTTP requests may find that the remote server is not responding. The cron process will behave as with a normal Exception, and in addition will not attempt to process further items from the current item's queue during the current cron run.

Overrides QueueWorkerInterface::processItem

See also

\Drupal\Core\Cron::processQueues()

File

src/Plugin/QueueWorker/PurgeUsersQueueWorker.php, line 24

Class

PurgeUsersQueueWorker
Processes cron queue.

Namespace

Drupal\purge_users\Plugin\QueueWorker

Code

public function processItem($account) {
  $name = $account
    ->get('name')->value;
  $mail = $account
    ->get('mail')->value;
  $uid = $account
    ->get('uid')->value;

  // Send a notification email.
  $config = \Drupal::config('purge_users.settings');
  $send_notification = $config
    ->get('send_email_notification');
  $method = $config
    ->get('purge_user_cancel_method');
  if ($method != 'user_cancel_delete') {

    // Allow modules to add further sets to this batch.
    $handler = \Drupal::moduleHandler();
    $handler
      ->invokeAll('user_cancel', array(
      array(),
      $account,
      $method,
    ));
  }
  if ($send_notification == 1) {
    purge_users_send_notification_email($account);
  }
  user_delete($uid);

  // Log purged user.
  $message = $this
    ->t('Purged user: %name < %mail >', array(
    '%name' => $name,
    '%mail' => $mail,
  ));
  \Drupal::logger('purge_users')
    ->notice($message);
}