From f7917f00d20b37cd91df489446cf3790defd6123 Mon Sep 17 00:00:00 2001
From: "rastapopoulos@spip.org" <>
Date: Thu, 8 Apr 2010 13:46:18 +0000
Subject: [PATCH] =?UTF-8?q?On=20met=20le=20SIREN=20et=20le=20SIRET=20dans?=
 =?UTF-8?q?=20la=20m=C3=AAme=20v=C3=A9rification=20avec=20une=20option?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitattributes            |  6 ++--
 lang/verifier_fr.php      |  9 +++---
 verifier/siren.php        | 31 ---------------------
 verifier/siren.yaml       |  3 --
 verifier/siren_siret.php  | 58 +++++++++++++++++++++++++++++++++++++++
 verifier/siren_siret.yaml | 12 ++++++++
 verifier/siret.php        | 33 ----------------------
 verifier/siret.yaml       |  3 --
 8 files changed, 77 insertions(+), 78 deletions(-)
 delete mode 100644 verifier/siren.php
 delete mode 100644 verifier/siren.yaml
 create mode 100644 verifier/siren_siret.php
 create mode 100644 verifier/siren_siret.yaml
 delete mode 100644 verifier/siret.php
 delete mode 100644 verifier/siret.yaml

diff --git a/.gitattributes b/.gitattributes
index 91b36e3..592e632 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -14,10 +14,8 @@ verifier/entier.php -text
 verifier/entier.yaml -text
 verifier/regex.php -text
 verifier/regex.yaml -text
-verifier/siren.php -text
-verifier/siren.yaml -text
-verifier/siret.php -text
-verifier/siret.yaml -text
+verifier/siren_siret.php -text
+verifier/siren_siret.yaml -text
 verifier/taille.php -text
 verifier/taille.yaml -text
 verifier/telephone.php -text
diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php
index df26b59..9fa4abe 100644
--- a/lang/verifier_fr.php
+++ b/lang/verifier_fr.php
@@ -28,6 +28,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'option_entier_max_label' => 'Valeur maximum',
 	'option_entier_min_label' => 'Valeur minimum',
 	'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant',
+	'option_siren_siret_mode' => 'Que voulez-vous vérifier ?',
+	'option_siren_siret_mode_siren' => 'le SIREN',
+	'option_siren_siret_mode_siret' => 'le SIRET',
 	'option_taille_max_label' => 'Taille maximum',
 	'option_taille_min_label' => 'Taille minimum',
 
@@ -42,10 +45,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'type_entier_description' => 'V&eacute;rifie que la valeur est un entier, avec la possibilit&eacute; de restreindre entre deux valeurs.',
 	'type_regex' => 'Expression r&eacute;guli&egrave;re',
 	'type_regex_description' => 'V&eacute;rifie que la valeur correspond au masque demand&eacute;. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.',
-	'type_siren' => 'SIREN',
-	'type_siren_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.',
-	'type_siret' => 'SIRET',
-	'type_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIRET">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ETablissements</a> fran&ccedil;ais.',
+	'type_siren_siret' => 'SIREN ou SIRET',
+	'type_siren_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.',
 	'type_taille' => 'Taille',
 	'type_taille_description' => 'V&eacute;rifie que la taille de la valeur correspond au minimum et/ou au maximum demand&eacute;.',
 	'type_telephone' => 'Num&eacute;ro de t&eacute;l&eacute;phone',
diff --git a/verifier/siren.php b/verifier/siren.php
deleted file mode 100644
index 2c7d288..0000000
--- a/verifier/siren.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * 1/ Un SIREN comporte STRICTEMENT 9 caractères
- * 1b/ Un SIRET comporte strictement 14 caractères
- * 2/ Un siren/siret utilise une clef de controle "1-2"
- *    Un siren/siret est donc valide si la somme des chiffres paires
- *    + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10
- */
-
-function verifier_siren_dist($valeur, $options=array()){
-	$erreur = _T('verifier:erreur_siren');
-	$ok = '';
-
-	// Si pas 9 caractère, c'est déjà foiré !
-	if(!preg_match('/^[0-9]{9}$/',$valeur)) return $erreur;
-	
-	// On vérifie la clef de controle "1-2"
-	$somme = 0;
-	$i = 0; // Les impaires
-	while($i < 9){ $somme += $valeur[$i]; $i+=2; }
-	$i = 1; // Les paires !
-	while($i < 9){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; }
-	
-	if($somme % 10) return $erreur;
-	
-	return $ok;
-}
diff --git a/verifier/siren.yaml b/verifier/siren.yaml
deleted file mode 100644
index 2ea4ea1..0000000
--- a/verifier/siren.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-titre: '<:verifier:type_siren:>'
-description: '<:verifier:type_siren_description:>'
diff --git a/verifier/siren_siret.php b/verifier/siren_siret.php
new file mode 100644
index 0000000..b284a77
--- /dev/null
+++ b/verifier/siren_siret.php
@@ -0,0 +1,58 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * 1/ Un SIREN comporte STRICTEMENT 9 caractères
+ * 1b/ Un SIRET comporte strictement 14 caractères
+ * 2/ Un siren/siret utilise une clef de controle "1-2"
+ *    Un siren/siret est donc valide si la somme des chiffres paires
+ *    + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10
+ */
+
+function verifier_siren_siret_dist($valeur, $options=array()){
+	if (!$options['mode'] or !in_array($options['mode'], array('siren', 'siret'))){
+		$mode = 'siren';
+	}
+	else{
+		$mode = $options['mode'];
+	}
+	
+	// Test de SIREN
+	if ($mode == 'siren'){
+		$erreur = _T('verifier:erreur_siren');
+
+		// Si pas 9 caractère, c'est déjà foiré !
+		if(!preg_match('/^[0-9]{9}$/',$valeur)) return $erreur;
+	
+		// On vérifie la clef de controle "1-2"
+		$somme = 0;
+		$i = 0; // Les impaires
+		while($i < 9){ $somme += $valeur[$i]; $i+=2; }
+		$i = 1; // Les paires !
+		while($i < 9){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; }
+	
+		if ($somme % 10) return $erreur;
+	}
+	// Test de SIRET
+	else{
+		$erreur = _T('verifier:erreur_siret');
+
+		// Si pas 14 caractère, c'est déjà foiré !
+		if(!preg_match('/^[0-9]{14}$/',$valeur)) return $erreur;
+		if(preg_match('/[0]{8}/',$valeur)) return $erreur;
+
+		// Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2
+		// (vs pairs*2 pour SIREN, parce qu'on part de la fin)
+		$somme = 0;
+		$i = 1; // Les paires
+		while($i < 14){ $somme += $valeur[$i]; $i+=2; }
+		$i = 0; // Les impaires !
+		while($i < 14){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; }
+	
+		if($somme % 10) return $erreur;
+	}
+	
+	return '';
+}
diff --git a/verifier/siren_siret.yaml b/verifier/siren_siret.yaml
new file mode 100644
index 0000000..3644932
--- /dev/null
+++ b/verifier/siren_siret.yaml
@@ -0,0 +1,12 @@
+
+titre: '<:verifier:type_siren_siret:>'
+description: '<:verifier:type_siren_siret_description:>'
+options:
+  -
+    saisie: 'radio'
+    options:
+      nom: 'mode'
+      label: '<:verifier:option_siren_siret_mode:>'
+      datas:
+        siren: '<:verifier:option_siren_siret_mode_siren:>'
+        siret: '<:verifier:option_siren_siret_mode_siret:>'
diff --git a/verifier/siret.php b/verifier/siret.php
deleted file mode 100644
index 43d5d57..0000000
--- a/verifier/siret.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * 1/ Un SIREN comporte STRICTEMENT 9 caractères
- * 1b/ Un SIRET comporte strictement 14 caractères
- * 2/ Un siren/siret utilise une clef de controle "1-2"
- *    Un siren/siret est donc valide si la somme des chiffres paires
- *    + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10
- */
-
-function verifier_siret_dist($valeur, $options=array()){
-	$erreur = _T('verifier:erreur_siret');
-	$ok = '';
-
-	// Si pas 14 caractère, c'est déjà foiré !
-	if(!preg_match('/^[0-9]{14}$/',$valeur)) return $erreur;
-	if(preg_match('/[0]{8}/',$valeur)) return $erreur;
-
-	// Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2
-	// (vs pairs*2 pour SIREN, parce qu'on part de la fin)
-	$somme = 0;
-	$i = 1; // Les paires
-	while($i < 14){ $somme += $valeur[$i]; $i+=2; }
-	$i = 0; // Les impaires !
-	while($i < 14){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; }
-	
-	if($somme % 10) return $erreur;
-	
-	return $ok;
-}
diff --git a/verifier/siret.yaml b/verifier/siret.yaml
deleted file mode 100644
index e64f9b4..0000000
--- a/verifier/siret.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-titre: '<:verifier:type_siret:>'
-description: '<:verifier:type_siret_description:>'
-- 
GitLab