2009-02-17 13:14:53 +00:00
#!/usr/bin/php -q
< ? php
2010-04-20 08:16:24 +00:00
// Paramètres
2010-10-04 09:52:05 +00:00
if ( in_array ( $argv [ 1 ], array ( '--help' , '-help' , '-h' , '-?' )) ) {
2010-04-20 08:16:24 +00:00
?>
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 .
2010-09-13 15:13:52 +00:00
Mode test avec les options - t , -- test , - test pour voir ce qui va être fait
2010-04-20 08:16:24 +00:00
Utilisation :
< ? php echo $argv [ 0 ]; ?> >> /vers/fichier.log
< ? php
exit ;
}
2010-09-13 15:13:52 +00:00
$test = false ;
if ( in_array ( $argv [ 1 ], array ( '--test' , '-test' , '-t' ))){
$test = true ;
}
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' );
2010-12-23 09:48:51 +00:00
$report_email = 'production@scores-decisions.com' ;
$report_subject = 'Traitement des actes ' . date ( 'Y-m-d H:i:s' );
$report_txt = '' ;
2009-02-17 13:14:53 +00:00
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 ;
2010-08-27 07:36:07 +00:00
return true ;
2010-04-20 15:38:17 +00:00
} else {
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Impossible d\'envoyer l\'email à ' . $commande [ 'emailCommande' ] . " pour la commande $nomCible . " . EOL ;
2010-08-27 07:36:07 +00:00
return false ;
2010-04-20 15:38:17 +00:00
}
}
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-09-13 15:13:52 +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-08-27 07:36:07 +00:00
2010-09-13 15:13:52 +00:00
/**
2010-08-27 07:36:07 +00:00
* Liste des commandes non traités depuis la base de données
2010-04-20 08:16:24 +00:00
*/
2010-08-27 07:36:07 +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-08-27 07:36:07 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbCommandes commandes en attente de réception courrier ou numérisation ! $eol " ;
2009-02-17 13:14:53 +00:00
2010-09-13 15:13:52 +00:00
/**
2010-08-27 07:36:07 +00:00
* Connexion au site FTP pour la récupération de la liste des fichiers au format pdf
2010-04-20 08:16:24 +00:00
*/
2010-08-27 07:36:07 +00:00
$conn_id = ftp_connect ( ACTES_IGNUM_FTP_URL );
if ( ! $conn_id ) {
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de se connecter au serveur FTP ( " . ACTES_IGNUM_FTP_URL . " ) ! " . EOL ;
exit ;
2010-04-20 08:16:24 +00:00
}
2010-08-27 07:36:07 +00:00
$login_result = ftp_login ( $conn_id , ACTES_IGNUM_FTP_USER , ACTES_IGNUM_FTP_PASS );
if ( ! $login_result ) {
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de s'authentifier sur le serveur FTP ( " . ACTES_IGNUM_FTP_URL . " )! " . EOL ;
exit ;
}
$contents = ftp_nlist ( $conn_id , " *.pdf " );
2009-02-17 13:14:53 +00:00
2010-09-13 15:13:52 +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-08-27 07:36:07 +00:00
$tabFichiersFtp = array ();
foreach ( $contents as $filename ){
$indice = 0 ;
2010-10-04 09:52:05 +00:00
if ( preg_match ( '/[g|c][0-9]+\.pdf/' , $filename ) ||
preg_match ( '/[g|c][0-9]+-[0-9]{1,2}\.pdf/' , $filename )){
2010-08-27 07:36:07 +00:00
list ( $ref , $indice ) = explode (
'-' ,
2010-10-04 09:52:05 +00:00
str_replace ( array ( '.pdf' , 'g' , 'c' ), array ( '' , '' , '' ), $filename )
2010-08-27 07:36:07 +00:00
);
if ( empty ( $indice )) $indice = 0 ;
$tabFichiersFtp [ $ref . '-' . $indice ] = strtolower ( $filename );
// Fichiers en anomalies
} else {
2010-10-04 09:52:05 +00:00
if ( $test ){
echo " Erreur : Anomalie fichier numérisé $filename\n " ;
} else {
$subject = " Erreur : Anomalie fichier numérisé " ;
$message = " Le fichier $filename a été trouvé et ne correspond pas au format attendu " ;
$headers = 'From: supportdev@scores-decisions.com' . " \r \n " .
'Reply-To: supportdev@scores-decisions.com' ;
mail ( 'supportdev@scores-decisions.com' , $subject , $message , $headers );
}
2010-01-22 08:58:39 +00:00
}
}
2010-09-13 15:13:52 +00:00
/**
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
*/
2010-08-27 07:36:07 +00:00
krsort ( $tabFichiersFtp );
2010-01-22 08:58:39 +00:00
2010-09-13 15:13:52 +00:00
/**
2010-01-22 08:58:39 +00:00
* 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 = '' ;
2010-08-27 07:36:07 +00:00
$tabFichiersTemp = array ();
2010-10-04 09:52:05 +00:00
foreach ( $tabFichiersFtp 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 ) {
2010-10-04 09:52:05 +00:00
$tabFichiersTemp [ $ref ] = $val ;
2010-01-22 08:58:39 +00:00
}
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-09-13 15:13:52 +00:00
/**
2010-08-27 07:36:07 +00:00
* Pour chaque commande , test de la présence d ' un fichier associé
* Si le fichier correspond téléchargement du fichier
2010-01-22 08:58:39 +00:00
*/
2010-08-27 07:36:07 +00:00
foreach ( $tabCommandes as $ref => $commande ){
2010-10-04 09:52:05 +00:00
foreach ( $tabFichiers as $refAssocie => $fichier ){
2010-12-15 14:40:19 +00:00
if ( substr ( $ref , 1 ) == $refAssocie ){
2010-08-27 07:36:07 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Traitement de la commande $ref " . EOL ;
2010-09-13 15:13:52 +00:00
if ( $test ){
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier $fichier " . EOL ;
} else {
//Récupération du fichier depuis le FTP (s'il n'existe pas déjà)
if ( ! file_exists ( ACTES_IGNUM_LOCAL_DIR . $fichier )){
2010-10-06 14:06:53 +00:00
if ( ftp_get ( $conn_id , ACTES_IGNUM_LOCAL_DIR . $fichier , $fichier , FTP_BINARY , 0 )) {
2010-09-13 15:13:52 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier $fichier téléchargé depuis le serveur FTP. " . EOL ;
} else {
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de télécharger le fichier $fichier ! " . EOL ;
}
2010-08-27 07:36:07 +00:00
}
2010-04-20 08:16:24 +00:00
2010-09-13 15:13:52 +00:00
//Copie et renommage du fichier suivant la ref infogreffe (s'il n'existe pas déjà)
$sirenC = $commande [ 'siren' ];
$refC = $commande [ 'refDocument' ];
$nomCible = " acte- $sirenC - $refC .pdf " ;
if ( preg_match ( '/^([0-9]{4}_).*?$/' , $refC , $matches )){
$nomCible = " bilan- $sirenC - $refC .pdf " ;
2010-04-20 15:38:17 +00:00
}
2010-09-13 15:13:52 +00:00
if ( file_exists ( ACTES_IGNUM_LOCAL_DIR . $fichier ) &&
! file_exists ( ACTES_IG_LOCAL_DIR . $nomCible )){
2010-10-05 13:46:10 +00:00
if ( rename ( ACTES_IGNUM_LOCAL_DIR . $fichier , ACTES_IG_LOCAL_DIR . $nomCible )){
2010-12-15 14:40:19 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier " . ACTES_IGNUM_LOCAL_DIR . $fichier . " déplacé en " . ACTES_IG_LOCAL_DIR . $nomCible . " . " . EOL ;
2010-09-13 15:13:52 +00:00
} else {
echo date ( 'Y/m/d - H:i:s' ) . " ERREUR - Impossible de déplacer " . ACTES_IGNUM_LOCAL_DIR . $fichier . " en " . ACTES_IG_LOCAL_DIR . $nomCible . ' !' . EOL ;
}
2010-08-27 07:36:07 +00:00
}
2010-09-13 15:13:52 +00:00
//Envoi du mail et Mise à jour de la commande
2010-10-06 14:06:53 +00:00
$testMail = false ;
2010-09-13 15:13:52 +00:00
if ( file_exists ( ACTES_IG_LOCAL_DIR . $nomCible )){
2010-10-05 13:46:10 +00:00
if ( $testMail ){
echo " Envoi fichier $nomCible ( $ref ) à " . $commande [ 'emailCommande' ];
2010-09-13 15:13:52 +00:00
} else {
2010-12-23 09:48:51 +00:00
$report_txt .= " $ref intégré à l'extranet " ;
2010-10-05 13:46:10 +00:00
$isMailSent = false ;
if ( trim ( $commande [ 'emailCommande' ]) != '' ){
$isMailSent = sendMail ( $commande , $nomCible );
} else {
$isMailSent = true ;
}
if ( $isMailSent ){
echo date ( 'Y/m/d - H:i:s' ) . " - Commande $ref mise à jour " . EOL ;
mysql_update (
'commandes' ,
array ( 'dateReception' => date ( 'YmdHis' ) ),
'idCommande=' . $commande [ 'idCommande' ]
);
2010-12-23 09:48:51 +00:00
$report_txt .= ' - Email envoyé à ' . $commande [ 'emailCommande' ];
2010-10-05 13:46:10 +00:00
} else {
2010-12-23 09:48:51 +00:00
$report_txt .= ' - Email non envoyé !' ;
2010-10-05 13:46:10 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " ERREUR - Email non envoyé et commande $ref non mise à jour " . EOL ;
}
2010-12-23 09:48:51 +00:00
$report_txt .= " \n " ;
2010-09-13 15:13:52 +00:00
}
2009-02-17 13:14:53 +00:00
}
2010-09-13 15:13:52 +00:00
2010-08-27 07:36:07 +00:00
}
break ;
2009-02-17 13:14:53 +00:00
}
2010-08-27 07:36:07 +00:00
}
}
ftp_close ( $conn_id );
2009-02-17 13:14:53 +00:00
2010-12-23 09:48:51 +00:00
//Envoi du mail de rapport
2011-01-17 12:35:57 +00:00
if ( ! $test && ! $testMail ){
if ( mail ( $report_email , $report_subject , $report_txt )){
echo date ( 'Y/m/d - H:i:s' ) . " Rapport envoyé. " ;
} else {
echo date ( 'Y/m/d - H:i:s' ) . " Erreur lors de l'envoir du rapport ! " ;
}
2010-12-23 09:48:51 +00:00
}
2009-06-08 09:22:59 +00:00
?>