Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0 / 0 |
|
100.00% |
0 / 0 |
CRAP | |
0.00% |
0 / 46 |
|
hook_user_cancel | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 21 |
|||
hook_user_cancel_methods_alter | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 9 |
|||
hook_user_format_name_alter | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 4 |
|||
hook_user_login | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 5 |
|||
hook_user_logout | |
0.00% |
0 / 1 |
0 | |
0.00% |
0 / 7 |
<?php | |
/** | |
* @file | |
* Hooks provided by the User module. | |
*/ | |
/** | |
* @addtogroup hooks | |
* @{ | |
*/ | |
/** | |
* Act on user account cancellations. | |
* | |
* This hook is invoked from user_cancel() before a user account is canceled. | |
* Depending on the account cancellation method, the module should either do | |
* nothing, unpublish content, or anonymize content. See user_cancel_methods() | |
* for the list of default account cancellation methods provided by User module. | |
* Modules may add further methods via hook_user_cancel_methods_alter(). | |
* | |
* This hook is NOT invoked for the 'user_cancel_delete' account cancellation | |
* method. To react to that method, implement hook_ENTITY_TYPE_predelete() or | |
* hook_ENTITY_TYPE_delete() for user entities instead. | |
* | |
* Expensive operations should be added to the global account cancellation batch | |
* by using batch_set(). | |
* | |
* @param array $edit | |
* The array of form values submitted by the user. | |
* @param \Drupal\Core\Session\AccountInterface $account | |
* The user object on which the operation is being performed. | |
* @param string $method | |
* The account cancellation method. | |
* | |
* @see user_cancel_methods() | |
* @see hook_user_cancel_methods_alter() | |
*/ | |
function hook_user_cancel($edit, $account, $method) { | |
switch ($method) { | |
case 'user_cancel_block_unpublish': | |
// Unpublish nodes (current revisions). | |
module_load_include('inc', 'node', 'node.admin'); | |
$nodes = \Drupal::entityQuery('node') | |
->condition('uid', $account->id()) | |
->execute(); | |
node_mass_update($nodes, array('status' => 0), NULL, TRUE); | |
break; | |
case 'user_cancel_reassign': | |
// Anonymize nodes (current revisions). | |
module_load_include('inc', 'node', 'node.admin'); | |
$nodes = \Drupal::entityQuery('node') | |
->condition('uid', $account->id()) | |
->execute(); | |
node_mass_update($nodes, array('uid' => 0), NULL, TRUE); | |
// Anonymize old revisions. | |
db_update('node_field_revision') | |
->fields(array('uid' => 0)) | |
->condition('uid', $account->id()) | |
->execute(); | |
break; | |
} | |
} | |
/** | |
* Modify account cancellation methods. | |
* | |
* By implementing this hook, modules are able to add, customize, or remove | |
* account cancellation methods. All defined methods are turned into radio | |
* button form elements by user_cancel_methods() after this hook is invoked. | |
* The following properties can be defined for each method: | |
* - title: The radio button's title. | |
* - description: (optional) A description to display on the confirmation form | |
* if the user is not allowed to select the account cancellation method. The | |
* description is NOT used for the radio button, but instead should provide | |
* additional explanation to the user seeking to cancel their account. | |
* - access: (optional) A boolean value indicating whether the user can access | |
* a method. If 'access' is defined, the method cannot be configured as | |
* default method. | |
* | |
* @param array $methods | |
* An array containing user account cancellation methods, keyed by method id. | |
* | |
* @see user_cancel_methods() | |
* @see \Drupal\user\Form\UserCancelForm | |
*/ | |
function hook_user_cancel_methods_alter(&$methods) { | |
$account = \Drupal::currentUser(); | |
// Limit access to disable account and unpublish content method. | |
$methods['user_cancel_block_unpublish']['access'] = $account->hasPermission('administer site configuration'); | |
// Remove the content re-assigning method. | |
unset($methods['user_cancel_reassign']); | |
// Add a custom zero-out method. | |
$methods['mymodule_zero_out'] = array( | |
'title' => t('Delete the account and remove all content.'), | |
'description' => t('All your content will be replaced by empty strings.'), | |
// access should be used for administrative methods only. | |
'access' => $account->hasPermission('access zero-out account cancellation method'), | |
); | |
} | |
/** | |
* Alter the username that is displayed for a user. | |
* | |
* Called by $account->getDisplayName() to allow modules to alter the username | |
* that is displayed. Can be used to ensure user privacy in situations where | |
* $account->name is too revealing. | |
* | |
* @param string $name | |
* The string that $account->getDisplayName() will return. | |
* | |
* @param $account | |
* The account object passed to user_format_name(). | |
* | |
* @see $account->getDisplayName() | |
*/ | |
function hook_user_format_name_alter(&$name, $account) { | |
// Display the user's uid instead of name. | |
if ($account->id()) { | |
$name = t('User @uid', array('@uid' => $account->id())); | |
} | |
} | |
/** | |
* The user just logged in. | |
* | |
* @param object $account | |
* The user object on which the operation was just performed. | |
*/ | |
function hook_user_login($account) { | |
$config = \Drupal::config('system.date'); | |
// If the user has a NULL time zone, notify them to set a time zone. | |
if (!$account->getTimezone() && $config->get('timezone.user.configurable') && $config->get('timezone.user.warn')) { | |
drupal_set_message(t('Configure your <a href=":user-edit">account time zone setting</a>.', array(':user-edit' => $account->url('edit-form', array('query' => \Drupal::destination()->getAsArray(), 'fragment' => 'edit-timezone'))))); | |
} | |
} | |
/** | |
* The user just logged out. | |
* | |
* @param $account | |
* The user object on which the operation was just performed. | |
*/ | |
function hook_user_logout($account) { | |
db_insert('logouts') | |
->fields(array( | |
'uid' => $account->id(), | |
'time' => time(), | |
)) | |
->execute(); | |
} | |
/** | |
* @} End of "addtogroup hooks". | |
*/ |