extranet/includes/siren.php
2011-01-20 09:31:12 +00:00

84 lines
2.9 KiB
PHP

<?php
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;
}
function replace_siren($matches)
{
foreach ($matches as $sirenBrut) {
$siren = strtr($sirenBrut, array(' ' => '', '.' => '', '-' => ''));
if (strlen($sirenBrut) == 9) {
$sirenBrut = implode(' ', str_split($sirenBrut, 3));
}
if (valideSiren($siren)) {
require_once 'scoresws/scoresws.php';
global $ws_soap_client_ent;
try {
$o = new StdClass;
$o->siren = $siren;
$O = $ws_soap_client_ent->__call('isSirenExistant', array($o));
} catch (SoapFault $fault) {
return $sirenBrut;
}
if ($O->isSirenExistantResult->result) {
return '<a href="/?page=identite&siret='.$siren.
'" title="Voir la fiche d\'identit&eacute;'.
' de cette entreprise">'.$sirenBrut.'</a>';
}
}
return $sirenBrut;
}
}
?>