diff --git a/superadm/eve_acces.php b/superadm/eve_acces.php index 613b810..0677aa7 100644 --- a/superadm/eve_acces.php +++ b/superadm/eve_acces.php @@ -43,6 +43,19 @@ if (isset($_GET['action'])) { $strQ = ($arrResult['state'] === 'ok') ? 'ok=' . urlencode($arrResult['message']) : 'err=' . urlencode($arrResult['message']); header('Location: eve_acces.php?p=kits&' . $strQ); exit; + + case 'delete': + if ($intRoleId <= 0) { + header('Location: eve_acces.php?p=kits'); + exit; + } + $arrResult = fxEveAccesAdminDeleteRole($intRoleId); + if ($arrResult['state'] === 'ok') { + header('Location: eve_acces.php?p=kits&ok=' . urlencode($arrResult['message'])); + } else { + header('Location: eve_acces.php?p=kits&err=' . urlencode($arrResult['message'])); + } + exit; } } diff --git a/superadm/php/inc_fx_eve_acces_admin.php b/superadm/php/inc_fx_eve_acces_admin.php index 8a51231..5a06c63 100644 --- a/superadm/php/inc_fx_eve_acces_admin.php +++ b/superadm/php/inc_fx_eve_acces_admin.php @@ -169,6 +169,61 @@ function fxEveAccesAdminCountActiveAssignments($intRoleId) return intval($objDatabase->fxGetVar($sql)); } +function fxEveAccesAdminCountAllAssignments($intRoleId) +{ + global $objDatabase; + + $sql = "SELECT COUNT(*) FROM inscriptions_eve_acces + WHERE role_id = " . intval($intRoleId); + + return intval($objDatabase->fxGetVar($sql)); +} + +function fxEveAccesAdminCanDeleteRole($intRoleId) +{ + $row = fxEveAccesAdminGetRoleById($intRoleId); + if ($row === null) { + return array('can' => false, 'message' => 'Kit introuvable.'); + } + + if (intval($row['role_systeme']) === 1) { + return array('can' => false, 'message' => 'Un kit système ne peut pas être supprimé.'); + } + + $intActive = fxEveAccesAdminCountActiveAssignments($intRoleId); + if ($intActive > 0) { + return array( + 'can' => false, + 'message' => 'Ce kit est assigné à ' . $intActive . ' compte(s). Retirez les assignations avant de supprimer.', + ); + } + + if (fxEveAccesAdminCountAllAssignments($intRoleId) > 0) { + return array( + 'can' => false, + 'message' => 'Ce kit a déjà été assigné (historique). Suppression impossible.', + ); + } + + return array('can' => true, 'message' => ''); +} + +function fxEveAccesAdminDeleteRole($intRoleId) +{ + global $objDatabase; + + $arrCheck = fxEveAccesAdminCanDeleteRole($intRoleId); + if (!$arrCheck['can']) { + return array('state' => 'error', 'message' => $arrCheck['message']); + } + + $intRoleId = intval($intRoleId); + $objDatabase->fxQuery('DELETE FROM inscriptions_eve_role_permissions WHERE role_id = ' . $intRoleId); + $objDatabase->fxQuery('DELETE FROM inscriptions_eve_roles WHERE role_id = ' . $intRoleId); + + return array('state' => 'ok', 'message' => 'Kit supprimé.'); +} + function fxEveAccesAdminSaveRole($arrData, $arrPermKeys) { global $objDatabase; @@ -413,6 +468,7 @@ function fxEveAccesAdminRenderKitsList($strFlash = '') } else { foreach ($arrRoles as $row) { $strIcon = trim((string)($row['role_icone'] ?? '')); + $arrDelete = fxEveAccesAdminCanDeleteRole(intval($row['role_id'])); ?>