202 lines
7.0 KiB
PHP
202 lines
7.0 KiB
PHP
#!/usr/bin/php -q
|
|
<?php
|
|
|
|
// Paramètres
|
|
if ( ( $argc > 1 )
|
|
|| in_array($argv[1], array('--help', '-help', '-h', '-?')) ) {
|
|
?>
|
|
Vérifie les actes numérisés reçus en provenance des Greffes.
|
|
Avec les options --help, -help, -h, et -?, vous obtiendrez cette aide.
|
|
|
|
Sans aucun paramètre, récupération des actes.
|
|
Utilisation :
|
|
<?php echo $argv[0]; ?> >> /vers/fichier.log
|
|
<?php
|
|
exit;
|
|
}
|
|
|
|
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/') );
|
|
require_once FWK_PATH.'/common/ftp.php';
|
|
|
|
function sendMail($commande, $nomCible){
|
|
$subject = "Actes ou Statuts disponible pour ".$commande['siren'];
|
|
$message = "Le document commandé pour le siren ".$commande['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;
|
|
}
|
|
}
|
|
|
|
set_time_limit(0);
|
|
$eol = "\n";
|
|
|
|
/*
|
|
* Connexion à la base de données
|
|
*/
|
|
$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;
|
|
}
|
|
/*
|
|
* Liste des commandes non traités
|
|
*/
|
|
$tabCommandes = mysql_select('commandes', 'idCommande, idUser, login, emailCommande, siren, refDocument, typeCommande, dateCommande', 'dateReception=0', false, MYSQL_ASSOC);
|
|
$nbCommandes = count($tabCommandes);
|
|
$tabTmp = array();
|
|
foreach ($tabCommandes as $commande) {
|
|
if ($commande['typeCommande']=='C'){
|
|
$tabTmp['c'.$commande['idCommande']] = $commande;
|
|
} elseif ($commande['typeCommande']=='G' || $commande['typeCommande']==''){
|
|
$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";
|
|
|
|
/*
|
|
* 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 actes 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);
|
|
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' ||
|
|
strtolower(substr($nomFichier,0,1))=='c'){
|
|
|
|
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];
|
|
|
|
//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( preg_match('/^([0-9]{4}_).*?$/', $ref, $matches) )
|
|
{
|
|
$nomCible = "bilan-$siren-$ref.pdf";
|
|
}
|
|
|
|
//Le fichier existe déjà @todo : envoyé un mail quand même ?
|
|
if (file_exists(ACTES_IG_LOCAL_DIR.$nomCible)){
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Le fichier de la commande $nomCible est déjà disponible !".EOL;
|
|
/*
|
|
* Vérifier que la date de reception est à nulle
|
|
* pour renvoyer le mail et mettre à jour la date de reception
|
|
*/
|
|
if ($commande['dateReception']==0){
|
|
echo date ('Y/m/d - H:i:s')." - Mise à jour de la commmande".EOL;
|
|
mysql_update('commandes', array('dateReception'=>date('YmdHis')),'idCommande='.$commande['idCommande']);
|
|
if (trim($commande['emailCommande'])!=''){
|
|
sendMail($commande, $nomCible);
|
|
}
|
|
}
|
|
|
|
//Le fichier n'existe pas
|
|
} 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;
|
|
//Envoi email
|
|
if (trim($commande['emailCommande'])!=''){
|
|
sendMail($commande, $nomCible);
|
|
}
|
|
//MAJ date de reception
|
|
mysql_update('commandes', array('dateReception'=>date('YmdHis')),'idCommande='.$commande['idCommande']);
|
|
|
|
//Impossible de renommer
|
|
} else {
|
|
echo 'Impossible de déplacer '.ACTES_IGNUM_LOCAL_DIR.$nomFichier.' en '.ACTES_IG_LOCAL_DIR.$nomCible.' !'.EOL;
|
|
}
|
|
} //Fin test fichier
|
|
}
|
|
} //Fin fichier référence gxxxx.pdf
|
|
} //Fin liste des fichiers
|
|
|
|
?>
|