'.$req.'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_COOKIEFILE,TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$output = curl_exec($ch);
$xml = str_replace("", '', $output);
$xml = str_replace('','', $xml);
$firephp->log($xml,'XML');
/* Erreur violation encoding
$client2 = new SoapClient(null, array( 'location' => INFOGREFFE_WS_URL,
'uri' => INFOGREFFE_WS_URI,
'soap_version' => SOAP_1_1,
'trace' => 1,
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
));
try {
if (!file_exists( PATH_DATA.'/pdf/acte-'.$siren.'-'.$option.'.pdf'))
{
$fp=@fopen( PATH_DATA.'/infogreffe/xml/' . $fichier.'.query' , 'w');
@fwrite($fp, $req);
@fclose($fp);
$req=utf8_encode($req);
$firephp->log($req, 'XML');
$O=$client2->getProduitsWebServicesXML($req);
$xml=implode('', (array)$O);
$firephp->log($xml,'XML');
}
}catch (SoapFault $soapFault) {
$success=false;
$firephp->log($soapFault,'Fault');
$firephp->log($client2->__getLastRequest(),'Infogreffe Request');
$firephp->log($client2->__getLastResponse(),'Infogreffe Response');
$response=$client2->__getLastResponse();
$response=str_replace("",'', $response);
$xml=str_replace('','', $response);
}
*/
return $xml;
}
/**
* Générer le xml pour la requete infogreffe.
* @param string $siren
* Le SIREN à
* @param string $idCommande
* L'identifiant pour la commande
* @param string $type
* Le type de document demandé
* @param string $vecteur
* Le vecteur de diffusion
* @param string $option
*
* @return string
* Retourne la chaine xml de requete.
*/
function requeteInfogreffe($siren, $idCommande, $type, $vecteur, $option){
global $firephp;
$firephp->log($siren, 'siren' );
$firephp->log($idCommande, 'idCommande');
$firephp->log($type, 'type');
$firephp->log($vecteur, 'vecteur');
$firephp->log($option, 'option');
$req = ''.
''.
''.INFOGREFFE_WS_USER.''.//85009006
''.INFOGREFFE_WS_PASS.''.//
'G'.$idCommande.''.
''.
'A'.
'IC'.
'C'.
''.$type.''.// KB=Kbis, HQ=Histo, ST=Statut, AC=Acte, LE=Liste étab
'S'.
'WS'.
'';
if ($type=='AC' && $option=='' && $vecteur=='XL')
$req.= ''.
'';
$req.= ''.
''.
''.
''.
''.
''.$siren.'';
if ( ($type=='BS' || $type=='BI') && $option<>'' ) {
$tabRefActe = explode('-', $option);
$tabMil = explode('_', $tabRefActe[0]);
$req.= ''.$tabRefActe[2].''.
''.$tabRefActe[3].''.
''.$tabRefActe[4].''.
''.$tabRefActe[5].''.
''.$tabRefActe[6].''.
''.WDate::dateT('Ymd','d/m/Y', $tabRefActe[1]).'';
}elseif ( $type=='AC' && $option<>'' ) {
$tabRefActe = explode('-', $option);
$req.= ''.$tabRefActe[2].''.
''.$tabRefActe[3].''.
''.$tabRefActe[4].''.
''.$tabRefActe[5].''.
''.$tabRefActe[6].''.
''.
''.
'';
/* $optionUrl=$bilan['millesime'].'_'.$bilan['type_comptes'].'-'.$dateRef.'-'.$bilan['num_gest_greffe'].'-'.$bilan['num_gest_millesime'].'-'.$bilan['num_gest_statut'].'-'.$bilan['num_gest_chrono'].'-'.$bilan['num_depot'];*/
}
$req.='';
return $req;
}
/**
* Parcours le document xml renvoyé par infogreffe .
* @param string $file
* Le chemin complet vers le fichier à analyser.
* @return array
* Retourne un tableau structuré des actes, etc,...
*/
function xmlArrayActes($file)
{
global $firephp;
$vecteurTinit = false;
$dom_object = new DomDocument2();
//TODO : Vérfier que le fichier existe
$dom_object->load($file);
$tabActes=array();
// create DOMXPath object with our DOMObject
$xpath = new Domxpath($dom_object);
$result = $xpath->query("//liste_depot_acte/depot_acte/.");
foreach ($result as $annonce) {
// N° Gestion
$title = $xpath->query ("num_gest/greffe", $annonce);
$num_gest_greffe=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_millesime", $annonce);
$num_gest_millesime=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_statut", $annonce);
$num_gest_statut=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_chrono", $annonce);
$num_gest_chrono=$title->item(0)->nodeValue;
// Siren
$title = $xpath->query ("num_siren", $annonce);
$num_siren = $title->item(0)->nodeValue;
// N° Dépôt
$title = $xpath->query ("num_depot", $annonce);
$num_depot = $title->item(0)->nodeValue;
// Date Dépôt
$title = $xpath->query ("date_depot", $annonce);
$date_depot = $title->item(0)->nodeValue;
// Actes
$actes = $xpath->query("acte/.", $annonce);
$nbVecteurT = $nbActes = 0;
foreach ($actes as $acte) {
$nbActes++;
// Date
$title = $xpath->query ("date_acte", $acte);
$date_acte=$title->item(0)->nodeValue;
// N°
$title = $xpath->query ("num_acte", $acte);
$num_acte=$title->item(0)->nodeValue;
// Type
$title = $xpath->query ("type_acte", $acte);
$type_acte=$title->item(0)->nodeValue;
// Type lib
$title = $xpath->query ("type_acte_libelle", $acte);
$type_acte_libelle=$title->item(0)->nodeValue;
// Nb Pages
$title = $xpath->query ("nbpages_acte", $acte);
$nbpages_acte=$title->item(0)->nodeValue;
// decision/nature
$title = $xpath->query ("decision/nature", $acte);
$decision_nature=$title->item(0)->nodeValue;
// decision/libelle
$title = $xpath->query ("decision/libelle", $acte);
$decision_libelle=$title->item(0)->nodeValue;
// mode_diffusion
$vecteurT = $vecteurC = false;
$vecteurs = $xpath->query("mode_diffusion/.", $acte);
foreach ($vecteurs as $vecteur) {
$title = $xpath->query ("mode[@type='T']", $vecteur);
if ($title->length==1) {
$vecteurT = true;
$vecteurTinit = true;
$nbVecteurT++;
}
$title = $xpath->query ("mode[@type='C']", $vecteur);
if ($title->length==1) $vecteurC = true;
}
if ($date_acte=='') $date=$date_depot; else $date=$date_acte;
// $index=0;
// while (isset($tabActes[$date.'.'.$index])) $index++;
$tabActes[''.$date.'-'.$num_depot.'-'.$num_acte.'-'.$type_acte] = array(
'type'=>$type_acte_libelle,
'decisions'=>$decision_libelle,
'depot_num'=>$num_depot,
'depot_date'=>$date_depot,
'num_gest_greffe'=>$num_gest_greffe,
'num_gest_millesime'=>$num_gest_millesime,
'num_gest_statut'=>$num_gest_statut,
'num_gest_chrono'=>$num_gest_chrono,
'num_depot'=>$num_depot,
'num_acte'=>$num_acte,
'type_acte'=>$type_acte,
'vecteurT'=>$vecteurT,
'vecteurC'=>$vecteurC,
);
}
}
$firephp->log($tabActes, 'tabActes');
$return = array( 'Actes' => $tabActes, 'vecteurTinit' => $vecteurTinit, 'nbVecteurT' => $nbVecteurT, 'nbActes' => $nbActes );
return $return;
}
/**
* Parcours le document xml renvoyé par infogreffe .
* @param string $file
* Le chemin complet vers le fichier à analyser.
* @param string $query
* La requete xpath de départ pour analyser le document
* @return array
* Retourne un tableau structuré des bilans, etc,...
*/
function xmlArrayBilans($file, $query)
{
global $firephp;
$dom_object = new DomDocument2();
$dom_object->load($file);
$tabActes=array();
$xpath = new Domxpath($dom_object);
$result = $xpath->query($query);
foreach ($result as $annonce) {
// N° Gestion
$title = $xpath->query ("num_gest/greffe", $annonce);
$num_gest_greffe=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_millesime", $annonce);
$num_gest_millesime=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_statut", $annonce);
$num_gest_statut=$title->item(0)->nodeValue;
$title = $xpath->query ("num_gest/dossier_chrono", $annonce);
$num_gest_chrono=$title->item(0)->nodeValue;
// Siren
$title = $xpath->query ("num_siren", $annonce);
$num_siren=$title->item(0)->nodeValue;
// N° Dépôt
$title = $xpath->query ("num_depot", $annonce);
$num_depot=$title->item(0)->nodeValue;
// Date clôture
$title = $xpath->query ('date_cloture', $annonce); // 2005-12-31
$date_cloture=$title->item(0)->nodeValue;
// liasse
$title = $xpath->query ('liasse', $annonce); // 2033
$liasse=$title->item(0)->nodeValue;
// type de comptes
$title = $xpath->query ('type_comptes', $annonce); // sociaux
$type_comptes=$title->item(0)->nodeValue;
// millesime
$title = $xpath->query ('millesime', $annonce); // 2005
$millesime=$title->item(0)->nodeValue;
// url_acces
$title = $xpath->query ('url_acces', $annonce);
$url_acces=$title->item(0)->nodeValue;
if (substr($url_acces,0,5)=='null/') $url_acces='http://webservices.infogreffe.fr/'.substr($url_acces,5,strlen($url_acces)-5);
// mode_diffusion
$vecteurT = $vecteurC = false;
$vecteurs = $xpath->query("mode_diffusion/.", $annonce);
foreach ($vecteurs as $vecteur) {
$title = $xpath->query ("mode[@type='T']", $vecteur);
if ($title->length==1) $vecteurT=true;
$title = $xpath->query ("mode[@type='C']", $vecteur);
if ($title->length==1) $vecteurC=true;
}
$tabActes[$millesime.'-'.$date_cloture.'-'.$type_comptes]=array(
'num_gest_greffe'=>$num_gest_greffe,
'num_gest_millesime'=>$num_gest_millesime,
'num_gest_statut'=>$num_gest_statut,
'num_gest_chrono'=>$num_gest_chrono,
'num_depot'=>$num_depot,
'liasse'=>$liasse,
'millesime'=>$millesime,
'type_comptes'=>$type_comptes,
'date_cloture'=>$date_cloture,
'url_acces'=>$url_acces,
'vecteurT'=>$vecteurT,
'vecteurC'=>$vecteurC,
);
}
$firephp->log($tabActes, 'tabActes');
$return = array( 'Actes' => $tabActes );
return $return;
}
/**
* Envoi un mail informant de la commande de pièce.
* @param string $email
* L'adresse email qui doit recevoir la pièce.
* @param string $siren
* Le siren de l'entité
* @param string $type
* Le type de demande (asso, greffe)
* @return array
* Retourne un tableau structuré des bilans, etc,...
*/
function mailCommande($email, $siren, $type){
//On vérifie l'email
if (preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#',$email)) {
//Suivant le type de commande
switch($type){
case 'asso':
$subject = "Commande de statuts associations pour $siren à ".$email;
break;
case 'greffe':
$subject = "Commande de pièces pour $siren à ".$email;
break;
}
require_once 'mail/mail.php';
sendMail(
$subject,
'REQUEST='.EOL.print_r($_REQUEST,true).'EOL'.
'SERVER='.EOL.print_r($_SERVER,true).'EOL'.
'SESSION='.EOL.print_r($_SESSION,true).'EOL'.
'ENV='.EOL.print_r($_ENV,true).'EOL'.
'tabInfo='.print_r($tabInfo,true),
//From
array(
'email' => 'contact@scores-decisions.com',
'name' => 'Contact',
),
//TO
array(
0 => array(
'email'=> 'contact@scores-decisions.com',
'name' => 'Contact'
)
)
);
return true;
}else{
return false;
}
}
class DomDocument2 extends DOMDocument {
function getValueFromTag($tagName) {
$items=$this->getElementsByTagName($tagName);
foreach ($items as $item) {
return utf8_decode($item->nodeValue);
}
}
}
?>