partGetSession(); $this->partConnection(); } function __destruct() { $this->partSaveSession(); } function getInfosDisponbiles($siren) { $this->siren=$siren; $this->partConnection(); return $this->partVitrine(true); } private function partConnection() { if (!$this->wrncsrv2 || time()>$this->timeOut) { $this->timeOut=time()+900; $this->url=$this->urlRacine.'/index.ow'; $page=getUrl($this->url, '', '', $this->urlRacine, false, 'www.euridile.com'); $this->referer=$this->url; $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; //echo date('Y/m/d - H:i:s') ." - Initialisation URL = $this->url (Code retour = $this->codeRetour)
".EOL; $fp=fopen('./euridile_connexion1.log', 'w'); fwrite($fp,print_r($page,true)); fclose($fp); if (preg_match('//i', $this->body, $matches)) $this->url=$this->urlRacine.'/'.$matches[1]; else debugLog('E',"Erreur de communication - Redirection impossible sur ".$this->url,__LINE__,__FILE__,__FUNCTION__,__CLASS__); debugLog('I','Redirection trouvée sur la page '.$this->url,__LINE__,__FILE__,__FUNCTION__,__CLASS__); if (preg_match('/\.ow\?WRNCSRV2=(.*)$/i', $matches[1], $matches)) { $this->wrncsrv2=$matches[1]; debugLog('I','Session partenaire WRNCSRV2='.$this->wrncsrv2,__LINE__,__FILE__,__FUNCTION__,__CLASS__); } else debugLog('E','Impossible d\'identifier le numéro de session partenaire',__LINE__,__FILE__,__FUNCTION__,__CLASS__); $page=getUrl($this->url, '', '',$this->referer, false, 'www.euridile.com'); $this->referer=$this->url; $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; debugLog('D',"Page d'accueil URL = $this->url (Code retour = $this->codeRetour)",__LINE__,__FILE__,__FUNCTION__,__CLASS__); $fp=fopen('./euridile_connexion2.log', 'w'); fwrite($fp,print_r($page,true)); fclose($fp); if (preg_match('/
body, $matches)) { $postData=array('IDENT'=>'OK', 'MDP'=>'3180', 'cliref'=>'K5K3X5', 'PASS'=>'3180', 'WRNCSRV2'=>$this->wrncsrv2); /** @todo Fair une fonction qui gère les URL commençant par ./ ou ../ ou / afin de pouvoir les concatener **/ $this->url=$this->urlRacine.str_replace('..','',$matches[1]); debugLog('D',"Authentification possible vers $this->url",__LINE__,__FILE__,__FUNCTION__,__CLASS__); } else debugLog('E',"Authentification impossible car formulaire indisponible",__LINE__,__FILE__,__FUNCTION__,__CLASS__); sleep(1); $page=getUrl($this->url,'', $postData, $this->referer, false, 'www.euridile.com'); $this->referer=$this->url; $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; //echo date('Y/m/d - H:i:s') ." - Après authentification = $this->url (Code retour = $this->codeRetour)
".EOL; $fp=fopen('./euridile_connexion3.log', 'w'); fwrite($fp,print_r($page,true)); fclose($fp); if(preg_match('/\/'.$this->weur.'\/iden_evaluation_type_(.*)/i', $this->body, $matches)) { $tabTmp=explode('"', $matches[0]); $this->url=$this->urlRacine.$tabTmp[0]; debugLog('D',"Page de recherche recherche trouvée = $this->url>",__LINE__,__FILE__,__FUNCTION__,__CLASS__); } else debugLog('E',"Erreur de communication - Recherche introuvable !",__LINE__,__FILE__,__FUNCTION__,__CLASS__); $this->curPage='recherche'; } //else echo date('Y/m/d - H:i:s') ." - Deja connecte !
".EOL; return true; } private function partIdentite() { if ($this->curPage<>'vitrine') $this->partVitrine(); $iDb=new WDB('jo'); $ret=$iDb->select( 'rncs_entrep', 'siren, rcs, nom, adresse1, adresse2, adresse3, cp, ville, naiss_date, naiss_lieu, sexe, enseigne, sigle, '. 'fj_lib, naf_code, naf_lib, date_crea, date_imma, greffe, num_gestion, capital_mnt, capital_dev, nationalite, '. 'nb_etab, indRadiation, date_radiation, indProcol, dateUpdate, procedures, dirigeants, etablissements', "siren=$this->siren ORDER BY dateUpdate DESC LIMIT 0,1", false, MYSQL_ASSOC); if (count($ret)) { /** On vérifie qu'aucune annonce n'a été publié depuis au bodacc **/ $tabRet=$ret[0]; $ret=$iDb->select( 'bodacc_detail', 'count(*)', "siren=$this->siren AND Bodacc_Date_Parution>='".$tabRet['dateUpdate']."'"); if ($ret[0][0]==0) { $tabRet['procedures']=unserialize($tabRet['procedures']); $tabRet['dirigeants']=unserialize($tabRet['dirigeants']); $tabRet['etablissements']=unserialize($tabRet['etablissements']); return $tabRet; } } $url=$this->urlRacine.'/'.$this->weur.'/paie_abonnes_livraison_directe_informations.ow?flag_type_acces_direct_infos=FIC&WRNCSRV2='.$this->wrncsrv2; $page=getUrl($url, '', '', $this->referer, false, 'www.euridile.com'); $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; //echo date('Y/m/d - H:i:s') ." - Fiche d'identité = $url (Code retour = $this->codeRetour)
".EOL; //$this->curPage='vitrine'; $tabRet=array(); /**@todo Traiter le cas données provisoires : En cours d'immatriculation, données provisoiresNombre d'établissements : */ // Identité $tabRet['siren']=$this->siren; $tabRet['codeRetour']=$this->codeRetour; $tabRet['rcs']=@getTextInHtml($this->body, 'FACE="ARIAL,HELVETICA" SIZE=2>RCS : ', '',''); $strTmp=@getTextInHtml($this->body, 'FACE="ARIAL,HELVETICA" SIZE=2>RCS : ', 'FACE="ARIAL,HELVETICA" SIZE=2>', '', $strTmp); $tabRet['nom']=strip_tags($tabTmp[0]); // ... adresse for ($i=1; $i<5; $i++) { if (strpos($tabTmp[$i], 'Nom commercial - Enseigne :')===false && strpos($tabTmp[$i], 'Sigle :')===false ) { $ligne=trim(strip_tags($tabTmp[$i])); if (preg_match("/^([0-9]{5,5})([\D]*)/i", $ligne, $matches)) { $tabRet['cp']=trim($matches[1]); $tabRet['ville']=trim($matches[2]); break; } else $tabRet['adresse'.$i]=$ligne; } } $pp_nais=trim(strip_tags(@getTextInHtml($this->body, 'FACE=\'ARIAL,HELVETICA\' SIZE=2>Date et lieu de naissance :', '',''))); $tabTmp=explode(' à ', $pp_nais); $tabRet['naiss_date']=trim(str_replace('Né(e) le ', '', strip_tags($tabTmp[0]))); $tabRet['naiss_lieu']=trim(strip_tags($tabTmp[1])); $tabRet['sexe']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=\'ARIAL,HELVETICA\' SIZE=2>Sexe :', '',''))); $tabRet['enseigne']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Nom commercial - Enseigne :', '',''))); $tabRet['sigle']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Sigle :', '',''))); $tabRet['fj_lib']=@getTextInHtml($this->body, 'FACE=\'ARIAL,HELVETICA\' SIZE=2>Forme juridique :', '',''); $strTmp=@getTextInHtml($this->body, 'FACE=\'ARIAL,HELVETICA\' SIZE=2>Activité :', '',''); $tabTmp=explode(' - ', $strTmp); $tabRet['naf_code']=$tabTmp[0]; $tabRet['naf_lib']=$tabTmp[1]; $tabRet['date_crea']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Date de création :', '',''))); $tabRet['date_imma']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Date d\'immatriculation :', '',''))); $tabRet['greffe']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Greffe :', '',''))); $tabRet['num_gestion']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>N°de gestion :', '',''))); $strTmp=@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Capital :', '',''); if (preg_match('/([0-9\.,\s]*)([\D]*)/i', $strTmp, $matches)) { $tabRet['capital_mnt']=trim(str_replace(' ','',str_replace(',','.',$matches[1]))); $tabRet['capital_dev']=$matches[2]; } else { $tabRet['capital_mnt']=0; $tabRet['capital_dev']=''; } $tabRet['nationalite']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Nationalité :', '',''))); $tabRet['nb_etab']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Nombre d\'établissements :', '',''))); if (strpos($this->body,'FACE=ARIAL SIZE=2>Radiation')>0) { $tabRet['indRadiation']=true; $tabRet['date_radiation']=trim(strip_tags(@getTextInHtml($this->body, 'FACE=ARIAL SIZE=2>Entreprise radiée le :', '',''))); } else $tabRet['indRadiation']=false; // Procédures collectives if (strpos($this->body,'FACE=ARIAL SIZE=2>Les procédures collectives')>0) { $tabRet['indProcol']=true; $strTmp=@getTextInHtml($this->body, 'Les procédures collectives', "", ''); $tabTmp=explode("", $strTmp); foreach ($tabTmp as $nproc=>$proc) { $tabTmp2=explode('', $proc); $tabTmp3=explode(' du ', $tabTmp2[0]); $tabTmp2=explode('', $proc); $tabInter=array(); for($nInter=1; isset($tabTmp2[$nInter]); $nInter++) { $tabTmp4=explode('', $tabTmp2[$nInter]); $tabInter[]=array( 'type'=>trim(strip_tags($tabTmp4[0])), 'nom'=>trim(str_replace(' ','',strip_tags($tabTmp4[1]))), 'adresse'=>trim(str_replace(' ','',strip_tags($tabTmp4[2]))), 'cpVille'=>trim(str_replace(' ','',strip_tags($tabTmp4[3])))); } $tabRet['procedures'][$nproc]=array('type'=>trim(strip_tags($tabTmp3[0])), 'date'=>trim(strip_tags($tabTmp3[1])), 'intervenant'=>$tabInter); } } else $tabRet['indProcol']=false; // Dirigeants $strTmp=@getTextInHtml($this->body, 'Les dirigeants', "",''); $tabTmp=explode("", $strTmp); foreach ($tabTmp as $ndir=>$dir) { $tabTmp2=explode('', $dir); $tabTmp3=explode(' ', $tabTmp2[1]); $nom=trim(strip_tags($tabTmp3[0])); $prenom=trim(strip_tags($tabTmp3[1])); $naiss=trim(strip_tags($tabTmp2[3])); if (strpos($naiss, 'Né(e) le')===false) { $fonction=$naiss; } else { $tabTmp3=explode(' à ', $naiss); $naiss_date=trim(str_replace('Né(e) le ', '', strip_tags($tabTmp3[0]))); $naiss=trim(strip_tags($tabTmp3[1])); $tabTmp3=explode('(', $naiss); $naiss_ville=trim(strip_tags($tabTmp3[0])); $naiss_depPays=trim(str_replace(')','', strip_tags($tabTmp3[1]))); $fonction=trim(strip_tags($tabTmp2[5])); } $tabTmp=explode(' née ', $prenom); $prenom=$tabTmp[0]; $naiss_nom=$tabTmp[1]; $tabRet['dirigeants'][$ndir]=array( 'nom'=>$nom, 'prenom'=>$prenom, 'naiss_nom'=>$naiss_nom, 'naiss_date'=>$naiss_date, 'naiss_ville'=>$naiss_ville, 'naiss_depPays'=>$naiss_depPays, 'fonction'=>$fonction); } // Dirigeants - Administrateurs $strTmp=trim(@getTextInHtml($this->body, 'Les administrateurs', "",'')); if ($strTmp<>'') { $tabTmp=explode("", $strTmp); foreach ($tabTmp as $nadm=>$dir) { $tabTmp2=explode('', $dir); $tabTmp3=explode(' ', $tabTmp2[1]); $nom=trim(strip_tags($tabTmp3[0])); $prenom=trim(strip_tags($tabTmp3[1])); $naiss=trim(strip_tags($tabTmp2[3])); if (strpos($naiss, 'Né(e) le')===false) { $naiss_date=$naiss_ville=$naiss_depPays=''; $fonction=$naiss; } else { $tabTmp3=explode(' à ', $naiss); $naiss_date=trim(str_replace('Né(e) le ', '', strip_tags($tabTmp3[0]))); $naiss=trim(strip_tags($tabTmp3[1])); $tabTmp3=explode('(', $naiss); $naiss_ville=trim(strip_tags($tabTmp3[0])); $naiss_depPays=trim(str_replace(')','', strip_tags($tabTmp3[1]))); $fonction=trim(strip_tags($tabTmp2[5])); } $tabTmp=explode(' née ', $prenom); $prenom=$tabTmp[0]; $naiss_nom=$tabTmp[1]; $tabRet['dirigeants'][$nadm+$ndir+1]=array( 'nom'=>$nom, 'prenom'=>$prenom, 'naiss_nom'=>$naiss_nom, 'naiss_date'=>$naiss_date, 'naiss_ville'=>$naiss_ville, 'naiss_depPays'=>$naiss_depPays, 'fonction'=>$fonction); } } // Etablissements $strTmp=@getTextInHtml($this->body, 'Les établissements', "",''); $tabTmp=explode("", $strTmp); foreach ($tabTmp as $netab=>$dir) { $cp=$ville=$ensEtab=''; $j=0; $tabTmp2=explode('', $dir); for($i=1; $i<=9; $i=$i+2) { $next=$i+2; $strTmp=trim(strip_tags($tabTmp2[$i])); if (preg_match("/^([0-9]{5,5})([\D]*)/i", $strTmp, $matches)) { $adresse[$j]=''; $cp=trim($matches[1]); $ville=trim($matches[2]); break; } else $adresse[$j]=$strTmp; $j++; } /** Gestion des cas où la 1ère ligne d'adresse contient l'enseigne de l'établissement */ if (strtoupper($adresse[0])==strtoupper($tabRet['enseigne'])) { $ensEtab=$adresse[0]; array_shift($adresse); } $strTmp=trim(strip_tags($tabTmp2[$next])); $tabTmp3=explode(' - ', $strTmp); $tabRet['etablissements'][$netab]=array( 'enseigne'=>$ensEtab, 'adresse1'=>$adresse[0], 'adresse2'=>$adresse[1], 'adresse3'=>$adresse[2], 'cp'=>$cp, 'ville'=>$ville, 'naf_code'=>$tabTmp3[0], 'naf_lib'=>$tabTmp3[1]); } $fp=fopen('./euridile_identite.log', 'w'); fwrite($fp,print_r($page,true)); fclose($fp); $tabInsert=$tabRet; $tabInsert['procedures']=serialize($tabRet['procedures']); $tabInsert['dirigeants']=serialize($tabRet['dirigeants']); $tabInsert['etablissements']=serialize($tabRet['etablissements']); $iDb->insert( 'rncs_entrep', $tabInsert); return $tabRet; } private function partSaveSession() { $fp=fopen('/tmp/php_rncs_session.id', 'w'); fwrite($fp,$this->wrncsrv2.'^'.$this->timeOut.'^'.$this->curPage.'^'.$this->siren.'^'.$this->url.'^'.$this->referer); fclose($fp); } private function partGetSession() { $strTmp=@file_get_contents('/tmp/php_rncs_session.id'); if ($strTmp) { $tabTmp=explode('^', $strTmp); $this->wrncsrv2=$tabTmp[0]; $this->timeOut=$tabTmp[1]; $this->curPage=$tabTmp[2]; $this->siren=$tabTmp[3]; $this->url=$tabTmp[4]; $this->referer=$tabTmp[5]; } else $this->timeOut=0; } private function logEuridileError($message) { $fp=fopen('./euridile_error.log', 'w'); fwrite($fp,date('Y/m/d H:i:s')." - Erreur : $message (".$this->wrncsrv2.'^'.$this->timeOut.'^'.$this->curPage.'^'.$this->siren.'^'.$this->url.'^'.$this->referer.')'.EOL); fwrite($fp,$this->body.EOL.'-------------------------------------------------------------------------------------'.EOL); fclose($fp); } } ?>