#!/usr/bin/php -q Envoi les bilans saisie par les clients Sans aucun paramètre, traitement automatique. Mode test avec les options -t, --test pour voir ce qui va être fait Utilisation : >> /vers/fichier.log Functions function getRemoteFilename($infos) { $date = WDate::dateT('d/m/Y', 'Ymd', $infos['bilanCloture']); $file = $infos['siren'].'_'. $date.'_'. $infos['bilanDuree'].'_'. $infos['confidentiel'].'_'. $infos['utilisateurId']; if ($infos['env']=='PRD') { return $file; } return $file.'_'. $infos['env']; } function saveDateEnvoi($ref) { $wdb = new WDB('sdv1'); $data = array( 'dateEnvoi' => date('Y-m-d H:m:s') ); $wdb->update('bilansaisie', $data, "ref='$ref'"); } function listBilans() { $wdb = new WDB('sdv1'); $liste = $wdb->select( 'bilansaisie', 'ref, utilisateurId, confidentiel, siren, bilanCloture, bilanDuree, fichier, env', "dateEnvoi='0000-00-00 00:00:00' AND fichier!=''", false, MYSQL_ASSOC ); return $liste; } function sendToFtp($localFile, $remoteFile) { $conn_id = ftp_connect(FTP_HOST); $login_result = ftp_login($conn_id, FTP_USER, FTP_PASS); ftp_chdir($conn_id, FTP_DIR); if (ftp_put($conn_id, $remoteFile, $localFile, FTP_BINARY)) { return true; } ftp_close($conn_id); return false; } //==> Début programme $test = false; if ( in_array($argv[1], array('--test', '-t')) ) { $test = true; } /** * Liste les fichiers qui peuvent être traités */ $listBilans = listBilans(); $tabFichier = array(); foreach ($listBilans as $infos) { $filename = $infos['ref'].'-'.$infos['siren']; $extValide = array('pdf', 'tiff'); $fileExist = false; foreach ($extValide as $ext) { if (file_exists(PATH_DATA.'/bilanclient/'.$filename.'.'.$ext)) { $fileExist = true; $tabFichier[] = array( 'ref' => $infos['ref'], 'localFile' => $filename.'.'.$ext, 'remoteFile' => getRemoteFilename($infos).'.'.$ext, ); break; } } //Erreur fichier inexistant if (!$fileExist) { echo "Fichier manquant, Ref:".$infos['ref']."\n"; } } if ($test) exit; /** * Envoi sur le FTP */ foreach ($tabFichier as $fichier) { echo "Envoi du fichier ".$fichier['localFile']." => ". $fichier['remoteFile']. " (".$fichier['ref'].")\n"; if ( sendToFtp(PATH_DATA.'/bilanclient/'.$fichier['localFile'], $fichier['remoteFile']) ) { saveDateEnvoi($fichier['ref']); echo "Envoi terminé.\n"; } else { echo "Erreur d'envoi !\n"; } }