batch/1.1/old/testWorldCheck.php
2013-06-19 08:24:49 +00:00

212 lines
9.4 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [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;
?>