Remove depencies of library/common/curl : getUrl

This commit is contained in:
Michael RICOIS 2013-10-30 21:19:27 +00:00
parent c8e2258ae2
commit 6e9f37e03a

View File

@ -10,7 +10,6 @@ class AvisSituation
public function __construct($siret)
{
require_once 'common/curl.php';
$c = Zend_Registry::get('config');
$this->pathAvisPdf = $c->profil->path->files;
$this->pathLog = realpath($c->profil->path->data).'/log';
@ -120,162 +119,174 @@ class AvisSituation
$nic=trim(substr($this->siret,9,5));
$fichier = $this->pathAvisPdf.'/avis-'.$siren.'-'.$nic.'-'.$date.'.pdf';
if ($format!='pdf') return 'Format pdf uniquement';
if ($force==0 && file_exists($fichier))
{
// On délivre l'avis en base
// On délivre l'avis en base
if ($force==0 && file_exists($fichier)) {
return file_get_contents($fichier);
}
else
{
/** Initialisation de la session sur le site de l'Insee **/
// On télécharge le fichier sur le site
else {
$body = false;
$cookie = false;
//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 = '';
$page = getUrl($url, $cookie, '', $referer, false, 'avis-situation-sirene.insee.fr', '', $this->timeout);
//Code en 4xx ou 5xx signifie une erreur du serveur
$codeN = floor($page['code']/100);
if($codeN==4 || $codeN==5)
{
try {
$client = new Zend_Http_Client($url);
$client->setCookieJar();
$response = $client->request('GET');
if ( $response->isSuccessful() ) {
$body = $response->getBody();
} else {
return false;
}
} catch (Zend_Http_Client_Exception $e) {
if (APPLICATION_ENV=='development') {
echo $e->getMessage();
}
return false;
}
else
{
$referer = $url;
$body = $page['body'];
$serviceDispo = true;
$cookie = $client->getCookieJar();
//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)));
if (preg_match("/<form name=\"demForm\" method=\"post\" action=\"\/avisitu\/IdentificationListeSiret.do/Uis", $body, $matches)) {
$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);
$dep=$depActif='';
if ($nic=='') $crit='S'; // l'établissement siège
else $crit=''; // établissement particulier, saisissez le NIC
$body = $page['body'];
$fp=@fopen($fichier, "a");
@fwrite($fp, $body);
@fclose($fp);
//Post du formulaire - Liste
$url = 'http://avis-situation-sirene.insee.fr/avisitu/IdentificationListeSiret.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'
);
try {
$client = new Zend_Http_Client($url);
$client->setCookieJar($cookie);
$client->setParameterPost($post);
$response = $client->request('POST');
if ( $response->isSuccessful() ) {
$body = $response->getBody();
} else {
return false;
}
} catch (Zend_Http_Client_Exception $e) {
if (APPLICATION_ENV=='development') {
echo $e->getMessage();
}
return false;
}
$cookie = $client->getCookieJar();
if (preg_match("/<h3>Fiche établissement<\/h3>/Uis", $body, $matches))//<li class="ongletActif">&eacute;tablissement</li>
if (preg_match("/<h3>Fiche établissement<\/h3>/Uis", $body, $matches))//<li class="ongletActif">&eacute;tablissement</li>
$tabInfos['fiche']='etab';
if (preg_match('/<div class="TitreGauche">(.*)<br\/>/Uis', $body, $matches)) {
$tabInfos['raiSoc']=trim($matches[1]);
}
if (preg_match("/Derni&egrave;re mise &agrave; 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&eacute;gorie d\'&eacute;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&#39;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";
$fp=@fopen($this->pathLog."/avis.csv", "a");
@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
if (preg_match('/<div class="TitreGauche">(.*)<br\/>/Uis', $body, $matches)) {
$tabInfos['raiSoc']=trim($matches[1]);
}
else
{
$body = false;
if (preg_match("/Derni&egrave;re mise &agrave; 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]);
}
return $body;
} // Fin erreur initialisation
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&eacute;gorie d\'&eacute;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&#39;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";
$fp=fopen($this->pathLog."/avis.csv", "a");
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)));
// Get format PDF
if ( $format == 'pdf' ) {
$referer = $url;
$url = 'http://avis-situation-sirene.insee.fr/avisitu/AvisPdf.do';
$post = array(
'siren' => $siren,
'nic' => $nic,
'bSubmit' => 'Avis+de+Situation'
);
try {
$client = new Zend_Http_Client($url);
$client->setCookieJar($cookie);
$client->setParameterPost($post);
$response = $client->request('POST');
if ( $response->isSuccessful() ) {
$body = $response->getBody();
file_put_contents($fichier, $body);
} else {
return false;
}
} catch (Zend_Http_Client_Exception $e) {
if (APPLICATION_ENV=='development') {
echo $e->getMessage();
}
return false;
}
$cookie = $client->getCookieJar();
} // Fin format PDF
}
return $body;
} // Fin fichier disponible
}
}
}