2011-05-19 07:08:47 +00:00
|
|
|
<?php
|
|
|
|
class AvisSituation
|
|
|
|
{
|
|
|
|
protected static $timeout = 10;
|
|
|
|
protected static $retryDelay = 300;
|
|
|
|
protected $fichierErreur;
|
2011-05-19 07:24:34 +00:00
|
|
|
protected $pathLog;
|
|
|
|
protected $pathAvisPdf = APPLICATION_PATH . '/../cache/avis';
|
2011-05-19 07:08:47 +00:00
|
|
|
protected $siret;
|
|
|
|
|
|
|
|
public function __construct($siret)
|
|
|
|
{
|
|
|
|
require_once 'common/curl.php';
|
|
|
|
|
|
|
|
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini', 'path');
|
2011-05-19 07:24:34 +00:00
|
|
|
$this->pathLog = realpath($config->data).'/'.$config->log;
|
|
|
|
$this->fichierErreur = $this->pathLog.'/aviserreur.lock';
|
2011-05-19 07:08:47 +00:00
|
|
|
$this->siret = $siret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function erreurcpt($action)
|
|
|
|
{
|
|
|
|
switch($action){
|
|
|
|
case 'plus':
|
|
|
|
if (file_exists($this->fichierErreur)){
|
|
|
|
$handle = fopen($this->fichierErreur, 'r');
|
|
|
|
$data = fgetcsv($handle, '1000', ';');
|
|
|
|
$date_creation = $data[0];
|
|
|
|
$date_modification = time();
|
|
|
|
$nb = $data[2];
|
|
|
|
fclose($handle);
|
|
|
|
} else {
|
|
|
|
$date_creation = time();
|
|
|
|
$date_modification = time();
|
|
|
|
$nb = 0;
|
|
|
|
}
|
|
|
|
$nb++;
|
|
|
|
$handle = fopen($this->fichierErreur, 'w');
|
|
|
|
fputcsv($handle, array($date_creation, $date_modification, $nb), ';');
|
|
|
|
fclose($handle);
|
|
|
|
break;
|
|
|
|
case 'raz':
|
|
|
|
$handle = fopen($this->fichierErreur, 'w');
|
|
|
|
$date_creation = time();
|
|
|
|
$date_modification = time();
|
|
|
|
$nb = 0;
|
|
|
|
fputcsv($handle, array($date_creation, $date_modification, $nb), ';');
|
|
|
|
fclose($handle);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function nberreur()
|
|
|
|
{
|
|
|
|
if (file_exists($this->fichierErreur)){
|
|
|
|
$handle = fopen($this->fichierErreur, 'r');
|
|
|
|
$data = fgetcsv($handle, '1000', ';');
|
|
|
|
$nb = $data[2];
|
|
|
|
fclose($handle);
|
|
|
|
} else {
|
|
|
|
$nb = 1;
|
|
|
|
}
|
|
|
|
return $nb;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function erreur()
|
|
|
|
{
|
|
|
|
if (file_exists($this->fichierErreur))
|
|
|
|
{
|
|
|
|
$handle = fopen($this->fichierErreur, 'r');
|
|
|
|
$data = fgetcsv($handle, '1000', ';');
|
|
|
|
$date_creation = $data[0];
|
|
|
|
$date_modification = $data[1];
|
|
|
|
$nb = $data[2];
|
|
|
|
fclose($handle);
|
|
|
|
} else {
|
|
|
|
$date_creation = 0;
|
|
|
|
$date_modification = 0;
|
|
|
|
}
|
|
|
|
if ($nb>0 && $date_modification<$date_creation+$this->retryDelay){
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function mailerreur()
|
|
|
|
{
|
2011-05-19 08:45:12 +00:00
|
|
|
require_once 'Scores/Utilisateur.php';
|
|
|
|
$user = new Utilisateur();
|
|
|
|
|
|
|
|
$objet = "AVIS INSEE - (Date :".date("d")."/".date("m")."/".date("Y").")";
|
|
|
|
$texte = 'Accès impossible au site de situation INSEE : '.
|
|
|
|
$this->siret.EOL.
|
2011-05-19 07:08:47 +00:00
|
|
|
'http://avis-situation-sirene.insee.fr'.EOL.
|
2011-05-19 08:45:12 +00:00
|
|
|
'pour login '.$user->getLogin().EOL;
|
|
|
|
|
|
|
|
require_once 'Scores/Mail.php';
|
|
|
|
$mail = new Mail();
|
|
|
|
$mail->setFrom('contact');
|
|
|
|
$mail->addToKey('support');
|
|
|
|
$mail->setSubject($objet);
|
|
|
|
$mail->setBodyText($texte);
|
|
|
|
$mail->send();
|
2011-05-19 07:08:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function erreurmsg(){
|
|
|
|
return "<h3>Le site partenaire n'a pas répondu correctement ou est indisponible. Merci d'essayer à nouveau ultérieurement.</h3>";
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupére l'avis de situtation à partir du site au format pdf
|
|
|
|
* @param string $format Format 'pdf' ou 'array'
|
|
|
|
* @param boolean $force True aller obligatoirement le chercher à l'insee
|
|
|
|
* @return string Le PDF demandé
|
|
|
|
*/
|
|
|
|
public function get($format='pdf', $force=0)
|
|
|
|
{
|
|
|
|
$force=$force*1;
|
|
|
|
$date=date('Ymd');
|
|
|
|
$siren=trim(substr($this->siret,0,9));
|
|
|
|
$nic=trim(substr($this->siret,9,5));
|
2011-05-19 07:24:34 +00:00
|
|
|
$fichier = $this->pathAvisPdf.'/avis-'.$siren.'-'.$nic.'-'.$date.'.pdf';
|
2011-05-19 07:08:47 +00:00
|
|
|
if ($format!='pdf') return 'Format pdf uniquement';
|
|
|
|
if ($force==0 && file_exists($fichier))
|
|
|
|
{
|
|
|
|
// On délivre l'avis en base
|
|
|
|
return file_get_contents($fichier);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/** Initialisation de la session sur le site de l'Insee **/
|
|
|
|
$url = 'http://avis-situation-sirene.insee.fr/avisitu/jsp/avis.jsp';
|
|
|
|
//http://avis-situation-sirene.insee.fr/avisituV2/jsp/avis.jsp';
|
|
|
|
$referer = $cookie = '';
|
2011-05-19 08:45:12 +00:00
|
|
|
$page = getUrl($url, $cookie, '', $referer, false, 'avis-situation-sirene.insee.fr', '', $this->timeout);
|
2011-05-19 07:08:47 +00:00
|
|
|
//Code en 4xx ou 5xx signifie une erreur du serveur
|
|
|
|
$codeN = floor($page['code']/100);
|
|
|
|
if($codeN==4 || $codeN==5)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$referer = $url;
|
|
|
|
$body = $page['body'];
|
|
|
|
$serviceDispo = true;
|
|
|
|
|
|
|
|
//On doit retrouver sur la page
|
|
|
|
/*
|
|
|
|
<form name="demForm" method="post" action="/avisitu/IdentificationListeSiret.do
|
|
|
|
*/
|
|
|
|
if (preg_match("/<form name=\"demForm\" method=\"post\" action=\"\/avisitu\/IdentificationListeSiret.do/Uis", $body, $matches))
|
|
|
|
{
|
|
|
|
$fp = @fopen($fichier, "a");
|
|
|
|
@fwrite($fp, $body);
|
|
|
|
@fclose($fp);
|
|
|
|
$cookie = $page['header']['Set-Cookie'];
|
|
|
|
usleep(round(rand(500000,2000000)));
|
|
|
|
|
|
|
|
$dep=$depActif='';
|
|
|
|
if ($nic=='') $crit='S'; // l'établissement siège
|
|
|
|
else $crit=''; // établissement particulier, saisissez le NIC
|
|
|
|
/* $crit='T'; // tous les établissements de l'entreprise
|
|
|
|
$crit='T'; // tous les établissements de l'entreprise du département $dep
|
|
|
|
$crit='A'; // tous les établissements actifs de l'entreprise
|
|
|
|
$crit='A'; // tous les établissements actifs de l'entreprise du département $depActif
|
|
|
|
*/
|
|
|
|
//Post du formulaire
|
|
|
|
$url = 'http://avis-situation-sirene.insee.fr/avisitu/IdentificationListeSiret.do';
|
|
|
|
//$url='http://avis-situation-sirene.insee.fr/avisituV2/IdentificationDetailEtab.do';
|
|
|
|
$post = array(
|
|
|
|
'siren' => $siren,
|
|
|
|
'critere' => $crit, // S pour le siège ou vide avec un NIC !!!
|
|
|
|
'nic' => $nic,
|
|
|
|
'departement' => $dep,
|
|
|
|
'departement_actif' => $depActif,
|
|
|
|
'bSubmit' => 'Valider');
|
|
|
|
$page = getUrl($url, $cookie, $post, $referer, false, 'avis-situation-sirene.insee.fr', '', AVIS_TIMEOUT);
|
|
|
|
|
|
|
|
$body = $page['body'];
|
|
|
|
$fp=@fopen($fichier, "a");
|
|
|
|
@fwrite($fp, $body);
|
|
|
|
@fclose($fp);
|
|
|
|
|
|
|
|
if (preg_match("/<h3>Fiche établissement<\/h3>/Uis", $body, $matches))//<li class="ongletActif">établissement</li>
|
|
|
|
$tabInfos['fiche']='etab';
|
|
|
|
|
|
|
|
if (preg_match('/<div class="TitreGauche">(.*)<br\/>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['raiSoc']=trim($matches[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match("/Dernière mise à jour : (.*)<\/div>/Uis", $body, $matches))
|
|
|
|
$tabInfos['dateMaj']=trim($matches[1]);
|
|
|
|
|
|
|
|
$s1=substr($siren,0,3);
|
|
|
|
$s2=substr($siren,3,3);
|
|
|
|
$s3=substr($siren,6,3);
|
|
|
|
if (preg_match('/<div class="TitreDroite">(?:.*)('.$s1.'(?:.*)'.$s2.'(?:.*)'.$s3.')(?:.*)('.$nic.')(?:.*)<\/div>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['siren'] = trim($matches[1]);
|
|
|
|
$tabInfos['nic'] = trim($matches[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/<label id="labelFiche">Etat : <\/label>(.*)depuis le(.*)<\/p>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['etat'] = trim($matches[1]);
|
|
|
|
$tabInfos['dateEtat']= trim($matches[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/<label id="labelFiche">Catégorie d\'établissement : <\/label>(.*)<\/p>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['typeEtab']= trim($matches[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
$tabAdresse=array();
|
|
|
|
if (preg_match('/<label id="labelFiche">Adresse d\'implantation : <\/label>(?:.*)<ul id="adresse">(.*)<\/ul>/Uis', $body, $matches)) {
|
|
|
|
$strTmp=trim($matches[1]);
|
|
|
|
$tabTmp=explode('</li>', $strTmp);
|
|
|
|
foreach ($tabTmp as $i=>$strTmp)
|
|
|
|
$tabAdresse[$i]=trim(str_replace('<li>','',$strTmp));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/<label id="labelFiche">(?:.*)Catégorie juridique :(?:.*)<\/label>(.*) - (.*)<\/p>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['fjCod']= trim($matches[1]);
|
|
|
|
$tabInfos['fjLib']= trim($matches[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/<label id="labelFiche">Activité principale exercée :(?:.*)<\/label>(.*) - (.*)<\/p>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['nafCod']=trim($matches[1]);
|
|
|
|
$tabInfos['nafLib']=trim($matches[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/<label id="labelFiche">(?:.*)Tranche d'effectif(.*)<\/label>(.*)<\/p>/Uis', $body, $matches)) {
|
|
|
|
$tabInfos['effPeriode']=trim($matches[1]);
|
|
|
|
$tabInfos['effTranche']=trim($matches[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
$strCsv=$siren.';'.$nic.';'.$tabInfos['fiche'].';'.$tabInfos['dateMaj'].';'.
|
|
|
|
$tabInfos['siren'].';'.$tabInfos['nic'].';'.$tabInfos['raiSoc'].';'.
|
|
|
|
$tabInfos['etat'].';'.$tabInfos['dateEtat'].';'.$tabInfos['fjCod'].';'.$tabInfos['fjLib'].';'.
|
|
|
|
$tabInfos['nafCod'].';'.$tabInfos['nafLib'].';'.$tabInfos['effPeriode'].';'.
|
|
|
|
$tabInfos['effTranche'].';'.
|
|
|
|
$tabInfos['typeEtab'].';'.@implode(';',@$tabAdresse).
|
|
|
|
";\n";
|
2011-05-19 07:24:34 +00:00
|
|
|
$fp=@fopen($this->pathLog."/avis.csv", "a");
|
2011-05-19 07:08:47 +00:00
|
|
|
@fwrite($fp, $strCsv);
|
|
|
|
@fclose($fp);
|
|
|
|
|
|
|
|
// $body contient l'avis de situation au format html
|
|
|
|
$tabErreurs=array();
|
|
|
|
if (preg_match('/name="erreurs" value="(.*)" class="erreurText" readonly/Ui', $body, $matches1) ||
|
|
|
|
preg_match('/name="erreurs_bis" value="(.*)" class="erreurTextBis" readonly/Ui', $body, $matches2)) {
|
|
|
|
$tabErreurs[]=@$matches1[1];
|
|
|
|
$tabErreurs[]=@$matches2[1];
|
|
|
|
die('<font color="red">ERREUR '.utf8_encode(implode(' ', $tabErreurs)).'</font>'); // Gérer le retour d'une erreur
|
|
|
|
}
|
|
|
|
usleep(round(rand(500000,1000000)));
|
|
|
|
|
|
|
|
if ($format=='pdf')
|
|
|
|
{
|
|
|
|
$referer = $url;
|
|
|
|
$url = 'http://avis-situation-sirene.insee.fr/avisitu/AvisPdf.do';
|
|
|
|
//$url='http://avis-situation-sirene.insee.fr/avisituV2/AvisPdf.do';
|
|
|
|
$post = array(
|
|
|
|
'siren'=>$siren,
|
|
|
|
'nic'=>$nic,
|
|
|
|
'bSubmit'=>'Avis+de+Situation'
|
|
|
|
);
|
|
|
|
$page = getUrl($url, $cookie, $post, $referer, false, 'avis-situation-sirene.insee.fr', '', AVIS_TIMEOUT);
|
|
|
|
$body = $page['body'];
|
|
|
|
$fp = @fopen($fichier, "w");
|
|
|
|
@fwrite($fp, $body);
|
|
|
|
@fclose($fp);
|
|
|
|
} // Fin format PDF
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$body = false;
|
|
|
|
}
|
|
|
|
return $body;
|
|
|
|
} // Fin erreur initialisation
|
|
|
|
} // Fin fichier disponible
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|