'.$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){ $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.=''.$tabMil[0].''; //$req.=''.$tabMil[1].''; $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){ $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/*$index*/] = 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, ); } } $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){ $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[''.$type_comptes.'-'.$date_cloture]=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, ); } $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; } $emailTo = 'contact@scores-decisions.com'; mail( $emailTo, $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)); 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); } } } ?>