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.
		
		
		
		
		
			
		
			
				
					
					
						
							160 lines
						
					
					
						
							5.5 KiB
						
					
					
				
			
		
		
	
	
							160 lines
						
					
					
						
							5.5 KiB
						
					
					
				| <?php
 | |
| 
 | |
| /**
 | |
|  * Page de fonctions permettant la gestion des alias virtuels.
 | |
|  */
 | |
| 
 | |
| require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
 | |
| require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
 | |
| 
 | |
| /**
 | |
|  * Fonction listant le préfixe de l'utilisateur courant.
 | |
|  */
 | |
| function retournePrefixeUtilisateurPostfix($pdo) {
 | |
| 	try {
 | |
| 		$req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
 | |
| 		$sql=$pdo->prepare($req);
 | |
| 		$sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']);
 | |
| 		$sql->execute();
 | |
| 
 | |
| 		$prefixe_utilisateur=$sql->fetchAll();
 | |
| 		return $prefixe_utilisateur[0]['prefixe'];
 | |
| 	}
 | |
| 	catch (\Exception $e) {
 | |
| 		die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage());
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Fonction listant les alias virtuels.
 | |
|  */
 | |
| function listeAliasVirtuelsPostfix($pdo) {
 | |
| 	try {
 | |
| 		// Filtre des alias virtuels de l'utilisateur courant
 | |
| 		$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination ORDER BY courriel ASC';
 | |
| 		$sql=$pdo->prepare($req);
 | |
| 		$sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']);
 | |
| 		$sql->execute();
 | |
| 
 | |
| 		$liste_alias_virtuels = $sql->fetchAll();
 | |
| 		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 ajoutAliasVirtuelsPostfix($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(retournePrefixeUtilisateurPostfix($pdo).$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 "postif_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 modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
 | |
| 	try {
 | |
| 		$compteModifs=0;
 | |
| 		foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) {
 | |
| 			$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 supprAliasVirtuelsPostfix($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());
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| ?>
 |