diff --git a/src/Metier/Partenaires/MIntersud.php b/src/Metier/Partenaires/MIntersud.php new file mode 100644 index 0000000..3d54a2c --- /dev/null +++ b/src/Metier/Partenaires/MIntersud.php @@ -0,0 +1,365 @@ +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(); + $ret=$iDb->select( 'jo.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( 'jo.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( 'jo.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); + } + +} + + + ?> \ No newline at end of file diff --git a/src/Scores/Exec/Ref.php b/src/Scores/Exec/Ref.php new file mode 100644 index 0000000..2ad5bd1 --- /dev/null +++ b/src/Scores/Exec/Ref.php @@ -0,0 +1,96 @@ +code = $code; + } + + /** + * Marqueur de démarrage + */ + public function start() + { + $data = array( + 'code' => $this->code, + 'dateStart' => date('YmdHis'), + ); + + $model = new Application_Model_ExecutionProcessOut(); + try { + $id = $model->insert($data); + } catch(Zend_Db_Exception $e) { + return null; + } + + return $id; + } + + /** + * Marqueur du nombre d'éléments à traiter + * @param int $id + * @param int $num + */ + public function total($id, $num) + { + $data = array('unitTotal' => $num); + $model = new Application_Model_ExecutionProcessOut(); + try { + $result = $model->update($data, 'id='.$id); + } catch(Zend_Db_Exception $e) { + return false; + } + + return $result; + } + + /** + * Marqueur increment + * @param int $id + * @param int $num + * @return boolean|int + */ + public function increment($id, $num) + { + $data = array( + 'unitExec' => $num, + 'updated' => date('YmdHis'), + ); + + $model = new Application_Model_ExecutionProcessOut(); + try { + $result = $model->update($data, 'id='.$id); + } catch(Zend_Db_Exception $e) { + return false; + } + + return $result; + } + + /** + * Marqueur de fin + * @param int $id + * @return boolean|int + */ + public function end($id) + { + $data = array( + 'dateEnd' => date('YmdHis'), + ); + + $model = new Application_Model_ExecutionProcessOut(); + try { + $result = $model->update($data, 'id='.$id); + } catch(Zend_Db_Exception $e) { + return false; + } + + return $result; + } +} \ No newline at end of file