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 on this method, implement hook_user_delete() instead.
Expensive operations should be added to the global account cancellation batch by using batch_set().
$edit: The array of form values submitted by the user.
$account: The user object on which the operation is being performed.
$method: The account cancellation method.
hook_user_cancel_methods_alter()
Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.
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 = db_select('node', 'n')
->fields('n', array(
'nid',
))
->condition('uid', $account->uid)
->execute()
->fetchCol();
node_mass_update($nodes, array(
'status' => 0,
));
break;
case 'user_cancel_reassign':
// Anonymize nodes (current revisions).
module_load_include('inc', 'node', 'node.admin');
$nodes = db_select('node', 'n')
->fields('n', array(
'nid',
))
->condition('uid', $account->uid)
->execute()
->fetchCol();
node_mass_update($nodes, array(
'uid' => 0,
));
// Anonymize old revisions.
db_update('node_revision')
->fields(array(
'uid' => 0,
))
->condition('uid', $account->uid)
->execute();
// Clean history.
db_delete('history')
->condition('uid', $account->uid)
->execute();
break;
}
}