209 lines
6.0 KiB
PHP
209 lines
6.0 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 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];
|
|
$annee = $matches[3];
|
|
$type = $matches[4];
|
|
if ($type == '') $type = 'sociaux';
|
|
$dateCloture = $matches[5];
|
|
|
|
//Création arborescence repertoire
|
|
$dirNew = $dirStockage.'/bilans/'.$type.'/'.$annee;
|
|
if (!is_dir($dirNew)) { mkdir($dirNew, 0777, true); }
|
|
|
|
//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;
|
|
if (preg_match('/^acte-([0-9]{9})-(ST)-([0-9]{8})-.*\.pdf/', $fichier, $matches)) {
|
|
|
|
$siren = $matches[1];
|
|
$type_acte = $matches[2];
|
|
$date_acte = $matches[3];
|
|
$annee = substr($date_acte,0,4);
|
|
$mois = substr($date_acte,4,2);
|
|
|
|
//Création arborescence repertoire
|
|
$dirNew = $dirStockage.'/actes/'.$annee.'/'.$mois;
|
|
if (!is_dir($dirNew)) { mkdir($dirNew, 0, true); }
|
|
|
|
//Copie du fichier
|
|
if (file_exists($dirNew.'/'.$fichier)) {
|
|
//echo "ACTE - Le fichier $fichier a déjà été copié.\n";
|
|
} else {
|
|
if ( copy($dirPDF.'/'.$fichier, $dirNew.'/'.$fichier) ) {
|
|
echo "ACTE - Copie du fichier $dirPDF/$fichier vers $dirNew/$fichier\n";
|
|
} else {
|
|
echo "ACTE - ERREUR - Copie du fichier $fichier impossible!\n";
|
|
}
|
|
}
|
|
} elseif (preg_match('/^acte-([0-9]{9})-([0-9a-zA-Z]{1,})-([0-9]{8})-.*-([0-9]{2})\.pdf/', $fichier, $matches)) {
|
|
$siren = $matches[1];
|
|
$type_acte = $matches[2];
|
|
$date_acte = $matches[3];
|
|
$annee = substr($date_acte,0,4);
|
|
$mois = substr($date_acte,4,2);
|
|
$num_acte = $matches[4];
|
|
|
|
$actesM = new Application_Model_ActesFiles();
|
|
$sql = $actesM->select()
|
|
->where('siren=?', $siren)
|
|
->where('type=?', $type_acte)
|
|
->where('date=?', $date_acte)
|
|
->where('num=?', $num_acte);
|
|
|
|
$result = $actesM->fetchRow($sql);
|
|
|
|
//Création arborescence repertoire
|
|
$dirNew = $dirStockage.'/actes/'.$annee.'/'.$mois;
|
|
if (!is_dir($dirNew)) { mkdir($dirNew, 0777, true); }
|
|
|
|
//Copie du fichier
|
|
if (file_exists($dirNew.'/'.$fichier)) {
|
|
//echo "ACTE - Le fichier $fichier a déjà été copié.\n";
|
|
} else {
|
|
if ( copy($dirPDF.'/'.$fichier, $dirNew.'/'.$fichier) ) {
|
|
if ( null === $result ) {
|
|
$actesM->insert(array(
|
|
'siren' => $siren,
|
|
'type' => $type_acte,
|
|
'date' => $date_acte,
|
|
'num' => $num_acte,
|
|
'file' => $fichier,
|
|
));
|
|
}
|
|
echo "ACTE - Copie du fichier $dirPDF/$fichier vers $dirNew/$fichier\n";
|
|
} else {
|
|
echo "ACTE - ERREUR - Copie du fichier $fichier impossible!\n";
|
|
}
|
|
}
|
|
}
|
|
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 != '.' ) {
|
|
if ($opts->echo) echo "Analyse du fichier $file ($i)\n";
|
|
|
|
// Traitement acte
|
|
if ($opts->acte) {
|
|
if ( preg_match('/^acte-([0-9]{9})-([0-9a-zA-Z]{1,})-/', $file) ) {
|
|
fichierActe($file);
|
|
}
|
|
}
|
|
|
|
// Traitement bilan
|
|
if ($opts->bilan) {
|
|
if ( preg_match('/^(bilan|acte)-([0-9]{9})-([0-9]{4})_/', $file) ) {
|
|
fichierBilan($file);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
} |