#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini [SIREN] Mise à jour des adresses de domiciliation. Options : -d Mode debug (Verbosité au maximum) -l Source 'Base Liens' -o Ordre inverse -2 2ème passe ";// -s:SSAAMMJJ Reprendre la mise à jour depuis le flux Insee du SSAAMMJJ $passe=1; $modeDebug=false; $base='Dir'; $orderBy='ORDER BY UID ASC'; $argv=$_SERVER['argv']; for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'd': $modeDebug=true; break; case 'l': $base='Act'; $iLien=new MLiens(0); break; case 'o': $orderBy='ORDER BY UID DESC'; break; case '2': $passe=2; break; // case 's': $jourFlux=substr($argv[$i],3,8); break; // case 'h': $histo=true; break; /* case 'j': $loadInpiLocal=false; break; case 'q': $loadActesDuJour=false; break; case 'b': $loadBilans=false; break; case 'i': $iReprise=substr($argv[$i],3); break;*/ case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break; } } //else $tabSiren[]=$argv[$i]; } $iDb=new WDB('tmp'); $iDb2=new WDB('tmp'); $iInsee=new MInsee(); echo date ('Y/m/d - H:i:s')." - Début du traitement WorldCheck '$base' en passe $passe...".EOL; if ($passe==1) { $nb=$iDb->select('worldcheck', 'UID, `LAST NAME` AS nom, `FIRST NAME` AS prenom, ALIASES, `ALTERNATIVE SPELLING` AS alterspel, CATEGORY, TITLE, `SUB-CATEGORY` AS subCat, POSITION, DOB, `PLACE OF BIRTH` AS ville', "1 AND CATEGORY IN('CRIME - FINANCIAL','CRIME - NARCOTICS','CRIME - ORGANIZED','CRIME - OTHER','CRIME - WAR','INDIVIDUAL','TERRORISM','BLACKLISTED','CORPORATE','EMBARGO','EMBARGO VESSEL','VESSEL','ORGANISATION') AND nb$base IS NULL AND checked$base=0 /* LIMIT 0,10*/ $orderBy", false, MYSQL_ASSOC, true); echo date('Y/m/d - H:i:s') ." - Il y a $nb UID WorldCheck à mettre à vérifier...".EOL; echo mysql_error().EOL; $i=0; //foreach ($AnnDb as $i=>$tabWorldC) { while($tabWorldC=$iDb->fetch(MYSQL_ASSOC)) { $i++; $uid=$tabWorldC['UID']; $nom=$tabWorldC['nom']; $prenom=$tabWorldC['prenom']; $alias=$tabWorldC['ALIASES']; $alter=$tabWorldC['alterspel']; $dnais=WDate::DateT('Y-m-d','d/m/Y',$tabWorldC['DOB']); $vnais='';//$tabWorldC['ville']; $strCat=$tabWorldC['CATEGORY'].' '.$tabWorldC['TITLE'].' '.$tabWorldC['subCat'].' '.$tabWorldC['POSITION']; echo "$i/$nb - Recherche de $nom, $prenom né le $dnais à $vnais ($strCat) : "; if ($base=='Dir') $tabDir=@$iInsee->rechercheDir($nom.' '.$alias.' '.$alter, $prenom, '', $dnais, $vnais, 0, 20, 200, false); elseif ($base=='Act') $tabDir=@$iLien->rechercheActionnaire($nom.' '.$prenom.' '.$alias.' '.$alter, '', 0, '', 0, 100, 0, 20, 200, false); else die('Source inconnue'.EOL); $nbRep=$tabDir['nbReponsesTotal']; $nbCrit=count($tabDir['criteres']); if ($nbRep==0) { echo "Pas de réponse".EOL; $iDb2->update('worldcheck', array("nb$base"=>0, "nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } if ($nbCrit<2) { echo "Pas assez précis".EOL; $iDb2->update('worldcheck', array("nb$base"=>'NULL',"nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } if ($nbRep>=200) { echo "Trop de résultat".EOL; $iDb2->update('worldcheck', array("nb$base"=>'NULL',"nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } $tabTrouve=$tabDir['reponses']; print_r($tabDir); $iDb2->update('worldcheck', array("nb$base"=>$nbRep, "nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); // BOUCLER SUR CHAQUE SIREN // EXTRAIRE LE NOM, LE CP/VILLE ET LA FJ/NAF DE LA SOCIETE // EXTRAIRE LES DIRIGEANTS // STOCKER EN BASE echo mysql_error().EOL; // die(); } } else { $nb=$iDb->select('worldcheck', 'UID, `LAST NAME` AS nom, `FIRST NAME` AS prenom, ALIASES, `ALTERNATIVE SPELLING` AS alterspel, CATEGORY, TITLE, `SUB-CATEGORY` AS subCat, POSITION, DOB, `PLACE OF BIRTH` AS ville', "1 AND CATEGORY IN('CRIME - FINANCIAL','CRIME - NARCOTICS','CRIME - ORGANIZED','CRIME - OTHER','CRIME - WAR','INDIVIDUAL','TERRORISM','BLACKLISTED','CORPORATE','EMBARGO','EMBARGO VESSEL','VESSEL','ORGANISATION') AND nbCrit$base>1 AND checked$base<2 $orderBy", false, MYSQL_ASSOC, true); echo date('Y/m/d - H:i:s') ." - Il y a $nb UID WorldCheck à mettre à vérifier...".EOL; echo mysql_error().EOL; $i=0; //foreach ($AnnDb as $i=>$tabWorldC) { while($tabWorldC=$iDb->fetch(MYSQL_ASSOC)) { $i++; $uid=$tabWorldC['UID']; $nom=$tabWorldC['nom']; $prenom=$tabWorldC['prenom']; $alias=$tabWorldC['ALIASES']; $alter=$tabWorldC['alterspel']; $dnais=WDate::DateT('Y-m-d','d/m/Y',$tabWorldC['DOB']); $vnais='';//$tabWorldC['ville']; $strCat=$tabWorldC['CATEGORY'].' '.$tabWorldC['TITLE'].' '.$tabWorldC['subCat'].' '.$tabWorldC['POSITION']; echo "$i/$nb - Recherche de $nom, $prenom né le $dnais à $vnais ($strCat) : "; if ($base=='Dir') $tabDir=@$iInsee->rechercheDir($nom.' '.$alias.' '.$alter, $prenom, '', $dnais, $vnais, 0, 20, 200, false); elseif ($base=='Act') $tabDir=@$iLien->rechercheActionnaire($nom.' '.$prenom.' '.$alias.' '.$alter, '', 0, '', 0, 100, 0, 20, 200, false); else die('Source inconnue'.EOL); $nbRep=$tabDir['nbReponsesTotal']; $nbCrit=count($tabDir['criteres']); /*if ($nbRep>0) { print_r($tabDir); die(); } /*$tabTrouve=$tabDir['reponses']; print_r($tabDir); $iDb2->update('worldcheck', array("nb$base"=>$nbRep, "nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); */ if ($nbRep==0) { echo "Pas de réponse".EOL; $iDb2->update('worldcheck', array("nb$base"=>0, "nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } if ($nbCrit<2) { echo "Pas assez précis".EOL; $iDb2->update('worldcheck', array("nb$base"=>'NULL',"nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } if ($nbRep>=200) { echo "Trop de résultat".EOL; $iDb2->update('worldcheck', array("nb$base"=>'NULL',"nbCrit$base"=>$nbCrit, "checked$base"=>1), "UID=$uid", false); continue; } $tabTrouve=$tabDir['reponses']; foreach ($tabTrouve as $j=>$dir) { if ($base=='Dir') { $nomT=trim($dir['DirNom'].' '.$dir['DirNomUsage']); $prenomT=$dir['DirPrenom']; $dnaisT=$dir['DirDateNaiss']; $vnaisT=$dir['DirLieuNaiss']; $fonction=$dir['DirFonction']; $sirenT=@$dir['Siren']; $levNom=levenshtein($nom,$nomT); $levPrenom=levenshtein($prenom,$prenomT); $levNais=levenshtein($tabWorldC['DOB'],$dnaisT); $len=strlen($nom.$prenom.$dnais); $lenT=strlen($nomT.$prenomT.$dnaisT); $levTotal=$levNom+$levPrenom+$levNais; $nomT=@$dir['DirNom']; } else { $nomT=$dir['ActNomRs']; $sirenT=@$dir['Siren']; $levNom=levenshtein($nom.' '.$prenom,$nomT); $len=strlen($nom.$prenom); $lenT=strlen($nomT); $levTotal=$levNom; $len1=($lenT+$len)/2; $ratio1=$levTotal/$len1*1.0; $prenomT=$vnaisT=$fonction=''; $dnaisT=0; } $len1=($lenT+$len)/2; $ratio1=$levTotal/$len1*1.0; if ($ratio1<0.3 && $sirenT>1000) { echo "$i/$nb - TROUVE ..... $nomT, $prenomT né le $dnaisT à $vnaisT ($fonction) : $levTotal, $len1 => $ratio1".EOL; $tabId=$iInsee->getIdentiteLight($sirenT); $tabInsert=array( 'wUID' =>$uid, 'wNOM' =>$nom, 'wPRENOM' =>$prenom, 'wALIASES' =>$alias, 'wALTER' =>$alter, 'wDOB' =>$tabWorldC['DOB'], 'wCATEGORY' =>$tabWorldC['CATEGORY'], 'wTITLE' =>$tabWorldC['TITLE'], 'wSUBCATEGORY' =>$tabWorldC['subCat'], 'wPOSITION' =>$tabWorldC['POSITION'], 'scoring' =>$ratio1, 'source' =>$base, 'DirRs' =>@$dir['DirRs'], 'DirNom' =>$nomT, 'DirPrenom' =>@$dir['DirPrenom'], 'DirNomUsage' =>@$dir['DirNomUsage'], 'DirDateNaiss' =>@$dir['DirDateNaiss'], 'DirLieuNaiss' =>@$dir['DirLieuNaiss'], 'DirFonction' =>@$dir['DirFonction'], 'siren' =>$sirenT, 'Nom' =>$tabId['Nom'], 'Adresse' =>$tabId['Adresse'], 'Adresse2' =>$tabId['Adresse2'], 'CP' =>$tabId['CP'], 'Ville' =>$tabId['Ville'], 'FJ' =>$tabId['FJ'], 'FJ_lib' =>$tabId['FJ_lib'], 'Actif' =>$tabId['Actif'], 'NafEnt' =>$tabId['NafEnt'], 'NafEntLib' =>$tabId['NafEntLib'], 'Capital' =>$tabId['Capital'], 'CapitalDev' =>$tabId['CapitalDev'], 'TrancheCA' =>$tabId['TrancheCA'], 'TrancheCALib' =>$tabId['TrancheCALib'], 'EffEnTr' =>$tabId['EffEnTr'], 'EffEnTrLib' =>$tabId['EffEnTrLib'], ); $iDb2->insert('worldcheckResults', $tabInsert, false); //echo mysql_error().EOL; //die(); } $iDb2->update('worldcheck', array("nb$base"=>$nbRep, "nbCrit$base"=>$nbCrit, "checked$base"=>2), "UID=$uid", false); } echo mysql_error().EOL; } } echo date ('Y/m/d - H:i:s')." - Fin du traitement de mise à jour des adresses de domiciliation.".EOL; ?>