src/Service/ApiLogsService.php line 18

Open in your IDE?
  1. <?php
  2. namespace Acme\SudcmsBundle\Service;
  3. use Acme\SudcmsBundle\Entity\Site;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  6. use Symfony\Component\Filesystem\Filesystem;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\HttpFoundation\Session\Session;
  9. class ApiLogsService extends CommonLogsService {
  10.     public bool    $errorLogsFolder = false;
  11.     public string  $siteDirectory   = '';
  12.     private string $logsFolder      = '/public/logs/api/normal';
  13.     public function __construct(
  14.         private Filesystem             $filesystem,
  15.         private ParameterBagInterface  $params,
  16.         private MailerService          $mailerService,
  17.         private EntityManagerInterface $entityManager,
  18.         private RequestStack   $requestStack
  19.     ) {
  20.         parent::__construct($filesystem, $params, $mailerService, $entityManager);
  21.         $pathFoler = explode('/', $this->requestStack->getCurrentRequest()->server->get('SCRIPT_NAME'));
  22.         $pathInfo = explode('/', $this->requestStack->getCurrentRequest()->getPathInfo());
  23.         $session = new Session();
  24.         if ($pathInfo[0] == 'admin' || $pathInfo[1] == 'admin') {
  25.             $this->site = $entityManager->getRepository(Site::class)->findOneBy(['id' => $session->get('admin_site_uid')]);
  26.         } else {
  27.             $this->site = $entityManager->getRepository(Site::class)->findOneBy(['projectDirectory' => $pathFoler[1]]);
  28.         }
  29.     }
  30.     // Surcharge de la fonction writeLog pour ajouter le type de log avec son dossier
  31.     public function getPathLogFile(): string {
  32.         $this->siteDirectory = $this->site->getProjectDirectory();
  33.         if ($this->errorLogsFolder) {
  34.             $this->logsFolder = '/public/logs/api/error';
  35.         }
  36.         // Vérification de l'existence du dossier de logs pour les API
  37.         if (!$this->filesystem->exists($this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder)) {
  38.             $this->filesystem->mkdir($this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder,
  39.                                      0755);
  40.         }
  41.         return $this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder . '/';
  42.     }
  43. }