2009-02-17 13:14:53 +00:00
#!/usr/bin/php -q
< ? php
2009-07-07 13:36:12 +00:00
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' );
2009-02-17 13:14:53 +00:00
define ( 'ACTES_IGNUM_FTP_USER' , 'mpc2500' );
define ( 'ACTES_IGNUM_FTP_PASS' , 'passmpc78' );
require_once realpath ( dirname ( __FILE__ ) . '/../framework/fwk.php' );
2009-02-20 15:30:11 +00:00
require_once realpath ( dirname ( __FILE__ ) . '/../config/config.inc' );
2009-03-12 17:35:43 +00:00
require_once realpath ( dirname ( __FILE__ ) . '/mysql.php' );
2009-02-20 15:30:11 +00:00
define ( 'INCLUDE_PATH' , realpath ( dirname ( __FILE__ ) . '/../includes/' ) );
2009-02-17 13:14:53 +00:00
2009-02-20 09:40:39 +00:00
include_once ( FWK_PATH . '/common/ftp.php' );
2009-02-17 13:14:53 +00:00
$tempsMinEntreRequetes = 5 ;
$tempsMaxEntreRequetes = 30 ;
set_time_limit ( 0 );
$eol = " \n " ;
$lastJO = $dateDebut = $dateFin = $verif = false ;
$strInfoProg = 'Usage : ' . basename ( $argv [ 0 ]) . " [OPTION]
2010-02-10 17:27:03 +00:00
Vérifie les actes numérisés reçus en provenance des Greffes .
2009-02-17 13:14:53 +00:00
2010-02-10 17:27:03 +00:00
Sans aucun paramètre , récupération des actes .
2009-02-17 13:14:53 +00:00
" ;/*Sinon:
2010-02-10 17:27:03 +00:00
- d : JJ / MM / AAAA Date de début de publication
2009-06-08 09:22:59 +00:00
- f : JJ / MM / AAAA Date de fin de publication
- l Dernier JO Association uniquement ( * )
2010-02-10 17:27:03 +00:00
- 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 !
2009-02-17 13:14:53 +00:00
" ;*/
$argv = $_SERVER [ 'argv' ];
2010-01-22 08:58:39 +00:00
if ( $_SERVER [ 'argc' ] == 1 ) $lastJO = true ;
2009-02-17 13:14:53 +00:00
else {
2009-06-08 09:22:59 +00:00
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 " );
}
2009-02-17 13:14:53 +00:00
}
2009-06-08 09:22:59 +00:00
}
2009-02-17 13:14:53 +00:00
}
2010-01-22 08:58:39 +00:00
/*
2010-02-10 17:27:03 +00:00
* Liste des commandes non traités
2010-01-22 08:58:39 +00:00
*/
2009-02-20 15:30:11 +00:00
$con = mysql_pconnect ( MYSQL_HOST , MYSQL_USER , MYSQL_PASS );
2009-02-17 13:14:53 +00:00
if ( ! ( $con === false )) {
2009-06-08 09:22:59 +00:00
if ( mysql_select_db ( MYSQL_DB , $con ) === false )
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n°' . mysql_errno () . ') : ' . mysql_error () . $eol ;
2009-02-17 13:14:53 +00:00
}
2009-06-08 09:22:59 +00:00
else
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n°' . mysql_errno () . ') : ' . mysql_error () . $eol ;
2009-02-17 13:14:53 +00:00
$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 );
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbCommandes actes en attente de réception courrier ou numérisation ! $eol " ;
2009-02-17 13:14:53 +00:00
//print_r($tabCommandes);
//die();
2010-01-22 08:58:39 +00:00
/*
2010-02-10 17:27:03 +00:00
* 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
2010-01-22 08:58:39 +00:00
*/
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Récupération des fichiers numérisés en attente de traitement... " . EOL ;
2009-02-17 13:14:53 +00:00
$ret = ftp_mget ( ACTES_IGNUM_FTP_URL , ACTES_IGNUM_FTP_USER , ACTES_IGNUM_FTP_PASS , '*.pdf' , ACTES_IGNUM_LOCAL_DIR , false );
if ( $ret === false )
2010-02-10 17:27:03 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Récupération des actes numérisés impossible ! " . EOL );
2009-02-17 13:14:53 +00:00
else
2010-02-10 17:27:03 +00:00
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 ;
2009-02-17 13:14:53 +00:00
2010-01-22 08:58:39 +00:00
/*
* Liste de tout les fichiers disponible dans le repertoire
2010-02-10 17:27:03 +00:00
* et associe une clé pour faciliter le tri
2010-01-22 08:58:39 +00:00
*/
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Traitement des actes non encore traités ! " . EOL ;
2010-01-22 08:58:39 +00:00
$tabFichiers = array ();
$dh = opendir ( ACTES_IGNUM_LOCAL_DIR );
2009-02-17 13:14:53 +00:00
while ( false !== ( $filename = readdir ( $dh ))) {
2010-01-22 08:58:39 +00:00
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 );
}
}
/*
2010-02-10 17:27:03 +00:00
* Tri des fichiers par ordre décroissant
* Les noms des fichiers sont incrémenté par 1
2010-01-22 08:58:39 +00:00
*/
krsort ( $tabFichiers );
/*
* Dans le cas ou il y a eu une erreur de scan , la production passe a nouveau le
2010-02-10 17:27:03 +00:00
* 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é .
2010-01-22 08:58:39 +00:00
*/
$lastRef = '' ;
foreach ( $tabFichiers as $k => $val )
{
list ( $ref , $indice ) = explode ( '-' , $k );
if ( $lastRef != $ref ) {
$tabFichiersTemp [] = $val ;
}
$lastRef = $ref ;
2009-02-17 13:14:53 +00:00
}
2010-01-22 08:58:39 +00:00
$tabFichiers = $tabFichiersTemp ;
unset ( $tabFichiersTemp );
/*
2010-02-10 17:27:03 +00:00
* Association des documents numérisés avec les commandes
2010-01-22 08:58:39 +00:00
*/
2009-02-17 13:14:53 +00:00
$tabActes = array ();
2010-01-22 08:58:39 +00:00
foreach ( $tabFichiers as $k => $nomFichier )
{
if ( strtolower ( substr ( $nomFichier , 0 , 1 )) == 'g' )
{
2009-02-17 13:14:53 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier $nomFichier disponible pour traitement. " . EOL ;
2010-02-10 17:27:03 +00:00
//Traitement des fichiers scannés une deuxième fois
2010-01-22 08:58:39 +00:00
$refFichier = str_replace ( '.pdf' , '' , $nomFichier );
$refFichier = explode ( '-' , $refFichier );
2010-02-01 13:55:20 +00:00
$numFichier = $refFichier [ 0 ];
2010-01-22 08:58:39 +00:00
2009-02-17 13:14:53 +00:00
$tabActes [] = $nomFichier ;
2010-02-10 17:27:03 +00:00
//Detection de la référence fichier dans les commandes
2010-01-22 08:58:39 +00:00
if ( isset ( $tabCommandes [ $numFichier ]) && is_array ( $tabCommandes [ $numFichier ]))
{
$commande = $tabCommandes [ $numFichier ];
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Le fichier $nomFichier correspond à la commande " . $commande [ 'refDocument' ] . ' de ' . $commande [ 'login' ] . '.' . EOL ;
2010-01-22 08:58:39 +00:00
$siren = $commande [ 'siren' ];
$ref = $commande [ 'refDocument' ];
2010-02-02 10:52:26 +00:00
2010-01-22 08:58:39 +00:00
$nomCible = " acte- $siren - $ref .pdf " ;
2010-02-02 10:52:26 +00:00
if ( preg_match ( '/^([0-9]{4}_).*?$/' , $ref , $matches ) )
{
$nomCible = " bilan- $siren - $ref .pdf " ;
}
2010-01-22 08:58:39 +00:00
2010-02-10 17:27:03 +00:00
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 ;
2010-01-22 08:58:39 +00:00
else //Le fichier n'existe pas
{
if ( rename ( ACTES_IGNUM_LOCAL_DIR . $nomFichier , ACTES_IG_LOCAL_DIR . $nomCible ))
{
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - La commande $nomCible a été mise à disposition. " . EOL ;
2010-01-22 08:58:39 +00:00
//Envoi email
if ( trim ( $commande [ 'emailCommande' ]) != '' )
{
$subject = " Actes ou Statuts disponible pour $siren " ;
2010-02-10 17:27:03 +00:00
$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 " ;
2010-01-22 08:58:39 +00:00
$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 ))
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - Un email a été envoyé à ' . $commande [ 'emailCommande' ] . " pour la commande $nomCible . " . EOL ;
2010-01-22 08:58:39 +00:00
else
2010-02-10 17:27:03 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Impossible d\'envoyer l\'email à ' . $commande [ 'emailCommande' ] . " pour la commande $nomCible . " . EOL ;
2009-02-17 13:14:53 +00:00
}
2010-01-22 08:58:39 +00:00
mysql_update ( 'commandes' , array ( 'dateReception' => date ( 'YmdHis' )), 'idCommande=' . $commande [ 'idCommande' ]);
//print_r($tabCommandes[$numFichier]);
2009-02-17 13:14:53 +00:00
}
2010-02-10 17:27:03 +00:00
else print 'Impossible de déplacer ' . ACTES_IGNUM_LOCAL_DIR . $nomFichier . ' en ' . ACTES_IG_LOCAL_DIR . $nomCible . ' !' . EOL ;
2009-02-17 13:14:53 +00:00
}
}
}
}
2009-06-08 09:22:59 +00:00
?>