webservice/library/Metier/partenaires/classMSigVille.php
2012-07-17 06:22:32 +00:00

244 lines
8.5 KiB
PHP

<?php
ini_set('soap.wsdl_cache_enabled', 0);
class AmaSoapClient extends SoapClient {
function __doRequest($request, $location, $action, $version) {
/* $request = strtr($request, array('<ns1:'=>'<ama:',
'</ns1:'=>'</ama:',
// '<param0 xsi:type="xsd:string">'=>'',
'xmlns:ns1="http://www.amabis.com/ama.xsd"'=>'xmlns:ama="http://www.amabis.com/ama.xsd"',
// '</param0>'=>'',
// '&lt;'=>'<',
// '&gt;'=>'>',
)
);*/
return parent::__doRequest($request, $location, $action, $version);
}
}
class classMSigVille {
private $client;
private $url='http://sig.ville.gouv.fr/recherche-adresses-zus-zfu-quartiers-des-cucs';
private $referer='';
private $codeRetour;
private $page;
private $body;
private $cookie='';
private $timeout=5;
private $duree=false;
function __construct() {
if ($this->cookie=='') {
$tdeb=microtime(1);
$this->page=getUrl($this->url, $this->cookie, '', $this->referer, false, 'sig.ville.gouv.fr', '', $this->timeout);
$this->duree=round(microtime(1)-$tdeb,3);
$this->referer=$this->url;
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$this->header=$page['header'];
$this->cookie=$this->header['Cookie'];
if ($this->codeRetour<>200) return false;
}
}
function getZonage($adrNum, $adrIndRep, $adrTypeVoie, $adrLibVoie, $cp, $ville='', $codeRivoli='', $rnvp=false, $raisonSociale='TEST', $debug=false) {
if ($this->cookie<>'') {
$tdeb=microtime(1);
$post=array('insee_com'=>'01053',
'code_postal'=>'01000',
'nom_commune'=>'Bourg-en-Bresse',
'num_adresse'=>'8',
'id_voie'=>28,
'nom_voie'=>'RUE+DES+BLANCHISSERIES',
'x'=>33,
'y'=>19,
);
$this->page=getUrl($this->url, $this->cookie, $post, $this->referer, false, 'sig.ville.gouv.fr', '', $this->timeout);
$this->duree=round(microtime(1)-$tdeb,3);
$this->referer=$this->url;
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$this->header=$page['header'];
$this->cookie=$this->header['Cookie'];
if ($this->codeRetour<>200) return false;
}
$tabRep=array();
if (!$rnvp) {
if ($cp<10000) $cp='0'.$cp;
$dep2=substr($cp,0,2)*1;
$dep3=substr($cp,0,3)*1;
switch ($dep2) {
case 0:
case 5:
case 9:
case 15:
case 19:
case 23:
case 32:
case 46:
case 48:
case 82:
case 97: // DOM
case 98: // TOM
case 99: // Etranger
return $tabRep;
break;
default:
//if ($dep3==975) return $tabRep;
break;
}
}
$iDb=new WDB();
$adresse=addslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoie $adrLibVoie")));
$ville=addslashes($ville);
$ret=$iDb->select( 'zonage', 'zus, zru, zfu, cucs', "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'",false, MYSQL_ASSOC);
if (count($ret)>0) {
$zones=$ret[0];
$tabRep['ZUS']=$tabRep['ZFU']=$tabRep['ZRU']=$tabRep['CUCS']='NON';
if (trim($zones['zus'])<>'') {
if (trim($zones['zus'])=='NSP') $tabRep['ZUS']='NSP';
else $tabRep['ZUS']='OUI';
$tabRep['NZUS']=$zones['zus'];
}
if (trim($zones['zru'])<>'') {
if (trim($zones['zru'])=='NSP') $tabRep['ZRU']='NSP';
else $tabRep['ZRU']='OUI';
$tabRep['NZRU']=$zones['zru'];
}
if (trim($zones['zfu'])<>'') {
if (trim($zones['zfu'])=='NSP') $tabRep['ZFU']='NSP';
else $tabRep['ZFU']='OUI';
$tabRep['NZFU']=$zones['zfu'];
}
if (trim($zones['cucs'])<>'') {
if (trim($zones['cucs'])=='NSP') $tabRep['CUCS']='NSP';
else $tabRep['CUCS']='OUI';
$tabRep['NCUCS']=$zones['cucs'];
}
//return $tabRep;
} else {
try {
if (trim($raisonSociale)=='') $raisonSociale='TEST'; // Le RNVP ne fonctionne pas sans la Raison Sociale qui est la 1ère ligne d'adresse
$rep=$this->client->zonage( new SoapParam(strtr("$raisonSociale:$adresse:$cp:$ville",
'¿°ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??',
' aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr'),'adresse'),
new SoapParam(':','separateur'),
new SoapParam('type=M','options')
);
/*$rep=$this->client->zonage( "<adresse></adresse>".
"<separateur>:</separateur>".
"<options>type=M</options>");*/
/** Découpage des ZFU, CUCS etcs...
**/
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s').' - '.implode("\n", $rep)."\n============================================================================\n");
fclose($fp);
$tabZones=explode(',',$rep['zonage']); // ZUS=OUI,NZUS=1127020,ZFU=OUI,NZFU=11270ZF,CUCS=OUI,NCUCS=1127020
foreach ($tabZones as $zone) {
$tabTmp=explode('=',$zone);
if (trim($tabTmp[0])<>'')
$tabRep[$tabTmp[0]]=$tabTmp[1];
}
if ($tabRep['ZUS']=='NSP') $tabRep['NZUS']='NSP';
if ($tabRep['ZRU']=='NSP') $tabRep['NZRU']='NSP';
if ($tabRep['ZFU']=='NSP') $tabRep['NZFU']='NSP';
if ($tabRep['CUCS']=='NSP') $tabRep['NCUCS']='NSP';
$adresse=stripslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoie $adrLibVoie")));
$ville=stripslashes($ville);
$tabInsert=array( 'address'=>$adresse,
'adr_cp'=>$cp,
'adr_ville'=>$ville,
'zus'=>$tabRep['NZUS'],
'zru'=>$tabRep['NZRU'],
'zfu'=>$tabRep['NZFU'],
'cucs'=>$tabRep['NCUCS'],
'adrNum'=>$adrNum,
'adrIndRep'=>$adrIndRep,
'adrTypeVoie'=>$adrTypeVoie,
'adrLibVoie'=>$adrLibVoie,
'rivoli'=>$codeRivoli,
);
$iDb->insert('zonage', $tabInsert);
/** Autres Informations de la RNVP
**/
if ($rnvp || $debug) {
$tabRepTmp=array();
$tabZones=explode(',',$rep['objdesc']);
foreach ($tabZones as $zone) {
$tabTmp=explode('=',$zone);
if (trim($tabTmp[0])<>'')
$tabRepTmp[$tabTmp[0]]=$tabTmp[1];
}
if (!$debug) {
$tabRep['ADR1']=@$tabRepTmp['ADR1'];
$tabRep['ADR2']=@$tabRepTmp['ADR2'];
$tabRep['ADR3']=@$tabRepTmp['ADR3'];
$tabRep['ADR4']=@$tabRepTmp['ADR4'];
$tabRep['ADR5']=@$tabRepTmp['ADR5'];
$tabRep['ADR6']=@$tabRepTmp['ADR6'];
$tabRep['ADR7']=@$tabRepTmp['ADR7'];
} else {
$tabRep=array_merge($tabRep, $tabRepTmp);
}
}
} catch (SoapFault $fault) {
echo 'ERREUR SOAP :'.EOL;
print_r($fault);
echo $this->client->__getLastRequest()."\n";
echo $this->client->__getLastResponse()."\n";
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s').' - ERREUR SOAP : Requete = '.$this->client->__getLastRequest()."\n Reponse = ".$this->client->__getLastResponse()."\n============================================================================\n");
fclose($fp);
}
//return $tabRep;
}
$codeInsee=substr($codeRivoli,0,5);
$ret=$iDb->select( 'zonageInsee', 'typeZone, arreteDate, decretDate, decretNum, decretModifieDate, decretModifieNum, dateDebut, dateFin', "codeInsee='$codeInsee'",false, MYSQL_ASSOC);
$tabRep['ZRR']=$tabRep['AFR']='NON';
foreach ($ret as $zones)
switch ($zones['typeZone']) {
case 'ZRR': $tabRep['ZRR']='OUI'; $tabRep['NZRR']=$codeInsee; break;
case 'ZAFR': $tabRep['AFR']='OUI'; $tabRep['NAFR']=$codeInsee; break;
default: break;
}
return $tabRep;
}
function searchByTelFax($tel) {
return $this->getTelFax('','','','',$tel);
}
function getTelFax($nom, $cp, $ville='', $prenom='', $tel='') {
if (trim($tel)<>'')
$query="<telep>$tel</telep><scoremini>10</scoremini><distinction>30</distinction>";
elseif (trim($prenom)=='')
$query="<rs>$nom</rs><cpville>$cp $ville</cpville><scoremini>90</scoremini><distinction>30</distinction>";
else
$query="<nom>$nom</nom><prenom>$prenom</prenom><cpville>$cp $ville</cpville><scoremini>90</scoremini><distinction>30</distinction>";
$rep=$this->client->rechtel($query);
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s')." - $query - ".implode("\n", $rep)."\n============================================================================\n");
fwrite($fp, "Requête : ".$this->client->__getLastRequest()."\n");
fwrite($fp, "Réponse : ".$this->client->__getLastResponse()."\n");
fclose($fp);
}
}
?>