<?php
namespace Acme\SudcmsBundle\Service;
use Acme\SudcmsBundle\Entity\Site;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\Session;
class ApiLogsService extends CommonLogsService {
public bool $errorLogsFolder = false;
public string $siteDirectory = '';
private string $logsFolder = '/public/logs/api/normal';
public function __construct(
private Filesystem $filesystem,
private ParameterBagInterface $params,
private MailerService $mailerService,
private EntityManagerInterface $entityManager,
private RequestStack $requestStack
) {
parent::__construct($filesystem, $params, $mailerService, $entityManager);
$pathFoler = explode('/', $this->requestStack->getCurrentRequest()->server->get('SCRIPT_NAME'));
$pathInfo = explode('/', $this->requestStack->getCurrentRequest()->getPathInfo());
$session = new Session();
if ($pathInfo[0] == 'admin' || $pathInfo[1] == 'admin') {
$this->site = $entityManager->getRepository(Site::class)->findOneBy(['id' => $session->get('admin_site_uid')]);
} else {
$this->site = $entityManager->getRepository(Site::class)->findOneBy(['projectDirectory' => $pathFoler[1]]);
}
}
// Surcharge de la fonction writeLog pour ajouter le type de log avec son dossier
public function getPathLogFile(): string {
$this->siteDirectory = $this->site->getProjectDirectory();
if ($this->errorLogsFolder) {
$this->logsFolder = '/public/logs/api/error';
}
// Vérification de l'existence du dossier de logs pour les API
if (!$this->filesystem->exists($this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder)) {
$this->filesystem->mkdir($this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder,
0755);
}
return $this->params->get('kernel.project_dir') . '/../' . $this->siteDirectory . $this->logsFolder . '/';
}
}