function AccountCancellation::cancelMethods

Same name and namespace in other branches
  1. main core/modules/user/src/AccountCancellation.php \Drupal\user\AccountCancellation::cancelMethods()

Helper function to return available account cancellation methods.

See documentation of hook_user_cancel_methods_alter().

Return value

array An array containing all account cancellation methods as form elements.

See also

hook_user_cancel_methods_alter()

user_admin_settings()

File

core/modules/user/src/AccountCancellation.php, line 186

Class

AccountCancellation
User account cancellation service.

Namespace

Drupal\user

Code

public function cancelMethods() : array {
  $userSettings = ($this->configFactoryClosure)()
    ->get('user.settings');
  $anonymous_name = $userSettings->get('anonymous');
  $methods = [
    'user_cancel_block' => [
      'title' => $this->t('Disable the account and keep its content.'),
      'description' => $this->t('Your account will be blocked and you will no longer be able to log in. All of your content will remain attributed to your username.'),
    ],
    'user_cancel_block_unpublish' => [
      'title' => $this->t('Disable the account and unpublish its content.'),
      'description' => $this->t('Your account will be blocked and you will no longer be able to log in. All of your content will be hidden from everyone but administrators.'),
    ],
    'user_cancel_reassign' => [
      'title' => $this->t('Delete the account and make its content belong to the %anonymous-name user. This action cannot be undone.', [
        '%anonymous-name' => $anonymous_name,
      ]),
      'description' => $this->t('Your account will be removed and all account information deleted. All of your content will be assigned to the %anonymous-name user.', [
        '%anonymous-name' => $anonymous_name,
      ]),
    ],
    'user_cancel_delete' => [
      'title' => $this->t('Delete the account and its content. This action cannot be undone.'),
      'description' => $this->t('Your account will be removed and all account information deleted. All of your content will also be deleted.'),
      'access' => $this->currentUser
        ->hasPermission('administer users'),
    ],
  ];
  // Allow modules to customize account cancellation methods.
  $this->moduleHandler
    ->alter('user_cancel_methods', $methods);
  // Turn all methods into real form elements.
  $form = [
    '#options' => [],
    '#default_value' => $userSettings->get('cancel_method'),
  ];
  foreach ($methods as $name => $method) {
    $form['#options'][$name] = $method['title'];
    // Add the description for the confirmation form. This description is
    // never shown for the cancel method option, only on the confirmation
    // form. Therefore, we use a custom #confirm_description property.
    if (isset($method['description'])) {
      $form[$name]['#confirm_description'] = $method['description'];
    }
    if (isset($method['access'])) {
      $form[$name]['#access'] = $method['access'];
    }
  }
  return $form;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.