From 9cc6a9af4f160affd444b0a7b3119bea82f9b216 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Tue, 31 Mar 2015 07:04:11 +0000 Subject: [PATCH] Date de lecture des fichiers --- fileRead.php | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 fileRead.php diff --git a/fileRead.php b/fileRead.php new file mode 100644 index 0000000..3fb5d7f --- /dev/null +++ b/fileRead.php @@ -0,0 +1,166 @@ + SD + * Attention le script doit s'executer avec l'utilisateur root + */ + +// Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application')); + +// 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|?' => "Displays usage information.", + 'file|f=s' => "Give the full file path to integrate", + 'debug' => "Send a mail for debug", + ) + ); + $opts->parse(); +} catch (Zend_Console_Getopt_Exception $e) { + echo $e->getUsageMessage(); + exit; +} + +//Usage +if( isset($opts->help) || count($opts->getOptions())==0 ) +{ + echo "Execute basic action when a customer send a file.\n"; + echo $opts->getUsageMessage(); + exit; +} + +//Get the file +if ( isset($opts->file) ) +{ + $optionsNoLog = false; + $repositoryDir = 'recv'; + + $c = new Zend_Config($application->getOptions()); + + //Get the main directory name in FTP and SFTP + $pathParts = pathinfo($opts->file); + $filenameIn = $pathParts['basename']; + $extension = ''; + if (array_key_exists('extension', $pathParts)) + { + $extension = $pathParts['extension']; + } + $client = basename(dirname($pathParts['dirname'])); + + // Base path, type and repository + $startpos = strlen( $c->profil->path->data . DIRECTORY_SEPARATOR ); + if ('sftp' == substr($opts->file, $startpos, 4)) + { + $type = 'SFTP'; + $fluxBasePath = $c->profil->path->sftp . '/' . $client; + } + elseif ('ftp' == substr($opts->file, $startpos, 3)) + { + $type = 'FTP'; + $fluxBasePath = $c->profil->path->ftp . '/' . $client; + } + $fluxRepository = str_replace(array($fluxBasePath.'/', '/'.$filenameIn), array('', ''), $opts->file); + + // Match prestation + $prestations = include __DIR__ . '/fileConfig.php'; + $prestation = null; + if (array_key_exists($client, $prestations)) + { + $clientPrestations = $prestations[$client]['prestations']; + foreach ($clientPrestations as $i => $p) + { + // Not default repository dir + if (array_key_exists('directory', $p) && !empty($p['directory'])) + { + $repositoryDir = $p['directory']; + } + + if ($type == $p['type'] && $fluxRepository == $repositoryDir) + { + $prestation = $p['name']; + + // Set option + if (array_key_exists('in', $p) && count($p['in']) > 0) + { + foreach ($p['in'] as $option => $value) + { + ${'options'.$option} = $value; + } + } + + break; + } + } + } + + if ($prestation === null) + { + echo date('Y-m-d H:i:s')." - Prestation not found !\n"; + } + + $fluxBasePath .= '/'.$repositoryDir; + + //Prepare mail + if ($opts->mail || $opts->debug) + { + $subject = "[Flux] - Lecture fichier $client"; + $txt = "Lecture d'un fichier\n"; + $txt.= "Client : $client\n"; + $txt.= "Mode de transmission : $type\n"; + $txt.= "Fichier : ".$filenameIn."\n"; + $txt.= "Nombre de Lignes : $nbLines\n"; + $txt.= "Taille du fichier : $size\n"; + + $mail = new Zend_Mail('UTF-8'); + $tr = new Zend_Mail_Transport_Smtp('smtp.celeste.fr'); + $mail->setDefaultTransport($tr); + $mail->setBodyText($txt); + $mail->setFrom('supportdev@scores-decisions.com', 'Machine'); + $mail->addTo('suivi@scores-decisions.com', 'Suivi'); + $mail->setSubject($subject); + $mail->send(); + + //Stop + if ($opts->mail) + { + exit; + } + } + + // --- Execute + if ($optionsNoLog === false) + { + $db = Zend_Db::factory($c->profil->db->metier); + Zend_Db_Table::setDefaultAdapter($db); + try { + $fluxM = new Application_Model_Sdv1FluxFileOut(); + $fluxM->update(array('depotDateRead' => date('YmdHis')), "fileOut='".$filenameIn."'"); + echo date('Y-m-d H:i:s')." - Enregistrement client:$client fichier:$filenameIn\n"; + } + catch (Zend_Db_Exception $e) + { + echo date('Y-m-d H:i:s')." - ERREUR Enregistrement client:$client fichier:$filenameIn\n"; + } + } +} \ No newline at end of file