2011-08-10 15:07:10 +00:00
#!/usr/bin/php -q
< ? php
// Define path to application directory
defined ( 'APPLICATION_PATH' )
2012-11-16 09:34:42 +00:00
|| define ( 'APPLICATION_PATH' , realpath ( dirname ( __FILE__ ) . '/../../application' ));
2011-08-10 15:07:10 +00:00
// Define application environment
defined ( 'APPLICATION_ENV' )
|| define ( 'APPLICATION_ENV' , ( getenv ( 'APPLICATION_ENV' ) ? getenv ( 'APPLICATION_ENV' ) : 'production' ));
// Ensure library/ is on include_path
set_include_path ( implode ( PATH_SEPARATOR , array (
realpath ( APPLICATION_PATH . '/../library' ),
get_include_path (),
)));
/** Zend_Application */
require_once 'Zend/Application.php' ;
// Create application, bootstrap, and run
$application = new Zend_Application (
APPLICATION_ENV ,
APPLICATION_PATH . '/configs/application.ini'
);
try {
$opts = new Zend_Console_Getopt (
//Options
array (
'help|?' => " Affiche l'aide. " ,
'list' => " Liste les actes en attente disponible sur le FTP et affiche les informations " ,
'get-s' => " Recupère seulement les actes du FTP (un seul document si la référence est spécifier G<NNN> ) " ,
'send-s' => " Récupère les actes et envoi un mail à chaque client (un seul acte si la référence est spécifier G<NNN>) " ,
)
);
$opts -> parse ();
} catch ( Zend_Console_Getopt_Exception $e ) {
echo $e -> getUsageMessage ();
exit ;
}
//Usage
if ( count ( $opts -> getOptions ()) == 0 || isset ( $opts -> help ))
{
echo " Vérifie les actes numérisés reçus en provenance des Greffes. " ;
echo " \n \n " ;
echo $opts -> getUsageMessage ();
echo " \n " ;
exit ;
}
2012-11-16 09:34:42 +00:00
$c = new Zend_Config ( $application -> getOptions ());
Zend_Registry :: set ( 'config' , $c );
2011-08-10 15:07:10 +00:00
$test = false ;
if ( isset ( $opts -> list )){
2011-09-29 15:15:14 +00:00
$test = true ;
2011-08-10 15:07:10 +00:00
}
//Configuration FTP
define ( 'ACTES_IGNUM_FTP_URL' , 'ftp2.scores-decisions.com' );
define ( 'ACTES_IGNUM_FTP_USER' , 'mpc2500' );
define ( 'ACTES_IGNUM_FTP_PASS' , 'passmpc78' );
2012-11-16 14:12:03 +00:00
define ( 'PATH_DATA' , $c -> profil -> path -> data );
2012-11-16 09:34:42 +00:00
define ( 'ACTES_IGNUM_LOCAL_DIR' , PATH_DATA . '/pdf/scan/' );
define ( 'ACTES_IG_LOCAL_DIR' , PATH_DATA . '/pdf/' );
2011-08-10 15:07:10 +00:00
2012-11-16 14:12:03 +00:00
$report_email = $c -> profil -> mail -> email -> support ;
2011-08-10 15:07:10 +00:00
$report_subject = 'Traitement des actes ' . date ( 'Y-m-d H:i:s' );
$report_txt = '' ;
require_once '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/fichier/pdf/ $nomCible\r\n " ;
$headers = 'From: infoslegales@scores-decisions.com' . " \r \n " .
'Reply-To: infoslegales@scores-decisions.com' ;
2012-01-17 15:16:35 +00:00
if ( mail ( $commande [ 'emailCommande' ], $subject , utf8_decode ( $message ), $headers ) ){
2012-01-17 15:14:22 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - Un email a été envoyé à ' . $commande [ 'emailCommande' ] . " pour la commande $nomCible . \n " ;
2011-08-10 15:07:10 +00:00
return true ;
} else {
2012-01-17 15:14:22 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Impossible d\'envoyer l\'email à ' . $commande [ 'emailCommande' ] . " pour la commande $nomCible . \n " ;
2011-08-10 15:07:10 +00:00
return false ;
}
}
set_time_limit ( 0 );
/**
* Connexion à la base de données
*/
2012-11-16 14:12:03 +00:00
$db = Zend_Db :: factory ( $c -> profil -> db -> sdv1 );
2011-08-10 15:07:10 +00:00
Zend_Db_Table_Abstract :: setDefaultAdapter ( $db );
/**
* Liste des commandes non traités depuis la base de données
*/
2012-01-27 12:51:15 +00:00
$sql = " SELECT idCommande, idUser, login, emailCommande, siren, refDocument, typeCommande, dateCommande FROM commandes WHERE dateReception=0 " ;
2011-08-10 15:07:10 +00:00
$tabCommandes = $db -> fetchAssoc ( $sql );
$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 );
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbCommandes commandes en attente de réception courrier ou numérisation ! \n " ;
2011-08-10 15:07:10 +00:00
/**
* 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 ) {
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de se connecter au serveur FTP ( " . ACTES_IGNUM_FTP_URL . " ) ! \n " ;
2011-08-10 15:07:10 +00:00
exit ;
}
$login_result = ftp_login ( $conn_id , ACTES_IGNUM_FTP_USER , ACTES_IGNUM_FTP_PASS );
if ( ! $login_result ) {
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de s'authentifier sur le serveur FTP ( " . ACTES_IGNUM_FTP_URL . " )! \n " ;
2011-08-10 15:07:10 +00:00
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 ;
2012-11-02 20:26:44 +00:00
if ( preg_match ( '/[g|c][0-9]+\.pdf/' , $filename )
2012-01-17 14:49:39 +00:00
|| 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 );
2011-08-10 15:07:10 +00:00
// 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 ){
2012-01-17 15:14:22 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Traitement de la commande $ref\n " ;
2011-08-10 15:07:10 +00:00
if ( $test ){
2012-01-17 15:14:22 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier $fichier \n " ;
2011-08-10 15:07:10 +00:00
} 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 )) {
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier $fichier téléchargé depuis le serveur FTP. \n " ;
2011-08-10 15:07:10 +00:00
} else {
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Impossible de télécharger le fichier $fichier ! \n " ;
2011-08-10 15:07:10 +00:00
}
}
//Copie et renommage du fichier suivant la ref infogreffe (s'il n'existe pas déjà)
$sirenC = $commande [ 'siren' ];
$refC = $commande [ 'refDocument' ];
2012-11-02 20:26:44 +00:00
2012-11-02 21:45:08 +00:00
require_once 'Infogreffe/Infogreffe.php' ;
2012-11-02 20:26:44 +00:00
$infogreffe = new Infogreffe ();
2011-08-10 15:07:10 +00:00
if ( preg_match ( '/^([0-9]{4}_).*?$/' , $refC , $matches )){
2012-11-02 20:26:44 +00:00
$path = $infogreffe -> bilanPath ( $refC );
$nomCible = $infogreffe -> bilanFilename ( $sirenC , $refC );
} else {
$path = $infogreffe -> actePath ( $refC );
$nomCible = $infogreffe -> acteFilename ( $sirenC , $refC );
2011-08-10 15:07:10 +00:00
}
2012-11-02 20:26:44 +00:00
2011-08-10 15:07:10 +00:00
if ( file_exists ( ACTES_IGNUM_LOCAL_DIR . $fichier ) &&
2012-11-02 20:26:44 +00:00
! file_exists ( PATH_DATA . $path . $nomCible )) {
if ( rename ( ACTES_IGNUM_LOCAL_DIR . $fichier , PATH_DATA . $path . $nomCible )){
echo date ( 'Y/m/d - H:i:s' ) . " - Fichier " . ACTES_IGNUM_LOCAL_DIR . $fichier . " déplacé en " . PATH_DATA . $path . $nomCible . " . \n " ;
2011-08-10 15:07:10 +00:00
} else {
2012-11-02 20:26:44 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " ERREUR - Impossible de déplacer " . ACTES_IGNUM_LOCAL_DIR . $fichier . " en " . PATH_DATA . $path . $nomCible . " ! \n " ;
2011-08-10 15:07:10 +00:00
}
}
//Envoi du mail et Mise à jour de la commande
$testMail = false ;
2012-11-02 20:26:44 +00:00
if ( file_exists ( PATH_DATA . $path . $nomCible )){
2011-08-10 15:07:10 +00:00
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 ){
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Commande $ref mise à jour \n " ;
2012-01-17 14:57:33 +00:00
$commandesM = new Application_Model_Commandes ();
2011-08-10 15:07:10 +00:00
$data = array ( 'dateReception' => date ( 'YmdHis' ));
2012-01-17 14:57:33 +00:00
$commandesM -> update ( $data , 'idCommande=' . $commande [ 'idCommande' ]);
2011-08-10 15:07:10 +00:00
$report_txt .= ' - Email envoyé à ' . $commande [ 'emailCommande' ];
} else {
$report_txt .= ' - Email non envoyé !' ;
2012-01-17 14:49:39 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " ERREUR - Email non envoyé et commande $ref non mise à jour \n " ;
2011-08-10 15:07:10 +00:00
}
$report_txt .= " \n " ;
}
}
}
break ;
}
}
}
ftp_close ( $conn_id );
2012-11-19 16:03:12 +00:00
if ( empty ( $report_txt )) {
$report_txt = " Aucun envoi. " ;
}
2011-08-10 15:07:10 +00:00
//Envoi du mail de rapport
if ( ! $test && ! $testMail ){
2012-01-17 15:14:22 +00:00
if ( mail ( $report_email , $report_subject , utf8_decode ( $report_txt ))){
2012-11-05 13:53:14 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Rapport envoyé. \n " ;
2011-08-10 15:07:10 +00:00
} else {
2012-11-05 13:53:14 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Erreur lors de l'envoir du rapport ! \n " ;
2011-08-10 15:07:10 +00:00
}
}
?>