diff --git a/.gitattributes b/.gitattributes index 91b36e3f459ff1e38f16e0511fbe5e6f7b1e84ab..592e632b6a1a2d173aeed43829ad506a8e57ef8c 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 df26b59e8ed225b71ac0c5919db4b471eba87632..9fa4abeffd567e15ce42a6361d9cb9ba1285d536 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érifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.', 'type_regex' => 'Expression régulière', 'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. 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érifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', - 'type_siret' => 'SIRET', - 'type_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIRET">Système d’Identification du Répertoire des ETablissements</a> français.', + 'type_siren_siret' => 'SIREN ou SIRET', + 'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', 'type_taille' => 'Taille', 'type_taille_description' => 'Vérifie que la taille de la valeur correspond au minimum et/ou au maximum demandé.', 'type_telephone' => 'Numéro de téléphone', diff --git a/verifier/siren.php b/verifier/siren.php deleted file mode 100644 index 2c7d28892717b607739781ed9427a4af5d9781a4..0000000000000000000000000000000000000000 --- 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 2ea4ea12aefd4aefcde14827af872a3ff252b294..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..b284a7747af3d7e21ca1885691d3d9b7b6a31c7e --- /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 0000000000000000000000000000000000000000..364493284dd436b57acf5f9a5b874923b65cd4e5 --- /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 43d5d5778d8e0492c3ab93598f8ef5d604d4b04f..0000000000000000000000000000000000000000 --- 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 e64f9b4c0b2931f56645bb2365b52ce2e033fa87..0000000000000000000000000000000000000000 --- a/verifier/siret.yaml +++ /dev/null @@ -1,3 +0,0 @@ - -titre: '<:verifier:type_siret:>' -description: '<:verifier:type_siret_description:>'