prepare($req); $sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']); $sql->execute(); $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_alias_virtuels; } catch (\Exception $e) { die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage()); } } /** * Fonction listant tous les alias virtuels de la base. */ function listeTousAliasVirtuelsBdd($pdo) { try { $req = 'SELECT * FROM postfix_alias_virtuels'; $sql=$pdo->prepare($req); $sql->execute(); $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_alias_virtuels; } catch (\Exception $e) { die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage()); } } /** * Fonction d'ajout d'un alias virtuel. */ function ajoutAliasVirtuelsBdd($pdo,$nom_alias_virtuel,$choix_domaine_alias_virtuel) { try { // Insertion de l'alias virtuel entré par l'utilisateur et lié avec son adresse $req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:courriel,1)'; $sql=$pdo->prepare($req); $sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurBdd($pdo,$_SESSION['pseudo_utilisateur']).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100)); $sql->execute(); if ($sql->rowCount() == 1){ return true; } else { return false; } } catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="23000") { // Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postfix_alias_virtuels" est violée. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné dans la base header ("Location: /pages/gestion/administration.php?page=alias&erreur=3"); die(); } elseif ($code_retour[0]=="HY000") { // Code de retour envoyé par le pilote PDO SQLite lorsque la base de données n'est accessible qu'en lecture seule à www-data header ("Location: /pages/gestion/administration.php?page=alias&erreur=4"); die(); } else { // En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage()); } } } /** * Fonction d'activation/désactivation d'un alias virtuel. * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias virtuels d'un utilisateur. * Elle occasionnera peut-être des baisses de performance si un très grand nombre d'alias virtuels existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). */ function modifEtatAliasVirtuelsBdd($pdo,$retour_form) { try { $compteModifs=0; foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) { if ($etat_alias_virtuel==0 || $etat_alias_virtuel==1) { $req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur'; $sql=$pdo->prepare($req); $sql->bindValue(':etat_alias_virtuel',$etat_alias_virtuel); $sql->bindValue(':id_alias_virtuel',$id_alias_virtuel); $sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']); $sql->execute(); } } } catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="HY000") { // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data header ("Location: /pages/gestion/administration.php?page=alias&erreur=4"); die(); } else { // En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage()); } } } /** * Fonction de suppression d'un alias virtuel. */ function supprAliasVirtuelsBdd($pdo,$suppr_alias_virtuel) { try { $req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur'; $sql=$pdo->prepare($req); $sql->bindValue(':id_alias_virtuel',$suppr_alias_virtuel); $sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']); $sql->execute(); if($sql->rowCount() == 1){ return true; } else { return false; } } catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="HY000") { // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data header ("Location: /pages/gestion/administration.php?page=alias&erreur=4"); die(); } else { // En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur die ("Erreur de requête de suppression d'un alias virtuel : ".$e->getMessage()); } } } /** * Fonction de suppression de tous les alias virtuels d'un utilisateur (à la suppression de celui-ci). */ function supprTousAliasVirtuelsUtilisateurBdd($pdo,$id_utilisateur) { try { $req='DELETE FROM postfix_alias_virtuels WHERE destination IN (SELECT utilisateur FROM postfix_utilisateurs WHERE id=:id_utilisateur);'; $sql=$pdo->prepare($req); $sql->bindValue(':id_utilisateur',$id_utilisateur); $sql->execute(); $code_retour=$sql->errorInfo(); if ($code_retour[0]=="00000") { return true; } else { return false; } } catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="HY000") { // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data header ("Location: /pages/gestion/administration.php?page=alias&erreur=4"); die(); } else { // En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur die ("Erreur de requête de suppression des alias virtuels de l'utilisateur : ".$e->getMessage()); } } } ?>