From 27aa69c9de321e55917b01731a9f778398dafadb Mon Sep 17 00:00:00 2001 From: Robert Anderson <randerson@lbsd.net> Date: Mon, 22 Jun 2009 07:38:28 +0000 Subject: [PATCH] Remove records referencing main tables --- webgui/include/ajax/functions/AdminGroups.php | 24 +++++++++++++-- webgui/include/ajax/functions/AdminRealms.php | 18 ++++++++++-- webgui/include/ajax/functions/AdminUsers.php | 29 +++++++++++++++++-- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/webgui/include/ajax/functions/AdminGroups.php b/webgui/include/ajax/functions/AdminGroups.php index 73e43a16..2885737b 100644 --- a/webgui/include/ajax/functions/AdminGroups.php +++ b/webgui/include/ajax/functions/AdminGroups.php @@ -69,9 +69,29 @@ function getAdminGroup($params) { function removeAdminGroup($params) { global $db; - $res = DBDo("DELETE FROM groups WHERE ID = ?",array($params[0])); - if (!is_numeric($res)) { + # Begin transaction + DBBegin(); + + # Unlink users from group + $res = DBDo("DELETE FROM users_to_groups WHERE GroupID = ?",array($params[0])); + + # Delete group attribtues + if ($res !== FALSE) { + $res = DBDo("DELETE FROM group_attributes WHERE GroupID = ?",array($params[0])); + } + + # Delete group + if ($res !== FALSE) { + $res = DBDo("DELETE FROM groups WHERE ID = ?",array($params[0])); + } + + # Commit and return if successful + if ($res !== FALSE) { + DBCommit(); return $res; + # Else rollback database + } else { + DBRollback(); } return NULL; diff --git a/webgui/include/ajax/functions/AdminRealms.php b/webgui/include/ajax/functions/AdminRealms.php index ab57ce71..a457ca88 100644 --- a/webgui/include/ajax/functions/AdminRealms.php +++ b/webgui/include/ajax/functions/AdminRealms.php @@ -63,9 +63,23 @@ function getAdminRealm($params) { function removeAdminRealm($params) { global $db; - $res = DBDo("DELETE FROM realms WHERE ID = ?",array($params[0])); - if (!is_numeric($res)) { + # Begin transaction + DBBegin(); + + # Delete user attribtues + $res = DBDo("DELETE FROM realm_attributes WHERE RealmID = ?",array($params[0])); + + if ($res !== FALSE) { + $res = DBDo("DELETE FROM realms WHERE ID = ?",array($params[0])); + } + + # Commit and return if successful + if ($res !== FALSE) { + DBCommit(); return $res; + # Else rollback database + } else { + DBRollback(); } return NULL; diff --git a/webgui/include/ajax/functions/AdminUsers.php b/webgui/include/ajax/functions/AdminUsers.php index ce6bf56c..43b3dc51 100644 --- a/webgui/include/ajax/functions/AdminUsers.php +++ b/webgui/include/ajax/functions/AdminUsers.php @@ -63,9 +63,34 @@ function getAdminUser($params) { function removeAdminUser($params) { global $db; - $res = DBDo("DELETE FROM users WHERE ID = ?",array($params[0])); - if (!is_numeric($res)) { + # Begin transaction + DBBegin(); + + # Delete user information, if any + $res = DBDo("DELETE FROM wisp_userdata WHERE UserID = ?",array($params[0])); + + # Delete user attribtues + if ($res !== FALSE) { + $res = DBDo("DELETE FROM user_attributes WHERE UserID = ?",array($params[0])); + } + + # Remove user from groups + if ($res !== FALSE) { + $res = DBDo("DELETE FROM users_to_groups WHERE UserID = ?",array($params[0])); + } + + # Delete user + if ($res !== FALSE) { + $res = DBDo("DELETE FROM users WHERE ID = ?",array($params[0])); + } + + # Commit and return if successful + if ($res !== FALSE) { + DBCommit(); return $res; + # Else rollback database + } else { + DBRollback(); } return NULL; -- GitLab