extranet/scripts/jobs/filesGreffes.php

201 lines
4.9 KiB
PHP

<?php
// 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|?' => "Affiche l'aide.",
'acte' => "Intégration des actes ",
'bilan' => "Intégration des bilans",
'echo' => "Affiche les informations lors du traitement",
)
);
$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;
}
$c = new Zend_Config($application->getOptions());
Zend_Registry::set('config', $c);
/**
* Connexion à la base de données
*/
$db = Zend_Db::factory($c->profil->db->sdv1);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
function arboDir($dir, $subdir, $bloc_subdir)
{
$dir = $dir.'/'.$subdir;
if (!is_dir($dir))
{
echo "Création du répertoire $dir\n";
mkdir($dir);
}
foreach ($bloc_subdir as $bloc)
{
$dir = $dir.'/'.$bloc;
if (!is_dir($dir))
{
echo "Création du répertoire $dir\n";
mkdir($dir);
}
}
return $dir;
}
function fichierBilan($fichier)
{
global $dirStockage, $dirPDF;
if (preg_match('/^(bilan|acte)-([0-9]{9})-([0-9]{4})_([a-z]{0,})-([0-9]{8})/', $fichier, $matches))
{
$siren = $matches[2];
$blocSiren = array(
substr($siren, 0, 3),
substr($siren, 3, 3),
substr($siren, 6, 3)
);
$annee = $matches[3];
$type = $matches[4];
if ($type == '') $type = 'sociaux';
$dateCloture = $matches[5];
//Création arborescence repertoire
$dirNew = $dirStockage.'/bilans';
if (!is_dir($dirNew)) { mkdir($dirNew); }
$dirNew.= '/'.$type;
if (!is_dir($dirNew)) { mkdir($dirNew); }
$dirNew.= '/'.$annee;
if (!is_dir($dirNew)) { mkdir($dirNew); }
//Copie du fichier
$fichierDest = 'bilan-'.$siren.'-'.$type.'-'.$dateCloture.'.pdf';
if (file_exists($dirNew.'/'.$fichierDest))
{
echo "BILAN - Le fichier $fichier a déjà été copié.\n";
}
else
{
if ( copy($dirPDF.'/'.$fichier, $dirNew.'/'.$fichierDest) )
{
echo "BILAN - Copie du fichier $dirPDF/$fichier vers $dirNew/$fichierDest\n";
}
else
{
echo "BILAN - ERREUR - Copie du fichier $fichier impossible!\n";
}
}
}
else
{
echo "BILAN - ERREUR - Fichier $fichier ne correspond pas au schéma.\n";
}
}
function fichierActe($fichier)
{
global $dirStockage, $dirPDF;
//acte-388048308-ACSSPRH-20090630-9201-00-B-01374-30975-02.pdf
if (preg_match('/^acte-([0-9]{9})-([0-9a-zA-Z]{1,})-([0-9]{8})-(.*)-(.*)-(.*)-(.*)-(.*)-([0-9]{1,})\.pdf$/', $fichier, $matches)){
$siren = $matches[1];
$type_acte = $matches[2];
$date_acte = $matches[3];
$num_acte = $matches[9];
$file = $fichier;
$actesM = new Application_Model_ActesFiles();
$sql = $actesM->select()->where('file=?',$file);
$result = $actesM->fetchRow($sql);
if ( null === $result ) {
$actesM->insert(array(
'siren' => $siren,
'type' => $type_acte,
'date' => $date_acte,
'num' => $num_acte,
'file' => $file,
));
}
}
else
{
echo "ACTE - ERREUR - Fichier $fichier ne correspond pas au schéma.\n";
}
}
//=> Start
$dirPDF = '/var/www/data/pdf';
$dirStockage = '/var/www/data/greffes';
if (!is_dir($dirStockage))
{
echo "Le nouveau répertoire $dirStockage n'a pas été trouvé.\n";
exit;
}
if (!is_dir($dirStockage.'/bilans'))
{
mkdir($dirStockage.'/bilans');
}
if (!is_dir($dirStockage.'/actes'))
{
mkdir($dirStockage.'/actes');
}
$i = 0;
if ($handle = opendir($dirPDF)) {
while ( false !== ($file = readdir($handle)) ) {
$i++;
if ( $file != '..' && $file != '.' ) {
echo "Analyse du fichier $file ($i)\n";
// Traitement acte
if ($opts->acte) {
if ( preg_match('/^acte-([0-9]{9})-([0-9a-zA-Z]{2})-/', $file) ) {
fichierActe($file);
}
}
// Traitement bilan
if ($opts->bilan) {
if ( preg_match('/^(bilan|acte)-([0-9]{9})-([0-9]{4})_/', $file) ) {
fichierBilan($file);
}
}
}
}
}