You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.1 KiB
198 lines
6.1 KiB
<?php
|
|
|
|
/**
|
|
* Page de fonctions concernant la gestion des domaines.
|
|
*/
|
|
|
|
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
|
|
|
|
/**
|
|
* Fonction listant les domaines.
|
|
*/
|
|
function listeDomainesPostfix($pdo) {
|
|
try {
|
|
$req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
$sql->execute();
|
|
|
|
$liste_domaines = $sql->fetchAll(PDO::FETCH_ASSOC);
|
|
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();
|
|
|
|
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
|
|
$comptage = count($result);
|
|
|
|
if($comptage == 1){
|
|
$domaine_defaut = $result;
|
|
return $domaine_defaut[0]['domaine'];;
|
|
}
|
|
else {
|
|
$domaine_defaut = "";
|
|
return $domaine_defaut;
|
|
}
|
|
}
|
|
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();
|
|
|
|
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 de préférence pour le domaine par défaut : ".$e->getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Fonction d'ajout d'un domaine.
|
|
*/
|
|
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',substr(htmlspecialchars($nom_domaine),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 "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=7");
|
|
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'un domaine : ".$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,$retour_form) {
|
|
try {
|
|
$compteModifs=0;
|
|
foreach ($retour_form 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 domaines : ".$e->getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fonction de suppression d'un domaine.
|
|
*/
|
|
function supprDomainesPostfix($pdo,$suppr_domaine) {
|
|
try {
|
|
$req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
$sql->bindValue(':id_domaine',$suppr_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]=="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 domaine : ".$e->getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|