1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| <?php
namespace Gg\SiteBundle\Command;
use Gg\SiteBundle\Entity\Photo;
use Gg\SiteBundle\Form\PhotoType;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
Class MajCommand extends ContainerAwareCommand{
protected function configure()
{
$this
->setName('photo:maj')
->setDescription('Mise à jour de la base de données de photos');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
function liste_fichiers($root = '.',$extensions_autorisees)
{
$fichiers = array('fichiers'=>array(), 'dossiers'=>array());
$directories = array();
$last_letter = $root[strlen($root)-1];
$root = ($last_letter == '\\' || $last_letter == '/') ? $root : $root.DIRECTORY_SEPARATOR;
$directories[] = $root;
while (sizeof($directories)) {
$dossier = array_pop($directories);
if ($ressource = opendir($dossier)) {
while (false !== ($fichier = readdir($ressource))) {
if ($fichier == '.' || $fichier == '..' || $fichier == 'script') {
continue;
}
$fichier = $dossier.$fichier;
if (is_dir($fichier)) {
$directory_path = $fichier.DIRECTORY_SEPARATOR;
array_push($directories, $directory_path);
$fichiers['dossiers'][] = $directory_path;
}
elseif (is_file($fichier)) {
$info = pathinfo($fichier);
$extension = $info['extension'];
if (in_array($extension, $extensions_autorisees)) {
$fichiers['fichiers'][] = $fichier;
}
}
}
closedir($ressource);
}
}
return $fichiers;
}
function comparaison($liste)
{
}
$logger=$this->getContainer()->get('logger');
$logger->info('début de l execution de la commande');
//mon traitement trés long...
// Récupération des photos enregistrée en BDD
$repository = $this ->getDoctrine()
->getManager()
->getRepository('GgSiteBundle:Photo');
$liste_photos = $repository->findAll();
// Liste des photos dans le répertoire
$chemin=dirname(dirname(dirname(dirname(__DIR__)))).'/web/img/galerie/';
$extensions_autorisees= array('jpg', 'jpeg', 'JPG');
$liste=liste_fichiers($chemin,$extensions_autorisees);
// Enregistrement d'un log
$fichier_log=$chemin.'logs/LOG_'.date("Y_m_d_G_i_s").'.txt';
$log = fopen($fichier_log, 'x+');
fwrite($log, 'Mise à jour du '.date("j F Y G:i:s ")."\n\n".
'Répertoire analysé: '.$chemin."\n".
'Extensions de fichier autorisées: ');
foreach($extensions_autorisees as $value){
fwrite($log, $value.' ');
}
fwrite($log, "\n".
count($liste['dossiers']).' dossiers explorés'."\n".
count($liste['fichiers']).' fichiers trouvés'."\n".
'fichiers dans le répertoire: '."\n");
foreach ($liste['fichiers'] as $element){
fwrite($log, $element."\n");
}
fwrite($log, 'photos en BDD : '."\n");
foreach ($liste_photos as $element){
$photo=$element->getContenu();
fwrite($log, $photo."\n");
}
fwrite($log, 'FIN');
fclose($log);
sleep(10);
$logger->info($fichier_log);
$logger->info('fin de l execution de la commande');
}
} |