From 6957badce84dc65094d244f932101dcfd12f4ccb Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Thu, 22 Jan 2009 15:26:21 +0000 Subject: [PATCH] =?UTF-8?q?-=20LSaddon=20::=20Maildir=20:=20=20=20->=20Ajo?= =?UTF-8?q?ut=20de=20la=20fonction=20getMaildirPath()=20s'occupant=20de=20?= =?UTF-8?q?la=20g=C3=A9n=C3=A9ration=20du=20=20=20=20=20=20chemin=20distan?= =?UTF-8?q?t=20de=20la=20maildir=20=C3=A0=20partir=20d'un=20LSldapObject.?= =?UTF-8?q?=20=20=20->=20Ajout=20de=20la=20possibilit=C3=A9=20de=20la=20d?= =?UTF-8?q?=C3=A9finition=20d'une=20regex=20pour=20d=C3=A9terminer=20=20?= =?UTF-8?q?=20=20=20=20le=20chemin=20distant=20de=20la=20maildir.=20Cette?= =?UTF-8?q?=20regex=20doit=20matcher=20tout=20ou=20parti=20=20=20=20=20=20?= =?UTF-8?q?de=20la=20chaine=20retourn=C3=A9=20par=20le=20LSformat=20LS=5FM?= =?UTF-8?q?AILDIR=5FFTP=5FMAILDIR=5FPATH.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../conf/LSaddons/config.LSaddons.maildir.php | 5 +- trunk/includes/addons/LSaddons.maildir.php | 48 +++++++++++++++++-- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/trunk/conf/LSaddons/config.LSaddons.maildir.php b/trunk/conf/LSaddons/config.LSaddons.maildir.php index 2792e0e4..aab8ad69 100644 --- a/trunk/conf/LSaddons/config.LSaddons.maildir.php +++ b/trunk/conf/LSaddons/config.LSaddons.maildir.php @@ -39,7 +39,10 @@ define('LS_MAILDIR_FTP_USER','vmail'); define('LS_MAILDIR_FTP_PWD','password'); // Serveur FTP - Maildir Path -define('LS_MAILDIR_FTP_MAILDIR_PATH','%{uid}'); +define('LS_MAILDIR_FTP_MAILDIR_PATH','%{mailbox}'); + +// Serveur FTP - Maildir Path Regex +define('LS_MAILDIR_FTP_MAILDIR_PATH_REGEX','^\/home\/vmail\/([^\/]+)\/$'); // Serveur FTP - Maildir CHMOD define('LS_MAILDIR_FTP_MAILDIR_CHMOD','700'); diff --git a/trunk/includes/addons/LSaddons.maildir.php b/trunk/includes/addons/LSaddons.maildir.php index e2f54336..4d234a3a 100644 --- a/trunk/includes/addons/LSaddons.maildir.php +++ b/trunk/includes/addons/LSaddons.maildir.php @@ -32,13 +32,16 @@ $GLOBALS['LSerror_code']['MAILDIR_SUPPORT_02']= array ( // Autres erreurs $GLOBALS['LSerror_code']['MAILDIR_01']= array ( - 'msg' => _("MAILDIR Support : Erreur durant la création de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant la création de la maildir sur le serveur distant.") ); $GLOBALS['LSerror_code']['MAILDIR_02']= array ( - 'msg' => _("MAILDIR Support : Erreur durant la suppression de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant la suppression de la maildir sur le serveur distant.") ); $GLOBALS['LSerror_code']['MAILDIR_03']= array ( - 'msg' => _("MAILDIR Support : Erreur durant le renomage de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant le renomage de la maildir sur le serveur distant.") +); +$GLOBALS['LSerror_code']['MAILDIR_04']= array ( + 'msg' => _("MAILDIR : Erreur durant la récupération du chemin distant de la maildir.") ); /** @@ -87,7 +90,10 @@ $retval=true; */ function createMaildirByFTP($ldapObject,$dir=null) { if (!$dir) { - $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + $dir = getMaildirPath($ldapObject); + if (!$dir) { + return; + } } $dirs = array( $dir.'/cur', @@ -114,7 +120,10 @@ $retval=true; */ function removeMaildirByFTP($ldapObject,$dir=null) { if (!$dir) { - $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + $dir = getMaildirPath($ldapObject); + if (!$dir) { + return; + } } if (!removeDirsByFTP(LS_MAILDIR_FTP_HOST,LS_MAILDIR_FTP_PORT,LS_MAILDIR_FTP_USER,LS_MAILDIR_FTP_PWD,$dir)) { LSerror::addErrorCode('MAILDIR_02'); @@ -122,6 +131,35 @@ $retval=true; } return true; } + + /** + * Retourne le chemin distant de la maildir + * + * @author Benjamin Renard + * + * @param[in] $ldapObject L'objet ldap + * + * @retval string Le chemin distant de la maildir ou false si il y a un problème + */ + function getMaildirPath($ldapObject) { + $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + + if (LS_MAILDIR_FTP_MAILDIR_PATH_REGEX != "") { + if (ereg(LS_MAILDIR_FTP_MAILDIR_PATH_REGEX,$dir,$regs)) { + $dir = $regs[1]; + } + else { + $dir = ""; + } + } + + if ($dir=="") { + LSerror::addErrorCode('MAILDIR_04'); + return; + } + + return $dir; + } /** * Rename Maildir via FTP