189 lines
6.9 KiB
PHP
189 lines
6.9 KiB
PHP
#!/usr/bin/php -q
|
|
<?php
|
|
|
|
define ('PATH_DATA', '/var/www/data');
|
|
define ('ACTES_IGNUM_LOCAL_DIR', PATH_DATA.'/pdf/scan/');
|
|
define ('ACTES_IG_LOCAL_DIR', PATH_DATA.'/pdf/');
|
|
define ('ACTES_IGNUM_FTP_URL', 'ftp2.scores-decisions.com');
|
|
define ('ACTES_IGNUM_FTP_USER', 'mpc2500');
|
|
define ('ACTES_IGNUM_FTP_PASS', 'passmpc78');
|
|
|
|
require_once realpath(dirname(__FILE__) . '/../framework/fwk.php');
|
|
require_once realpath(dirname(__FILE__) . '/../config/config.inc');
|
|
require_once realpath(dirname(__FILE__) . '/mysql.php');
|
|
|
|
define('INCLUDE_PATH', realpath(dirname(__FILE__).'/../includes/') );
|
|
|
|
include_once(FWK_PATH.'/common/ftp.php');
|
|
|
|
$tempsMinEntreRequetes=5;
|
|
$tempsMaxEntreRequetes=30;
|
|
set_time_limit(0);
|
|
$eol="\n";
|
|
$lastJO=$dateDebut=$dateFin=$verif=false;
|
|
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
|
|
Vérifie les actes numérisés reçus en provenance des Greffes.
|
|
|
|
Sans aucun paramètre, récupération des actes.
|
|
";/*Sinon:
|
|
-d:JJ/MM/AAAA Date de début de publication
|
|
-f:JJ/MM/AAAA Date de fin de publication
|
|
-l Dernier JO Association uniquement (*)
|
|
-n:X Intervalle MIN en secondes entre les requêtes sur le site des JO (défaut=$tempsMinEntreRequetes)
|
|
-i:X \" MAX \" \" \" \" \" \" \" \" \" \" (défaut=$tempsMaxEntreRequetes)
|
|
-v Vérifier que toutes les annonces du JO sont en base !
|
|
";*/
|
|
|
|
$argv=$_SERVER['argv'];
|
|
if ($_SERVER['argc']==1) $lastJO=true;
|
|
else {
|
|
for ($i=1; isset($argv[$i]); $i++) {
|
|
if (substr($argv[$i],0,1)=='-') {
|
|
switch (substr($argv[$i],1,1)) {
|
|
case 'd':
|
|
$dateDebut=substr($argv[$i],3,10);
|
|
$dateDeb=dateT('d/m/Y', 'Ymd', $dateDebut);
|
|
break;
|
|
case 'n':
|
|
$tempsMinEntreRequetes=trim(substr($argv[$i],3))*1;
|
|
if ($tempsMinEntreRequetes<0) $tempsMinEntreRequetes=0;
|
|
break;
|
|
case '-':
|
|
die($strInfoProg);
|
|
break;
|
|
default: die('Option '. $argv[$i] . " inconnue !\n");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Liste des commandes non traités
|
|
*/
|
|
$con = mysql_pconnect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
|
|
if (!($con === false)) {
|
|
if (mysql_select_db(MYSQL_DB, $con) === false)
|
|
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
|
|
}
|
|
else
|
|
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
|
|
|
|
$tabCommandes=mysql_select('commandes', 'idCommande, idUser, login, emailCommande, siren, refDocument, dateCommande', 'dateReception=0', false, MYSQL_ASSOC);
|
|
$nbCommandes=count($tabCommandes);
|
|
$tabTmp=array();
|
|
foreach ($tabCommandes as $commande) {
|
|
$tabTmp['g'.$commande['idCommande']]=$commande;
|
|
}
|
|
$tabCommandes=$tabTmp;
|
|
unset($tabTmp);
|
|
echo date('Y/m/d - H:i:s') ." - Il y a $nbCommandes actes en attente de réception courrier ou numérisation !$eol";
|
|
//print_r($tabCommandes);
|
|
//die();
|
|
|
|
/*
|
|
* Connexion au site FTP pour récupérer tout les documents scannées
|
|
* au format pdf et les placés dans ACTES_IGNUM_LOCAL_DIR
|
|
*/
|
|
echo date('Y/m/d - H:i:s') ." - Récupération des fichiers numérisés en attente de traitement...".EOL;
|
|
$ret=ftp_mget(ACTES_IGNUM_FTP_URL, ACTES_IGNUM_FTP_USER, ACTES_IGNUM_FTP_PASS, '*.pdf', ACTES_IGNUM_LOCAL_DIR, false);
|
|
if ($ret===false)
|
|
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des actes numérisés impossible !".EOL);
|
|
else
|
|
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Hugin en FTP ($ret fichiers récupérés).".EOL;
|
|
|
|
/*
|
|
* Liste de tout les fichiers disponible dans le repertoire
|
|
* et associe une clé pour faciliter le tri
|
|
*/
|
|
echo date('Y/m/d - H:i:s') ." - Traitement des actes non encore traités !".EOL;
|
|
$tabFichiers = array();
|
|
$dh = opendir(ACTES_IGNUM_LOCAL_DIR);
|
|
while (false !== ($filename = readdir($dh))) {
|
|
if ($filename!='.' && $filename!='..' && strtolower(substr($filename, -4))=='.pdf')
|
|
{
|
|
list($ref, $indice) = explode('-',str_replace(array('G','.pdf'), array('',''), $filename));
|
|
if(empty($indice)) $indice = 0;
|
|
$tabFichiers[$ref.'-'.$indice] = strtolower($filename);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Tri des fichiers par ordre décroissant
|
|
* Les noms des fichiers sont incrémenté par 1
|
|
*/
|
|
krsort($tabFichiers);
|
|
|
|
/*
|
|
* Dans le cas ou il y a eu une erreur de scan, la production passe a nouveau le
|
|
* document dans le scanner et le fichier est envoyé sur le ftp
|
|
* Le document est nommé G[ref],G[ref]-1,G[ref]-2,.....pdf.
|
|
* On garde donc le dernier document scanné.
|
|
*/
|
|
$lastRef = '';
|
|
foreach($tabFichiers as $k => $val)
|
|
{
|
|
list($ref, $indice) = explode('-',$k);
|
|
echo $lastRef.' = '.$ref."\n";
|
|
if( $lastRef != $ref ) {
|
|
$tabFichiersTemp[] = $val;
|
|
}
|
|
$lastRef = $ref;
|
|
}
|
|
$tabFichiers = $tabFichiersTemp;
|
|
unset($tabFichiersTemp);
|
|
|
|
/*
|
|
* Association des documents numérisés avec les commandes
|
|
*/
|
|
$tabActes=array();
|
|
foreach ($tabFichiers as $k => $nomFichier)
|
|
{
|
|
if (strtolower(substr($nomFichier,0,1))=='g')
|
|
{
|
|
echo date ('Y/m/d - H:i:s')." - Fichier $nomFichier disponible pour traitement.".EOL;
|
|
//Traitement des fichiers scannés une deuxième fois
|
|
$refFichier = str_replace('.pdf','', $nomFichier);
|
|
$refFichier = explode('-', $refFichier);
|
|
$numfichier = $refFichier[0];
|
|
|
|
$tabActes[] = $nomFichier;
|
|
//Detection de la référence fichier dans les commandes
|
|
if (isset($tabCommandes[$numFichier]) && is_array($tabCommandes[$numFichier]))
|
|
{
|
|
$commande = $tabCommandes[$numFichier];
|
|
echo date ('Y/m/d - H:i:s')." - Le fichier $nomFichier correspond à la commande ".$commande['refDocument'].' de '.$commande['login'].'.'.EOL;
|
|
|
|
$siren = $commande['siren'];
|
|
$ref = $commande['refDocument'];
|
|
$nomCible = "acte-$siren-$ref.pdf";
|
|
|
|
if (file_exists(ACTES_IG_LOCAL_DIR.$nomCible)) //Le fichier existe déjà
|
|
echo date ('Y/m/d - H:i:s')." - La commande $nomCible est déjà mise à disposition !".EOL;
|
|
else //Le fichier n'existe pas
|
|
{
|
|
if (rename(ACTES_IGNUM_LOCAL_DIR.$nomFichier, ACTES_IG_LOCAL_DIR.$nomCible))
|
|
{
|
|
echo date ('Y/m/d - H:i:s')." - La commande $nomCible a été mise à disposition.".EOL;
|
|
//Envoi email
|
|
if (trim($commande['emailCommande'])!='')
|
|
{
|
|
$subject="Actes ou Statuts disponible pour $siren";
|
|
$message ="Le document commandé pour le siren $siren est disponible en téléchargement sur le site de Scores & Décisions à l'adresse suivante :\r\n\r\n";
|
|
$message.="http://extranet.scores-decisions.com/pdf/$nomCible\r\n";
|
|
$headers = 'From: infoslegales@scores-decisions.com' . "\r\n" .
|
|
'Reply-To: infoslegales@scores-decisions.com';
|
|
if (mail($commande['emailCommande'], $subject, $message, $headers))
|
|
echo date ('Y/m/d - H:i:s').' - Un email a été envoyé à '.$commande['emailCommande']." pour la commande $nomCible.".EOL;
|
|
else
|
|
echo date ('Y/m/d - H:i:s').' - ERREUR : Impossible d\'envoyer l\'email à '.$commande['emailCommande']." pour la commande $nomCible.".EOL;
|
|
}
|
|
mysql_update('commandes', array('dateReception'=>date('YmdHis')),'idCommande='.$commande['idCommande']);
|
|
//print_r($tabCommandes[$numFichier]);
|
|
}
|
|
else print 'Impossible de déplacer '.ACTES_IGNUM_LOCAL_DIR.$nomFichier.' en '.ACTES_IG_LOCAL_DIR.$nomCible.' !'.EOL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|