Validateur de code SIREN pour symfony

Dans la série des codes qui peuvent servir, voilà une classe PHP à copier dans le dossier lib de Symfony, elle permet, via l’algorithme de Luhn, de vérifier si un Code SIREN est valide dans un formulaire.


/**
* Classe implémentant une vérification du code Siren par l'algorithme de Luhn
*
*/

class sfCodeSirenValidator extends sfValidator
{

public function execute($value, $error)
{
//if so the length of the string given is incorrect
if(strlen(trim($value))!=9){
$error=$this->getParameter('sirenlength_error');

return false;
}

$odd = !strlen($value)%2;
$sum = 0;
for($i=0;$i < strlen($value);++$i) {
$n=0+$value[$i];
$odd=!$odd;
if($odd) {
$sum+=$n;
} else {
$x=2*$n;
$sum+=$x>9?$x-9:$x;
}
}
if(($sum%10)==0){
return true;
} else {
//the siren code is not a proper formatted one
$error=$this->getParameter('siren_error');

return false;
}

}

public function initialize ($context , $parameters = null ){

//Initialize parent
parent::initialize($context);

$this->setParameter('sirenlength_error' , 'Incorrect size for a siren code ');
$this->setParameter('siren_error' , 'This is not a valid siren code');

//Set parameters
$this->getParameterHolder()->add($parameters);

return true;
}

}

Son utilisation est simple via un fichier validate.yml de la façon suivante en le couplant à une vérification du nombre:


fields:
codesiren:
sfNumberValidator:
nan_error: Le code siren est un numéro
sfCodeSirenValidator:
siren_error: Le code siren est invalide
sirenlength_error: La taille du code siren entré est incorrecte

Ce validateur permet ainsi d’être sûr de la validité d’un code SIREN et donc de l’identité de l’entreprise que l’on cherche à ajouter.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :