hook_user_cancel
- Versions
- 7
hook_user_cancel($edit, $account, $method)
Act on user account cancellations.
The user account is being canceled. Depending on the account cancellation method, the module should either do nothing, unpublish content, anonymize content, or delete content and data belonging to the canceled user account.
Expensive operations should be added to the global batch with batch_set().
See also
@see hook_user_cancel_methods_alter()
See also
Parameters
$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.
Related topics
Code
modules/user/user.api.php, line 53
<?php
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;
case 'user_cancel_delete':
// Delete nodes (current revisions).
$nodes = db_select('node', 'n')
->fields('n', array('nid'))
->condition('uid', $account->uid)
->execute()
->fetchCol();
foreach ($nodes as $nid) {
node_delete($nid);
}
// Delete old revisions.
db_delete('node_revision')
->condition('uid', $account->uid)
->execute();
// Clean history.
db_delete('history')
->condition('uid', $account->uid)
->execute();
break;
}
}
?>Login or register to post comments 