extranet/includes/siren.php
2011-01-07 13:23:05 +00:00

93 lines
3.3 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)
{
$client =
new SoapClient(null,
array('trace' => 1,
'soap_version' => SOAP_1_1,
'location' => WEBSERVICE_URL,
'uri' => WEBSERVICE_URI,
'login' => $_SESSION['tabInfo']['login'],
'password' =>
$_SESSION['tabInfo']['password']));
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';
try {
$o = new StdClass;
$o->siren = $siren;
$O = $ws_soap_client_int->__call('isSirenExistant', array($o));
} catch (SoapFault $fault) {
return $sirenBrut;
}
if ($O->result) {
return '<a href="/?page=identite&siret='.$siren.
'" title="Voir la fiche d\'identit&eacute;'.
' de cette entreprise">'.$sirenBrut.'</a>';
}
}
return $sirenBrut;
}
}
?>