247 lines
8.3 KiB
PHP
247 lines
8.3 KiB
PHP
#!/usr/bin/php -q
|
|
<?php
|
|
|
|
// Paramètres
|
|
if ( 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.
|
|
|
|
Mode test avec les options -t, --test, -test pour voir ce qui va être fait
|
|
|
|
Utilisation :
|
|
<?php echo $argv[0]; ?> >> /vers/fichier.log
|
|
<?php
|
|
exit;
|
|
}
|
|
|
|
$test = false;
|
|
if (in_array($argv[1], array('--test', '-test', '-t'))){
|
|
$test = true;
|
|
}
|
|
|
|
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');
|
|
|
|
$report_email = 'production@scores-decisions.com';
|
|
$report_subject = 'Traitement des actes '.date('Y-m-d H:i:s');
|
|
$report_txt = '';
|
|
|
|
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;
|
|
return true;
|
|
} else {
|
|
echo date ('Y/m/d - H:i:s').' - ERREUR : Impossible d\'envoyer l\'email à '.$commande['emailCommande']." pour la commande $nomCible.".EOL;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
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 depuis la base de données
|
|
*/
|
|
$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 commandes en attente de réception courrier ou numérisation !$eol";
|
|
|
|
/**
|
|
* Connexion au site FTP pour la récupération de la liste des fichiers au format pdf
|
|
*/
|
|
$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;
|
|
}
|
|
$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");
|
|
|
|
/**
|
|
* Liste de tout les fichiers disponible dans le repertoire
|
|
* et associe une clé pour faciliter le tri
|
|
*/
|
|
$tabFichiersFtp = array();
|
|
foreach ($contents as $filename){
|
|
$indice = 0;
|
|
if (preg_match('/[g|c][0-9]+\.pdf/', $filename) ||
|
|
preg_match('/[g|c][0-9]+-[0-9]{1,2}\.pdf/', $filename)){
|
|
list($ref, $indice) = explode(
|
|
'-',
|
|
str_replace(array('.pdf', 'g', 'c'), array('','',''), $filename)
|
|
);
|
|
if(empty($indice)) $indice = 0;
|
|
$tabFichiersFtp[$ref.'-'.$indice] = strtolower($filename);
|
|
// Fichiers en anomalies
|
|
} else {
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tri des fichiers par ordre décroissant
|
|
* Les noms des fichiers sont incrémenté par 1
|
|
*/
|
|
krsort($tabFichiersFtp);
|
|
|
|
/**
|
|
* 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 = '';
|
|
$tabFichiersTemp = array();
|
|
foreach($tabFichiersFtp as $k => $val)
|
|
{
|
|
list($ref, $indice) = explode('-',$k);
|
|
if( $lastRef != $ref ) {
|
|
$tabFichiersTemp[$ref] = $val;
|
|
}
|
|
$lastRef = $ref;
|
|
}
|
|
$tabFichiers = $tabFichiersTemp;
|
|
unset($tabFichiersTemp);
|
|
|
|
/**
|
|
* Pour chaque commande, test de la présence d'un fichier associé
|
|
* Si le fichier correspond téléchargement du fichier
|
|
*/
|
|
foreach ($tabCommandes as $ref => $commande){
|
|
foreach ($tabFichiers as $refAssocie => $fichier){
|
|
if (substr($ref,1) == $refAssocie){
|
|
echo date ('Y/m/d - H:i:s')." - Traitement de la commande $ref ".EOL;
|
|
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)){
|
|
if (ftp_get($conn_id, ACTES_IGNUM_LOCAL_DIR.$fichier, $fichier, FTP_BINARY, 0)) {
|
|
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;
|
|
}
|
|
}
|
|
|
|
//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";
|
|
}
|
|
if (file_exists(ACTES_IGNUM_LOCAL_DIR.$fichier) &&
|
|
!file_exists(ACTES_IG_LOCAL_DIR.$nomCible)){
|
|
if (rename(ACTES_IGNUM_LOCAL_DIR.$fichier, ACTES_IG_LOCAL_DIR.$nomCible)){
|
|
echo date ('Y/m/d - H:i:s')." - Fichier ".ACTES_IGNUM_LOCAL_DIR.$fichier." déplacé en ".ACTES_IG_LOCAL_DIR.$nomCible.".".EOL;
|
|
} 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;
|
|
}
|
|
}
|
|
|
|
//Envoi du mail et Mise à jour de la commande
|
|
$testMail = false;
|
|
if (file_exists(ACTES_IG_LOCAL_DIR.$nomCible)){
|
|
if ($testMail){
|
|
echo "Envoi fichier $nomCible ($ref) à ".$commande['emailCommande'];
|
|
} else {
|
|
$report_txt.= "$ref intégré à l'extranet";
|
|
$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']
|
|
);
|
|
$report_txt.= ' - Email envoyé à '.$commande['emailCommande'];
|
|
} else {
|
|
$report_txt.= ' - Email non envoyé !';
|
|
echo date ('Y/m/d - H:i:s')." ERREUR - Email non envoyé et commande $ref non mise à jour".EOL;
|
|
}
|
|
$report_txt.= "\n";
|
|
}
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
ftp_close($conn_id);
|
|
|
|
//Envoi du mail de rapport
|
|
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 !";
|
|
}
|
|
}
|
|
|
|
?>
|