--- /dev/null
+/**
+ * Implements hook_user_cancel().
+ */
+function {{ machine_name }}_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, ['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, ['uid' => 0], NULL, TRUE);
+ // Anonymize old revisions.
+ db_update('node_field_revision')
+ ->fields(['uid' => 0])
+ ->condition('uid', $account->id())
+ ->execute();
+ break;
+ }
+}