flux/fileSend.php

173 lines
4.3 KiB
PHP
Raw Normal View History

2013-08-19 13:30:59 +02:00
<?php
/**
* Client => 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'));
2013-08-19 13:30:59 +02:00
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
2013-08-19 13:30:59 +02:00
)));
/** 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",
'mail' => "Only send a mail when a file is write",
'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) )
{
$c = new Zend_Config($application->getOptions());
2013-08-27 12:27:03 +02:00
2013-08-19 13:30:59 +02:00
//Get the main directory name in FTP and SFTP
$pathParts = pathinfo($opts->file);
2013-08-27 12:27:03 +02:00
2013-08-19 13:30:59 +02:00
$filename = $pathParts['basename'];
2013-08-27 12:27:03 +02:00
$extension = '';
if (array_key_exists('extension', $pathParts) ){
$extension = $pathParts['extension'];
}
2013-08-19 13:30:59 +02:00
$client = basename(dirname($pathParts['dirname']));
$dateFile = date('YmdHis', filectime($opts->file));
2013-08-27 12:27:03 +02:00
2013-08-28 12:23:01 +02:00
$startpos = strlen( $c->profil->path->data . DIRECTORY_SEPARATOR );
2013-08-19 13:30:59 +02:00
if ( 'sftp' == substr($opts->file,$startpos,4) ) {
2013-08-27 12:27:03 +02:00
$type = 'SFTP';
2013-08-19 13:30:59 +02:00
} elseif ( 'ftp' == substr($opts->file,$startpos,3) ) {
2013-08-27 12:27:03 +02:00
$type = 'FTP';
2013-08-19 13:30:59 +02:00
}
2013-08-27 12:27:03 +02:00
$lines = file($opts->file);
2013-08-19 13:30:59 +02:00
$nbLines = count($lines);
2013-08-27 12:27:03 +02:00
$copyOptionsAddDate = false;
$copyOptionsDeleteAfter = false;
/**
* @todo : links to prestation table and file rules
*/
switch ($client) {
case 'sfrbtr' :
2013-08-27 12:27:03 +02:00
$prestation = 'FICH_RCE';
$filemask = array(
'FICH_RCE_SCORE_.*.csv',
);
2013-08-27 12:27:03 +02:00
break;
case 'gefacto':
$prestation = 'GEFACTO';
$copyOptionsAddDate = true;
break;
}
if ($copyOptionsAddDate) {
$extensionLength = 0;
if ($extension!='') {
$extensionLength = strlen($extension)+1;
}
$filename = substr($filename, 0, $extensionLength);
$filename = $filename . '_' . date('YmdHis') . '.' . $extension ;
}
2013-08-19 13:30:59 +02:00
//Prepare mail
2013-08-27 12:27:03 +02:00
if ($opts->mail || $opts->debug) {
2013-08-19 13:30:59 +02:00
$subject = "[Flux] - Réception fichier $client";
$txt = "Réception d'un fichier pour traitement\n";
$txt.= "Client : $client\n";
$txt.= "Mode de transmission : $type\n";
$txt.= "Fichier : ".$opts->file."\n";
$txt.= "Nombre de Lignes : $nbLines\n";
2013-08-27 12:27:03 +02:00
$mail = new Zend_Mail('UTF-8');
$tr = new Zend_Mail_Transport_Smtp('smtp.celeste.fr');
2013-08-27 12:27:03 +02:00
$mail->setDefaultTransport($tr);
2013-08-19 13:30:59 +02:00
$mail->setBodyText($txt);
2013-08-28 21:58:09 +02:00
$mail->setFrom('supportdev@scores-decisions.com', 'Machine');
$mail->addTo('suivi@scores-decisions.com', 'Suivi');
2013-08-19 13:30:59 +02:00
$mail->setSubject($subject);
$mail->send();
2013-08-27 12:27:03 +02:00
2013-08-19 13:30:59 +02:00
//Stop
2013-08-27 12:27:03 +02:00
if ($opts->mail) {
exit;
2013-08-19 13:30:59 +02:00
}
2013-08-27 12:27:03 +02:00
}
2013-08-19 13:30:59 +02:00
//Execute
2013-08-27 12:27:03 +02:00
$db = Zend_Db::factory($c->profil->db->metier);
2013-08-19 13:30:59 +02:00
Zend_Db_Table::setDefaultAdapter($db);
try {
$fluxM = new Application_Model_Sdv1FluxFileIn();
$fluxM->insert(array(
'client' => $client,
2013-08-27 12:27:03 +02:00
'name' => $prestation,
2013-08-28 12:23:01 +02:00
'depotType' => $type,
'depotDate' => $dateFile,
'depotFile' => $filename,
2013-08-19 13:30:59 +02:00
'nbLines' => $nbLines,
'dateInsert' => date('YmdHis'),
'dateExecute' => '0000-00-00 00:00:00',
2013-08-27 12:27:03 +02:00
));
echo date('Y-m-d H:i:s')." - Enregistrement client:$client fichier:$filename\n";
2013-08-19 13:30:59 +02:00
} catch (Zend_Db_Exception $e) {
echo date('Y-m-d H:i:s')." - ERREUR Enregistrement client:$client fichier:$filename\n";
2013-08-19 13:30:59 +02:00
}
//Copie du fichier
2013-08-27 12:27:03 +02:00
$destDir = $c->profil->path->storage .
DIRECTORY_SEPARATOR . $client .
2013-08-19 13:30:59 +02:00
DIRECTORY_SEPARATOR . 'send';
if ( !is_dir($destDir) ) {
mkdir($destDir, null, true);
}
2013-08-27 12:27:03 +02:00
if ( copy($opts->file, $destDir. DIRECTORY_SEPARATOR . $filename) ) {
echo date('Y-m-d H:i:s')." - Copie du fichier $filename dans $destDir\n";
2013-08-27 12:27:03 +02:00
if ($copyOptionsDeleteAfter) {
unlink($opts->file);
}
2013-08-19 13:30:59 +02:00
} else {
echo date('Y-m-d H:i:s')." - ERREUR Copie du fichier $filename dans $destDir\n";
2013-08-27 12:27:03 +02:00
}
2013-08-19 13:30:59 +02:00
}