return true;
}
- // markDeleted - marks user and its associated things as deleted.
- static function markDeleted($user_id) {
- $mdb2 = getConnection();
- global $user;
-
- // Preliminary checks. Only managers, co-managers, and admin can do this.
- if (!$user->canManageTeam() && !$user->isAdmin())
- return false;
-
- // Tho logic is different depending on who is doing the operation.
- // Co-manager and admin - mark user deleted.
- // Manager - mark user deleted. If manager is the only account in group, mark group items deleted.
-
- // admin part.
- if ($user->isAdmin()) {
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- } elseif ($user->isCoManager()) {
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id and group_id = ".$user->group_id;
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- } elseif ($user->isManager()) {
- $user_count = ttTeamHelper::getUserCount($user->group_id);
-
- // Marking deleted a manager with active users is not allowed.
- if (($user_id == $user->id) && ($user_count > 1))
- return false;
-
- if (1 == $user_count) {
- // Mark tasks deleted.
- if (!ttTeamHelper::markTasksDeleted($user->group_id))
- return false;
-
- // Mark projects deleted.
- $sql = "update tt_projects set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark clients deleted.
- $sql = "update tt_clients set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark custom fields deleted.
- $sql = "update tt_custom_fields set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark group deleted.
- $sql = "update tt_groups set status = NULL where id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
- }
-
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id and group_id = ".$user->group_id;
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
- }
-
- return true;
- }
-
// The delete function permanently deletes a user and all associated data.
static function delete($user_id) {
$mdb2 = getConnection();