2009-02-17 13:14:53 +00:00
#!/usr/bin/php -q
< ? php
2010-04-20 08:16:24 +00:00
// Paramètres
2010-04-20 15:38:17 +00:00
if ( ( $argc > 1 )
2010-04-20 08:16:24 +00:00
|| 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 ;
}
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/' ) );
2010-04-20 08:16:24 +00:00
require_once FWK_PATH . '/common/ftp.php' ;
2009-02-17 13:14:53 +00:00
2010-04-20 15:38:17 +00:00
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 ;
}
}
2009-02-17 13:14:53 +00:00
set_time_limit ( 0 );
2010-04-20 08:16:24 +00:00
$eol = " \n " ;
2009-02-17 13:14:53 +00:00
2010-01-22 08:58:39 +00:00
/*
2010-04-20 08:16:24 +00:00
* Connexion à la base de données
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 )) {
2010-04-20 08:16:24 +00:00
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 ;
2009-02-17 13:14:53 +00:00
}
2010-04-20 08:16:24 +00:00
/*
* Liste des commandes non traités
*/
2010-04-20 15:38:17 +00:00
$tabCommandes = mysql_select ( 'commandes' , 'idCommande, idUser, login, emailCommande, siren, refDocument, typeCommande, dateCommande' , 'dateReception=0' , false , MYSQL_ASSOC );
2010-04-20 08:16:24 +00:00
$nbCommandes = count ( $tabCommandes );
$tabTmp = array ();
2009-02-17 13:14:53 +00:00
foreach ( $tabCommandes as $commande ) {
2010-04-20 15:38:17 +00:00
if ( $commande [ 'typeCommande' ] == 'C' ){
$tabTmp [ 'c' . $commande [ 'idCommande' ]] = $commande ;
} elseif ( $commande [ 'typeCommande' ] == 'G' || $commande [ 'typeCommande' ] == '' ){
$tabTmp [ 'g' . $commande [ 'idCommande' ]] = $commande ;
}
2009-02-17 13:14:53 +00:00
}
2010-04-20 08:16:24 +00:00
$tabCommandes = $tabTmp ;
2009-02-17 13:14:53 +00:00
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
2010-04-20 08:16:24 +00:00
/*
* Connexion au site FTP pour récupérer tout les documents scannées
2010-02-10 17:27:03 +00:00
* au format pdf et les placés dans ACTES_IGNUM_LOCAL_DIR
2010-04-20 08:16:24 +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 ;
2010-04-20 08:16:24 +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 ){
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 ;
}
2009-02-17 13:14:53 +00:00
2010-01-22 08:58:39 +00:00
/*
2010-04-20 08:16:24 +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' )
2010-04-20 08:16:24 +00:00
{
2010-01-22 08:58:39 +00:00
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
2010-04-20 08:16:24 +00:00
* 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
2010-04-20 08:16:24 +00:00
* Le document est nommé G [ ref ], G [ ref ] - 1 , G [ ref ] - 2 , ..... pdf .
2010-02-10 17:27:03 +00:00
* On garde donc le dernier document scanné .
2010-01-22 08:58:39 +00:00
*/
$lastRef = '' ;
foreach ( $tabFichiers as $k => $val )
2010-04-20 08:16:24 +00:00
{
2010-01-22 08:58:39 +00:00
list ( $ref , $indice ) = explode ( '-' , $k );
if ( $lastRef != $ref ) {
$tabFichiersTemp [] = $val ;
}
2010-04-20 08:16:24 +00:00
$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
*/
2010-04-20 08:16:24 +00:00
$tabActes = array ();
foreach ( $tabFichiers as $k => $nomFichier )
2010-01-22 08:58:39 +00:00
{
2010-04-20 15:38:17 +00:00
if ( strtolower ( substr ( $nomFichier , 0 , 1 )) == 'g' ||
strtolower ( substr ( $nomFichier , 0 , 1 )) == 'c' ){
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
2010-02-10 17:27:03 +00:00
//Detection de la référence fichier dans les commandes
2010-04-20 08:16:24 +00:00
if ( isset ( $tabCommandes [ $numFichier ]) && is_array ( $tabCommandes [ $numFichier ]))
2010-01-22 08:58:39 +00:00
{
$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-04-20 08:16:24 +00:00
//Le fichier existe déjà @todo : envoyé un mail quand même ?
if ( file_exists ( ACTES_IG_LOCAL_DIR . $nomCible )){
2010-04-20 15:38:17 +00:00
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 );
}
}
2010-04-20 08:16:24 +00:00
//Le fichier n'existe pas
} else {
2010-04-20 15:38:17 +00:00
2010-04-20 08:16:24 +00:00
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
2010-04-20 15:38:17 +00:00
if ( trim ( $commande [ 'emailCommande' ]) != '' ){
sendMail ( $commande , $nomCible );
2009-02-17 13:14:53 +00:00
}
2010-04-20 08:16:24 +00:00
//MAJ date de reception
2010-01-22 08:58:39 +00:00
mysql_update ( 'commandes' , array ( 'dateReception' => date ( 'YmdHis' )), 'idCommande=' . $commande [ 'idCommande' ]);
2010-04-20 08:16:24 +00:00
//Impossible de renommer
} else {
echo 'Impossible de déplacer ' . ACTES_IGNUM_LOCAL_DIR . $nomFichier . ' en ' . ACTES_IG_LOCAL_DIR . $nomCible . ' !' . EOL ;
2009-02-17 13:14:53 +00:00
}
2010-04-20 08:16:24 +00:00
} //Fin test fichier
2009-02-17 13:14:53 +00:00
}
2010-04-20 08:16:24 +00:00
} //Fin fichier référence gxxxx.pdf
} //Fin liste des fichiers
2009-02-17 13:14:53 +00:00
2009-06-08 09:22:59 +00:00
?>