FOSSology  4.4.0
Open Source License Compliance by Open Source Software
user-del-helper.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2008-2013 Hewlett-Packard Development Company, L.P.
4  SPDX-FileCopyrightText: © 2017-2018 Siemens AG
5 
6  SPDX-License-Identifier: GPL-2.0-only
7 */
8 
9 require_once __DIR__ . "/../../lib/php/common-db.php";
10 require_once __DIR__ . "/../../lib/php/common-perms.php";
11 
18 function deleteUser($UserId, $dbManager)
19 {
20  global $PG_CONN;
21 
22  // Prepare all statements
23  $userSelectStatement = __METHOD__ . ".getUser";
24  $dbManager->prepare($userSelectStatement,
25  "SELECT * FROM users WHERE user_pk = $1 LIMIT 1;");
26 
27  $selectGroupStatement = __METHOD__ . ".getGroup";
28  $dbManager->prepare($selectGroupStatement,
29  "SELECT group_pk FROM groups WHERE group_name = $1 LIMIT 1;");
30 
31  $deleteGroupUserStatement = __METHOD__ . ".deleteGroupUser";
32  $dbManager->prepare($deleteGroupUserStatement,
33  "DELETE FROM group_user_member WHERE user_fk = $1;");
34 
35  $deleteUserStatement = __METHOD__ . ".deleteUser";
36  $dbManager->prepare($deleteUserStatement,
37  "DELETE FROM users WHERE user_pk = $1;");
38 
39  $userCheckStatement = __METHOD__ . ".getUserbyName";
40  $dbManager->prepare($userCheckStatement,
41  "SELECT count(*) AS cnt FROM users WHERE user_name = $1 LIMIT 1;");
42 
43  /* See if the user already exists */
44  $result = $dbManager->execute($userSelectStatement, [$UserId]);
45  $row = $dbManager->fetchArray($result);
46  $dbManager->freeResult($result);
47  if (empty($row['user_name'])) {
48  $text = _("User does not exist.");
49  return ($text);
50  }
51 
52  /* Delete the users group
53  * First look up the users group_pk
54  */
55  $result = $dbManager->execute($selectGroupStatement, [$row['user_name']]);
56  $GroupRow = $dbManager->fetchArray($result);
57  $dbManager->freeResult($result);
58 
59  /* Delete all the group user members for this user_pk */
60  $dbManager->freeResult($dbManager->execute($deleteGroupUserStatement, [$UserId]));
61 
62  /* Delete the user */
63  $dbManager->freeResult($dbManager->execute($deleteUserStatement, [$UserId]));
64 
65  /* Now delete their group */
66  DeleteGroup($GroupRow['group_pk'], $PG_CONN);
67 
68  /* Make sure it was deleted */
69  $result = $dbManager->execute($userCheckStatement, [$UserId]);
70  $rowEmpty = empty($dbManager->fetchArray($result)['cnt']);
71  $dbManager->freeResult($result);
72  if (! $rowEmpty) {
73  $text = _("Failed to delete user.");
74  return ($text);
75  }
76 
77  return(null);
78 } // Delete()
DeleteGroup($group_pk)
Delete a group.
foreach($Options as $Option=> $OptVal) if(0==$reference_flag &&0==$nomos_flag) $PG_CONN