You are here

function user_delete_cancel_confirm in User Delete 6.2

Menu callback; Cancel a user account via e-mail confirmation link.

1 string reference to 'user_delete_cancel_confirm'
user_delete_menu in ./user_delete.module
Implementation of hook_menu().

File

./user_delete.module, line 407
Provide account cancellation methods and API to provide the same functionalty as Drupal 7 for cancelling accounts.

Code

function user_delete_cancel_confirm($account, $timestamp = 0, $hashed_pass = '') {

  // Time out in seconds until cancel URL expires; 24 hours = 86400 seconds.
  $timeout = 86400;
  $current = time();

  // Is it unserialized already?
  $account->data = is_array($account->data) ? $account->data : unserialize($account->data);

  // Basic validation of arguments.
  if (isset($account->data['user_cancel_method']) && !empty($timestamp) && !empty($hashed_pass)) {

    // Validate expiration and hashed password/login.
    if ($timestamp <= $current && $current - $timestamp < $timeout && $account->uid && $timestamp >= $account->login && $hashed_pass == user_pass_rehash($account->pass, $timestamp, $account->login)) {
      $edit = array(
        'user_cancel_notify' => isset($account->data['user_cancel_notify']) ? $account->data['user_cancel_notify'] : variable_get('user_mail_status_canceled_notify', FALSE),
      );
      user_delete_cancel($edit, $account->uid, $account->data['user_cancel_method']);

      // Since user_delete_cancel() is not invoked via Form API, batch processing needs
      // to be invoked manually and should redirect to the front page after
      // completion.
      batch_process('');
    }
    else {
      drupal_set_message(t('You have tried to use an account cancellation link that has expired. Please request a new one using the form below.'));
      drupal_goto("user/{$account->uid}/delete");
    }
  }
  drupal_access_denied();
}