extranet/batch/getActes.php
Michael RICOIS e220299d39 MAJ batch
2009-06-08 09:22:59 +00:00

145 lines
5.9 KiB
PHP

#!/usr/bin/php -q
<?php
define ('ACTES_IGNUM_LOCAL_DIR','/var/www/extranet/www/pdf/scan/');
define ('ACTES_IG_LOCAL_DIR', '/var/www/extranet/www/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");
}
}
}
}
$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
**/
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;
/**
** Connexion au site FTP
**/
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')
$tabFichiers[] = $filename;
}
rsort($tabFichiers);
$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;
$numFichier=str_replace('.pdf','', $nomFichier);
$tabActes[] = $nomFichier;
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;
$numFichierSuiv=str_replace('.pdf','', $tabFichiers[$k+1]);
if (strpos($numFichierSuiv, $numFichier) === false) {
/** Le fichier $nomFichier est une commande livrée en un seul fichier **/
$siren=$commande['siren'];
$ref=$commande['refDocument'];
$nomCible="acte-$siren-$ref.pdf";
if (file_exists(ACTES_IG_LOCAL_DIR.$nomCible))
echo date ('Y/m/d - H:i:s')." - La commande $nomCible est déjà mise à disposition !".EOL;
else {
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;
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;
}
}
else
// On traitera plus tard le multi fichier !
echo date ('Y/m/d - H:i:s')." - @TODO : La commande $numFichier est en plusieur fichiers !".EOL;
// die();
}
}
}
?>