From 144b4d28ddb227b30521d5a96b13efee32e2af08 Mon Sep 17 00:00:00 2001
From: "xdjuj@apsulis.com" <>
Date: Mon, 12 Apr 2010 12:16:41 +0000
Subject: [PATCH] =?UTF-8?q?-=20Uniformiser=20les=20verifs=20de=20mail=20-?=
 =?UTF-8?q?=20Cat=C3=A9goriser=20pour=20la=20Zone=20-=20Corriger=20la=20do?=
 =?UTF-8?q?c?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 plugin.xml                |  3 ++-
 test/verifier.html        | 14 ++++++------
 verifier/email.php        | 48 ++++++++++++++++++++++++++++++++++-----
 verifier/email_strict.php | 30 +++++-------------------
 4 files changed, 57 insertions(+), 38 deletions(-)

diff --git a/plugin.xml b/plugin.xml
index d2eba7f..8392ed2 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -9,6 +9,7 @@
 	<prefix>verifier</prefix>
 	<options>verifier_options.php</options>
 	<necessite id="SPIP" version="[2.0.10;]" />
-	<utilise id="yaml" />
+	<utilise id="yaml" />	
+	<categorie>outil</categorie>
 </plugin>
 
diff --git a/test/verifier.html b/test/verifier.html
index 5a03d03..e1d39e5 100644
--- a/test/verifier.html
+++ b/test/verifier.html
@@ -84,11 +84,11 @@ echo "Valide SPIP : $email3 ?";
 var_dump($verifier($email3, 'email'));
 
 echo "Valide Strict : $email ?";
-var_dump($verifier($email, 'email_strict'));
+var_dump($verifier($email, 'email',array('mode'=>'strict')));
 echo "Valide Strict : $email2 ?";
-var_dump($verifier($email2, 'email_strict'));
+var_dump($verifier($email2, 'email',array('mode'=>'strict')));
 echo "Valide Strict : $email3 ?";
-var_dump($verifier($email3, 'email_strict'));
+var_dump($verifier($email3, 'email',array('mode'=>'strict')));
 
 
 ?>
@@ -124,14 +124,14 @@ $siret_valide = "32122785200019";
 $siret_non_valide = "32122785200033";
 
 echo "SIREN : $siren_valide ?";
-var_dump($verifier($siren_valide, 'siren'));
+var_dump($verifier($siren_valide, 'siren_siret'));
 echo "SIREN : $siren_non_valide ?";
-var_dump($verifier($siren_non_valide, 'siren'));
+var_dump($verifier($siren_non_valide, 'siren_siret'));
 
 echo "SIRET : $siret_valide ?";
-var_dump($verifier($siret_valide, 'siret'));
+var_dump($verifier($siret_valide, 'siren_siret',array('mode'=>'siret')));
 echo "SIRET : $siret_non_valide ?";
-var_dump($verifier($siret_non_valide, 'siret'));
+var_dump($verifier($siret_non_valide, 'siren_siret',array('mode'=>'siret')));
 ?>
 </pre>
 
diff --git a/verifier/email.php b/verifier/email.php
index ab630ee..ed6ce37 100644
--- a/verifier/email.php
+++ b/verifier/email.php
@@ -9,10 +9,46 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 function verifier_email_dist($valeur, $options=array()){
 	include_spip('inc/filtres');
 	
-	if (email_valide($valeur))
-		return '';
-	else
-		return _T('verifier:erreur_email');
-}
+	if (!$options['mode'] or !in_array($options['mode'], array('strict'))){
+		$mode = 'normal';
+	}
+	else{
+		$mode = $options['mode'];
+	}
+		
+	if ($mode == 'normal'){	
+		if (email_valide($valeur))
+			return '';
+		else
+			return _T('verifier:erreur_email');
+	}
+	
+	// Validation Stricte
+	/**
+	 * Changement de la RegExp d'origine
+	 * Non respect des RFC beaucoup trop souples à mon sens
+	 * On INTERDIT les mails dont les domaines ne sont pas "valides"
+	 * On INTERDIT les adresses qui comportent autre chose que des tirets / tirets bas / point
+	 * (même si les autres caractères sont autorisés, tant pis, ils sont trop rares)
+	 */
+	else{
+		$erreur = _T('verifier:erreur_email');
+		$ok = '';
 
-?>
+		// Si c'est un spammeur autant arreter tout de suite
+		if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) {
+			spip_log("Tentative d'injection de mail : $valeur");
+			return $erreur;
+		}
+		foreach (explode(',', $valeur) as $v) {
+			// nettoyer certains formats
+			// "Marie Toto <Marie@toto.com>"
+			$adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $v));
+			// NOUVELLE REGEXP NE RESPECTANT PLUS RFC 822 MAIS MOINS TOLERANTE
+			if (!preg_match('/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|\.)*@[A-Za-z0-9]([A-Za-z0-9]|-|\.){1,}\.[A-Za-z]{2,4}$/', $adresse))
+				return $erreur;
+		}
+		return $ok;
+	}
+	return '';
+}
diff --git a/verifier/email_strict.php b/verifier/email_strict.php
index bb7c847..a34556c 100644
--- a/verifier/email_strict.php
+++ b/verifier/email_strict.php
@@ -2,30 +2,12 @@
 
 // Sécurité
 if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Changement de la RegExp d'origine
- * Non respect des RFC beaucoup trop souples à mon sens
- * On INTERDIT les mails dont les domaines ne sont pas "valides"
- * On INTERDIT les adresses qui comportent autre chose que des tirets / tirets bas / point
- * (même si les autres caractères sont autorisés, tant pis, ils sont trop rares)
+/*
+ * OBSOLETE : remplacé par $verifier($valeur, 'email',array('mode'=>'strict'))
+ * Assurer la compatibilité un temps
  */
 function verifier_email_strict_dist($valeur, $options=array()){
-	$erreur = _T('verifier:erreur_email');
-	$ok = '';
-
-	// Si c'est un spammeur autant arreter tout de suite
-	if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) {
-		spip_log("Tentative d'injection de mail : $valeur");
-		return $erreur;
-	}
-	foreach (explode(',', $valeur) as $v) {
-		// nettoyer certains formats
-		// "Marie Toto <Marie@toto.com>"
-		$adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $v));
-		// NOUVELLE REGEXP NE RESPECTANT PLUS RFC 822 MAIS MOINS TOLERANTE
-		if (!preg_match('/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|\.)*@[A-Za-z0-9]([A-Za-z0-9]|-|\.){1,}\.[A-Za-z]{2,4}$/', $adresse))
-			return $erreur;
-	}
-	return $ok;
+	$verifier = charger_fonction('verifier','inc');
+	if(!$verifier($valeur, 'email',array('mode'=>'strict'))) return false;
+	else return _T('verifier:erreur_email');
 }
-- 
GitLab