summaryrefslogtreecommitdiff
path: root/modules/user
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-11-14 20:42:45 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-11-14 20:42:45 +0000
commit8dd7376d5a15f2485fdd83c8db402a244314e30b (patch)
tree1b6241df8c5eeb5692e2345144fad8ee435de941 /modules/user
parent8049f94756021402a34ad3f2eb54fee5b19ae39b (diff)
downloadbrdo-8dd7376d5a15f2485fdd83c8db402a244314e30b.tar.gz
brdo-8dd7376d5a15f2485fdd83c8db402a244314e30b.tar.bz2
#923826 by catch, carlos8f, moshe weitzman: Fixed entity delete operations should use transactions.
Diffstat (limited to 'modules/user')
-rw-r--r--modules/user/user.module39
1 files changed, 23 insertions, 16 deletions
diff --git a/modules/user/user.module b/modules/user/user.module
index a9f7462da..d7a3be123 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2361,23 +2361,30 @@ function user_delete_multiple(array $uids) {
if (!empty($uids)) {
$accounts = user_load_multiple($uids, array());
- foreach ($accounts as $uid => $account) {
- module_invoke_all('user_delete', $account);
- module_invoke_all('entity_delete', $account, 'user');
- field_attach_delete('user', $account);
- drupal_session_destroy_uid($account->uid);
- }
-
- db_delete('users')
- ->condition('uid', $uids, 'IN')
- ->execute();
- db_delete('users_roles')
- ->condition('uid', $uids, 'IN')
- ->execute();
- db_delete('authmap')
- ->condition('uid', $uids, 'IN')
- ->execute();
+ $transaction = db_transaction();
+ try {
+ foreach ($accounts as $uid => $account) {
+ module_invoke_all('user_delete', $account);
+ module_invoke_all('entity_delete', $account, 'user');
+ field_attach_delete('user', $account);
+ drupal_session_destroy_uid($account->uid);
+ }
+ db_delete('users')
+ ->condition('uid', $uids, 'IN')
+ ->execute();
+ db_delete('users_roles')
+ ->condition('uid', $uids, 'IN')
+ ->execute();
+ db_delete('authmap')
+ ->condition('uid', $uids, 'IN')
+ ->execute();
+ }
+ catch (Exception $e) {
+ $transaction->rollback();
+ watchdog_exception('user', $e);
+ throw $e;
+ }
entity_get_controller('user')->resetCache();
}
}