prepare($req); $sql->execute(); $liste_domaines = $sql->fetchAll(); return $liste_domaines; } catch (\Exception $e) { die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage()); } } /** * Fonction affichant le domaine par défaut. */ function retourneDomaineDefautPostfix($pdo) { try { $req = 'SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1'; $sql=$pdo->prepare($req); $sql->execute(); $domaine_defaut = $sql->fetchAll(); return $domaine_defaut[0]['domaine']; } catch (\Exception $e) { die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage()); } } /** * Fonction changeant le domaine par défaut. */ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) { try { // suppression du status de domaine par défaut sur tous les domaines pour s'assurer de l'unicité de ce paramètre à la requête suivante $req = 'UPDATE postfix_domaines SET defaut=0'; $sql=$pdo->prepare($req); $sql->execute(); // Définition du domaine renseigné par l'utilisateur et activation de celui-ci (au cas-où il ne l'était pas) $req = 'UPDATE postfix_domaines SET defaut=1, active=1 WHERE domaine=:domaine'; $sql=$pdo->prepare($req); $sql->bindValue(':domaine',$choix_domaine_defaut); $sql->execute(); } catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); var_dump($code_retour); die(); 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=domaines&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 d'ajout d'un alias virtuel. */ function ajoutDomainePostfix($pdo,$nom_domaine) { try { // Insertion du domaine entré par l'administrateur $req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)'; $sql=$pdo->prepare($req); $sql->bindValue(':domaine',$nom_domaine); $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 "domaine" de la table "postfix_domaines" est violée. Le domaine envoyé via le formulaire par l'administrateur a déjà été renseigné dans la base header ("Location: /pages/gestion/administration.php?page=domaines&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=domaines&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 domaine. * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des domaines d'un utilisateur. * Elle occasionnera peut-être des baisses de performance si un très grand nombre de domaines existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). */ function modifEtatDomainesPostfix($pdo) { try { $compteModifs=0; foreach ($_POST as $id_domaine => $etat_domaine) { $req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1'; $sql=$pdo->prepare($req); $sql->bindValue(':etat_domaine',$etat_domaine); $sql->bindValue(':id_domaine',$id_domaine); $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=domaines&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 domaine. */ function supprDomainesPostfix($pdo) { try { $req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1'; $sql=$pdo->prepare($req); $sql->bindValue(':id_domaine',$_GET['supprDomaine']); $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=domaines&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()); } } } ?>