Amélioration de remplacement d'un siren dans un texte avec verification et validation

This commit is contained in:
Michael RICOIS 2011-08-03 08:30:47 +00:00
parent 7170b29f58
commit 59ad6848e7
2 changed files with 75 additions and 71 deletions

View File

@ -1,6 +1,11 @@
<?php
class Zend_View_Helper_RemplaceSiren extends Zend_View_Helper_Abstract
{
public function __construct()
{
require_once 'Scores/Siren.php';
}
public function RemplaceSiren($texte)
{
$pattern = "/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/";
@ -14,82 +19,23 @@ class Zend_View_Helper_RemplaceSiren extends Zend_View_Helper_Abstract
if (strlen($sirenBrut)==9) {
$sirenBrut = implode(' ', str_split($sirenBrut, 3));
}
$sirenMethod = new Siren();
if ($sirenMethod->valide($siren)) {
Zend_Registry::get('firebug')->info('Siren valide');
if ($sirenMethod->exist($siren)){
Zend_Registry::get('firebug')->info('Siren exist');
$href = $this->view->url(array(
'controller' => 'identite',
'action' => 'fiche',
'siret' => $siren,
));
), null, true);
return '<a href="'.$href.'" title="Voir la fiche identité de cette entreprise">'.$sirenBrut.'</a>';
/*
if ($this->valideSiren($siren)) {
try {
$O = $client->isSirenExistant($siren);
} catch (SoapFault $fault) {
return $sirenBrut;
}
if ($O>0) {
return '<a href="/?page=identite&siret='.$siren.'" title="Voir la fiche d\'identit&eacute; de cette entreprise">'.$sirenBrut.'</a>';
}
}
return $sirenBrut;
*/
}
}
protected function valideSiren($siren, $nic='', $erreur=false)
{
$lenSIREN=strlen($siren);
if (!valideData($siren, 9, 9,'N')) //Siren non précisé ou incorrect.
return $erreur;
else
{
if (!isset($nic) || trim($nic)=='')
{
$somme=0;
for ($i=0; $i<=8; $i+=2) // Traitement IMPAIR
$somme+=(integer)substr($siren,$i,1);
for ($i=1; $i<=7; $i+=2)
{ // Traitement PAIR
$var_tmp=(string)(2*((integer)substr($siren,$i,1)));
$som_tmp=0;
for($j=0;$j<strlen($var_tmp);$j++)
$som_tmp+=(integer)substr($var_tmp,$j,1);
$somme+=$som_tmp;
}
if ((integer)($somme/10)!=($somme/10))
{ // Le Siren est faux
if (substr($siren,0,3)!='200') // Les siren débutant par 200 sont toujours valides (sirens provisoires de la BDF?!)
return $erreur;
}
} else {
if (!valideData($nic,1,5,'N')) // Nic de format incorrect.
return $erreur;
$SIRET=$siren.$nic;
$somme=0;
for ($i=0; $i<=12; $i+=2)
{ // Traitement PAIR
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
$som_tmp=0;
for($j=0;$j<strlen($var_tmp);$j++)
$som_tmp+=(integer)substr($var_tmp,$j,1);
$somme+=$som_tmp;
}
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
$somme+=(integer)substr($SIRET,$i,1);
if ((integer)($somme/10)!=($somme/10))// Le Siret est faux
return $erreur;
return $sirenBrut;
}
}
return true;
return $sirenBrut;
}
}
}

58
library/Scores/Siren.php Normal file
View File

@ -0,0 +1,58 @@
<?php
class Siren
{
public function __construct(){}
public function valide($siret)
{
$siren = substr($siret, 0, 9);
$nic = null;
if (strlen($siret)==14)
$nic = substr($siret, 9, 5);
if (empty($nic)) {
$somme=0;
for ($i=0; $i<=8; $i+=2) // Traitement IMPAIR
$somme+=(integer)substr($siren,$i,1);
for ($i=1; $i<=7; $i+=2)
{ // Traitement PAIR
$var_tmp=(string)(2*((integer)substr($siren,$i,1)));
$som_tmp=0;
for($j=0;$j<strlen($var_tmp);$j++)
$som_tmp+=(integer)substr($var_tmp,$j,1);
$somme+=$som_tmp;
}
if ((integer)($somme/10)!=($somme/10))
{ // Le Siren est faux
if (substr($siren,0,3)!='200') // Les siren débutant par 200 sont toujours valides (sirens provisoires de la BDF?!)
return false;
}
} else {
$SIRET=$siren.$nic;
$somme=0;
for ($i=0; $i<=12; $i+=2)
{ // Traitement PAIR
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
$som_tmp=0;
for($j=0;$j<strlen($var_tmp);$j++)
$som_tmp+=(integer)substr($var_tmp,$j,1);
$somme+=$som_tmp;
}
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
$somme+=(integer)substr($SIRET,$i,1);
if ((integer)($somme/10)!=($somme/10))// Le Siret est faux
return false;
}
return true;
}
public function exist($siren)
{
require_once 'Scores/WsScores.php';
$ws = new WsScores();
return $ws->isSirenExistant($siren);
}
}