"Displays usage information.", 'cron' => "Mandatory option with cron", 'verbose|v' => "Affichage de ce qui est fait." )); $opts->parse(); } catch (Zend_Console_Getopt_Exception $e) { $displayUsage = true; } // --- Aide / Options if (count($opts->getOptions())==0 || isset($opts->help)) { $displayUsage = true; } // --- Usage if ($displayUsage) { echo "Fallback pour distribuer les fichiers si la gestion par event n'as pas fonctionné.\n"; echo $opts->getUsageMessage(); exit; } $c = new Zend_Config($application->getOptions()); $db = Zend_Db::factory($c->profil->db->metier); Zend_Db_Table::setDefaultAdapter($db); $fileConfig = include __DIR__ . '/fileConfig.php'; if (count($fileConfig) > 0) { foreach ($fileConfig as $client => $prestations) { if (count($prestations) > 0) { foreach($prestations as $p) { $prestation = $p['name']; $type = $p['type']; $optionsCopyAddDate = false; $optionsCopyDeleteAfter = false; $optionsRunWithEndFile = false; $optionsLog = true; $optionsRoute = array(); $optionsFilterName = false; // --- Set options if (array_key_exists('in', $p) && count($p['in']) > 0) { foreach ($p['in'] as $option => $value) { ${'options'.$option} = $value; } } $repositoryDir = 'send'; // --- Base path, type and repository $startpos = strlen( $c->profil->path->data . '/' ); if ($type == 'SFTP') { $fluxBasePath = $c->profil->path->sftp . '/' . $client; } elseif ($type == 'FTP') { $fluxBasePath = $c->profil->path->ftp . '/' . $client; } // --- Repository dir if (array_key_exists('directory', $p) && !empty($p['directory'])) { $repositoryDir = $p['directory']; } $fluxBasePath = $fluxBasePath . '/' . $repositoryDir; // --- Get files $it = new FilesystemIterator($fluxBasePath); foreach ($it as $fileinfo) { $filenameIn = $fileinfo->getFilename(); $extension = $fileinfo->getExtension(); // --- Don't play with *.tck files if ($extension == 'tck') { continue; } // --- Filters if ($optionsFilterName === true) { if ( strpos($filenameIn, $prestation) === false ) { $prestation = null; continue; } } if (is_string($optionsFilterName) && strlen($optionsFilterName) > 0) { if (strpos($filenameIn, $optionsFilterName) === false) { $prestation = null; continue; } } // --- Use ".fin" or ".end" files to do something $runExtensions = array('fin', 'end'); if (in_array($extension, $runExtensions)) { if ($optionsRunWithEndFile) { $extToDelete = $extension; if (file_exists($fluxBasePath . '/' . $filenameIn)) { $pathParts = pathinfo($fluxBasePath . '/' . $filenameIn); $filenameIn = $pathParts['basename']; } else { echo "Fichier fin inexistant $filenameIn\n"; continue; } } else { continue; } } // --- Get the realname of file IN or exit if ($optionsRunWithEndFile) { if (in_array($extension, $runExtensions)) { $extensionLength = strlen($extension)+1; $filenameIn = substr($filenameIn, 0, strlen($filenameIn) - $extensionLength); $extension = ''; } else { continue; } } // --- Detail du fichier $nbLines = 0; if ( strtolower(substr($filenameIn, -3)) == 'csv' ) { $lines = file($fluxBasePath . '/' . $filenameIn); $nbLines = count($lines); } $size = filesize($fluxBasePath . '/' . $filenameIn); $dateFile = date('YmdHis', filectime($fluxBasePath . '/' . $filenameIn)); // --- Define default out filename $filenameOut = $filenameIn; // --- Add date to filename if ($optionsCopyAddDate) { $extensionLength = 0; if ($extension != '') { $extensionLength = strlen($extension)+1; $filenameOut = substr($filenameIn, 0, strlen($filenameIn) - $extensionLength); $filenameOut = $filenameOut . '_' . date('YmdHis') . '.' . $extension; } else { $filenameOut = $filenameIn . '_' . date('YmdHis'); } } // --- Before store the file send to another repository if (count($optionsRoute) > 0) { foreach ($optionsRoute as $tr => $value) { switch($tr) { case 'cp': if (copy($fluxBasePath . '/' . $filenameIn, $value . '/' . $filenameOut)) { echo date('Y-m-d H:i:s')." - Copie du fichier $filenameIn dans $value\n"; } break; } } } // --- Copy file $destDir = $c->profil->path->storage . '/' . $client . '/send'; if (!is_dir($destDir)) { mkdir($destDir, 0755, true); } if (copy($fluxBasePath . '/' . $filenameIn, $destDir. '/' . $filenameOut)) { echo date('Y-m-d H:i:s')." - Copie du fichier $filenameIn dans $destDir\n"; // --- Execute if ($optionsLog === true) { $db = Zend_Db::factory($c->profil->db->metier); Zend_Db_Table::setDefaultAdapter($db); try { $fluxM = new Application_Model_Sdv1FluxFileIn(); $fluxM->insert(array( 'client' => $client, 'name' => $prestation, 'depotType' => $type, 'depotDate' => $dateFile, 'depotFile' => $filenameOut, 'nbLines' => $nbLines, 'depotFileSize' => $size, 'dateInsert' => date('YmdHis'), 'dateExecute' => '0000-00-00 00:00:00', // @todo : dateExecute )); echo date('Y-m-d H:i:s')." - Enregistrement client:$client fichier:$filenameOut\n"; } catch (Zend_Db_Exception $e) { echo date('Y-m-d H:i:s')." - ERREUR Enregistrement client:$client fichier:$filenameOut\n"; } } // --- Suppression des fichiers if ($optionsCopyDeleteAfter) { unlink( $fluxBasePath . '/' . $filenameIn ); if ($optionsRunWithEndFile) { unlink( $fluxBasePath . '/' . $filenameIn . '.' . $extToDelete ); } } } else { echo date('Y-m-d H:i:s')." - ERREUR Copie du fichier $filenameIn dans $destDir\n"; } } } } } }