batch/scripts/sources/JalTable.php

186 lines
6.2 KiB
PHP
Raw Normal View History

<?php
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED);
2015-09-14 20:31:06 +00:00
// --- Define path to application directory
defined('APPLICATION_PATH')
2015-09-14 20:31:06 +00:00
|| define('APPLICATION_PATH', realpath(__DIR__ . '/../../application'));
2015-09-14 20:31:06 +00:00
// --- Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// --- Composer autoload
2015-09-14 20:31:06 +00:00
require_once realpath(__DIR__ . '/../../vendor/autoload.php');
2015-09-14 20:31:06 +00:00
// --- 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.",
'cron' => "Mandatory option for launch the cli in cron",
)
);
$opts->parse();
} catch (Zend_Console_Getopt_Exception $e) {
echo $e->getUsageMessage();
exit;
}
//Usage
if( isset($opts->help) || count($opts->getOptions())==0 )
{
2015-04-14 15:21:10 +00:00
echo "Orone Table.\n";
echo $opts->getUsageMessage();
exit;
}
$c = new Zend_Config($application->getOptions());
$db = Zend_Db::factory($c->profil->db->metier);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$requests = array(
'REF_CodeJournal_' => array(
2015-11-23 14:44:58 +00:00
'header' => array('id', 'nomJALedition', 'parution', 'parutionJours', 'aboDateDeb', 'aboDateFin', 'priorite'),
'columns' => array('id', 'nomJALedition', 'parution', 'parutionJours', 'aboDateDeb', 'aboDateFin', 'priorite'),
'sql' => "SELECT jal.id, jal.nomJALedition, jal.parution, jal.parutionJours, jalabo.aboDateDeb, jalabo.aboDateFin,
IF(jal.jalPrioritaire=1,'A',IF(jal.parution='Q','C','B')) AS priorite
FROM jo.tabJALed AS jal
LEFT JOIN ( SELECT abo.jalId, abo.aboDateDeb, abo.aboDateFin FROM jo.tabJALabo AS abo
WHERE abo.aboDateDeb < NOW() AND abo.aboDateFin > NOW()
GROUP BY abo.jalId ORDER BY abo.aboDateFin DESC
) AS jalabo ON jalabo.jalId = jal.id
WHERE jal.dateSuppr=0 ORDER BY jal.id",
),
'REF_CodeFormeJuridique_' => array(
2015-04-23 13:25:25 +00:00
'header' => array('code', 'libelle', 'libelleCourt'),
'columns' => array('code', 'libelle', 'libelleCourt'),
2015-04-14 15:21:10 +00:00
'sql' => array(
"SET @sumSirene := (SELECT SUM(nbSirene) FROM jo.tabFJur);",
2015-04-23 13:25:25 +00:00
"SELECT code, libelle, libelleCourt, (nbSirene/@sumSirene )*100 AS pourcentage
2015-04-14 15:21:10 +00:00
FROM jo.tabFJur
WHERE code>999 AND libelle <> ''
ORDER BY pourcentage DESC;"
),
),
'REF_CodeTribunal_' => array(
'header' => array('triId', 'triCode', 'triType', 'triNom', 'triVille'),
'columns' => array('triId', 'triCode', 'triType', 'triNom', 'triVille'),
'sql' => "SELECT triId, triCode, triType, triNom, triVille
FROM jo.tribunaux
WHERE triType IN ('L', 'C', 'I', 'G', 'M');",
),
/*'REF_Evenements' => array(
'header' => array('triId', 'triCode', 'triType', 'triNom', 'triVille'),
'columns' => array('triId', 'triCode', 'triType', 'triNom', 'triVille'),
'sql' => "SELECT triId, triCode, triType, triNom, triVille
FROM jo.tribunaux
WHERE triType IN ('L', 'C', 'I', 'G', 'M');",
),*/
);
$dateBegin = date('YmdHis');
$dateFile = date('Ymd');
//Output path
2015-04-14 15:21:10 +00:00
$client = 'orone';
$pathOut = $c->profil->path->storage . '/clients/' . $client . '/recv';
foreach($requests as $n => $r) {
$fileOptionsOut = array(
'dir' => $pathOut,
'type' => 'csv',
'delimiter' => ';',
'enclosure' => '"',
'header' => $r['header'],
'columns' => $r['columns'],
'name' => $n,
//'encoding' => 'ISO-8859-15',
);
2015-07-20 08:14:39 +00:00
// --- Requete SQL
2015-04-14 15:21:10 +00:00
if (is_array($r['sql'])){
$i = 0;
foreach ($r['sql'] as $request)
{
$sql = $request;
if ($i > count($r['sql']) - 1 ) {
break;
}
$db->query($sql);
$i++;
}
} else {
$sql = $r['sql'];
}
$result = $db->fetchAll($sql, null, Zend_Db::FETCH_OBJ);
if ($result === null) {
echo date('Y-m-d H:i:s')." - Pas de résultats\n";
} else {
// --- Ecriture du fichier
$filename = $fileOptionsOut['name'] . $dateFile . '.' . $fileOptionsOut['type'];
$file = $fileOptionsOut['dir'] . '/' . $filename;
// --- Ouverture fichier
$fp = fopen($file, 'w');
if ( $fp === false ) {
echo date('Y-m-d H:i:s')." - ERREUR Impossible de créer le fichier ".$file."\n";
exit;
}
// --- Header
if ( count($fileOptionsOut['header']) > 0 ) {
fputcsv($fp, $fileOptionsOut['header'], $fileOptionsOut['delimiter'], $fileOptionsOut['enclosure']);
}
2015-07-20 08:14:39 +00:00
foreach ($result as $item) {
2015-07-20 08:14:39 +00:00
$values = (array)$item;
2015-07-20 08:14:39 +00:00
// --- Trier données
$line = array();
foreach ( $fileOptionsOut['columns'] as $i => $column ) {
$line[] = $values[$column];
}
// --- Ecrire ligne
if ( empty($fileOptionsOut['enclosure']) ) {
fwrite($fp, join($fileOptionsOut['delimiter'], $line)."\n");
} else {
fputcsv($fp, $line, $fileOptionsOut['delimiter'], $fileOptionsOut['enclosure']);
}
2015-07-20 08:14:39 +00:00
}
2015-07-20 08:14:39 +00:00
// --- Fermeture fichier
fclose($fp);
2015-07-20 08:14:39 +00:00
// --- Taille du fichier
$size = filesize($file);
2015-07-20 08:14:39 +00:00
// --- Inscription pour livraison automatique dans le flux
try {
$fileoutM = new Application_Model_Sdv1FluxFileOut();
$isInsert = $fileoutM->insert(array(
'client' => 'orone',
'name' => 'TABLE',
'nbLines' => 0,
'dateBegin' => $dateBegin,
'dateEnd' => date('YmdHis'),
'fileOut' => $filename,
'depotFileSize' => $size,
'depotType' => 'FTP',
'depotDate' => '0000-00-00 00:00:00',
));
} catch (Zend_Db_Exception $e) {
echo date('Y-m-d H:i:s')." - ".$e->getMessage()."\n";
continue;
}
2015-07-20 08:14:39 +00:00
}
2015-07-20 08:14:39 +00:00
}