97 lines
2.6 KiB
PHP
97 lines
2.6 KiB
PHP
|
<?php
|
||
|
class Zend_View_Helper_RemplaceSiren extends Zend_View_Helper_Abstract
|
||
|
{
|
||
|
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}))/";
|
||
|
return preg_replace_callback($pattern, 'Zend_View_Helper_RemplaceSiren::replace_siren', $texte);
|
||
|
}
|
||
|
|
||
|
public function replace_siren($matches)
|
||
|
{
|
||
|
foreach ($matches as $i => $sirenBrut) {
|
||
|
$siren = strtr($sirenBrut, array(' '=>'', '.'=>'', '-'=>''));
|
||
|
if (strlen($sirenBrut)==9) {
|
||
|
$sirenBrut = implode(' ', str_split($sirenBrut, 3));
|
||
|
}
|
||
|
|
||
|
$href = $this->view->url(array(
|
||
|
'controller' => 'identite',
|
||
|
'action' => 'fiche',
|
||
|
'siret' => $siren,
|
||
|
));
|
||
|
|
||
|
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é 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 true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|