src/Service/FO/FOService.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Service\FO;
  3. use App\Entity\Ged\Fichier;
  4. use Doctrine\ORM\EntityManager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\DependencyInjection\Container;
  7. class FOService {
  8.     private $em;
  9.     public function __construct(EntityManagerInterface $em)
  10.     {
  11.         $this->em $em;
  12.     }
  13.     public function createDirectoryPublic($dir$output ''){
  14.         if(is_dir($dir)) return $dir;
  15.         $dir realpath(__DIR__ '/../../../public/').$dir;
  16.         return $this->createDirectory($dir$output);
  17.         /*
  18.         $directories = explode('/', $dir);
  19.         $dirTmp = '';
  20.         foreach($directories as $key => $directory){
  21.             if($key == 0) $dirTmp = $directory; else $dirTmp .= '/'.$directory;
  22.             //if(is_object($output)) $output->writeln($dirTmp.' : '.is_dir($dirTmp));
  23.             if(!is_dir($dirTmp)){
  24.                 if(is_object($output)) $output->writeln('Création dir : '.$dirTmp);
  25.                 @mkdir($dirTmp,0775,true);
  26.                 @chown($dirTmp,"www-data");
  27.                 @chgrp($dirTmp,"www-data");
  28.             }
  29.         }
  30.         return $dir;
  31.         */
  32.     }
  33.     public function createDirectory($dir$output ''){
  34.         if(is_dir($dir)) return $dir;
  35.         $directories explode('/'$dir);
  36.         $dirTmp '';
  37.         foreach($directories as $key => $directory){
  38.             if($key == 0$dirTmp $directory; else $dirTmp .= '/'.$directory;
  39.             //if(is_object($output)) $output->writeln($dirTmp.' : '.is_dir($dirTmp));
  40.             if(!is_dir($dirTmp)){
  41.                 if(is_object($output)) $output->writeln('Création dir : '.$dirTmp);
  42.                 @mkdir($dirTmp,0775,true);
  43.                 @chown($dirTmp,"www-data");
  44.                 @chgrp($dirTmp,"www-data");
  45.             }
  46.         }
  47.         return $dir;
  48.     }
  49.     public function enregistrerFichierGed($fileNameOriginal$date$idImport ''$fichiers$ext$parent ''$save=false){
  50.         $repo_fichier $this->em->getRepository(Fichier::class);
  51.         $newFilename preg_replace([
  52.             '/\s+/'// Remplace les espaces
  53.             '/[^a-zA-Z0-9_\-.\+]/' // Supprime les caractères spéciaux (sauf `.`, `-`, `_`, `+`)
  54.         ], ['_'''], $fileNameOriginal);
  55.         $dir '/uploads/ged/'.$date->format('Y/m/d/');
  56.         $dir $this->createDirectoryPublic($dir);
  57.         $fichier '';
  58.         if(!empty($idImport)) $fichier $repo_fichier->findOneBy(["idImport"=>$idImport,"libelle"=>$fileNameOriginal]);
  59.         if(!is_object($fichier) && !empty($parent)) $fichier $repo_fichier->findOneBy(["parent"=>$parent,"libelle"=>$fileNameOriginal]);
  60.         if(!is_object($fichier)){
  61.             $fichier = new Fichier();
  62.             if(!empty($idImport)) $fichier->setIdImport($idImport);
  63.             $fichier->setType("fichier");
  64.             $fichier->setRenomme(false);
  65.             $fichier->setSupprimable(false);
  66.             $fichier->setModifiable(false);
  67.             //$fichier->setCommande($commande);
  68.             if(!empty($parent)) $fichier->setParent($parent);
  69.             $fichier->setLibelle($fileNameOriginal);
  70.             $fichier->setExtension($ext);
  71.             $fichier->setVersion(1);
  72.             $fichier->setChemin($dir.$newFilename);
  73.             $this->em->persist($fichier);
  74.             $fichiers[] = $fichier;
  75.         } else {
  76.             $fichiers[] = $fichier;
  77.         }
  78.         if($save$this->em->flush();
  79.         return [
  80.             'fichiers'=> $fichiers,
  81.             'newFilename' => $newFilename,
  82.             'dir' => $dir
  83.         ];
  84.     }
  85. }