Commit 2251db27 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Formateur du nom de fichier pour la fusion PDC & manuscrit : séparateur...

Formateur du nom de fichier pour la fusion PDC & manuscrit : séparateur 'underscore' car STEP-STAR n'aime pas le tiret du 6.
parent f972fb93
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Journal des modifications
- Suppression de la contrainte vérifiant si le membre est un rapporteur lors de la liaison entre un acteur et un membre dans la prép. de la soutenance.
- Nouveau favicon, moche mais universel !
- Possibilité de spécifier le username dans l'URL de modification de mot de passe (paramètre GET).
- Formateur du nom de fichier pour la fusion PDC & manuscrit : séparateur 'underscore' car STEP-STAR n'aime pas le tiret du 6.
- [FIX] Le bouton de recherche/liaison de notice IdRef ne fonctionnait pas dans une modale (unicaen/idref 1.0.0 requis).
- [FIX] Synchro : plantage lors de la génération du diff (unicaen/db-import 6.1.3 nécessaire car nouvelle plateforme Doctrine\DBAL\Platforms\PostgreSQL120Platform).
- [FIX] Le menu Nos Thèses s'affichait à tort pour le rôle Doctorant (du fait que ce dernier est désormais tagué établissement-dépendant).
+1 −3
Changes for module/Application/src/Application/Filter/NomFichierRapportFormatter.php: 1 added line, 3 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,8 @@

namespace Application\Filter;

use Fichier\Entity\Db\Fichier;
use Application\Entity\Db\Rapport;
use Fichier\Entity\Db\Fichier;
use Fichier\Filter\AbstractNomFichierFormatter;

/**
@@ -13,8 +13,6 @@ use Fichier\Filter\AbstractNomFichierFormatter;
 */
class NomFichierRapportFormatter extends AbstractNomFichierFormatter
{
    private $separator = '-';

    /**
     * @var Rapport
     */
+41 −0
Changes for module/Depot/src/Depot/Filter/NomFichierFusionPdcEtTheseFormatter.php: 41 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Depot\Filter;

use Fichier\Filter\AbstractNomFichierFormatter;
use These\Entity\Db\These;
use UnicaenApp\Util;

/**
 * Formateur du nom de fichier créé pour la fusion de la page de couverture et du manuscrit de thèse.
 */
class NomFichierFusionPdcEtTheseFormatter extends AbstractNomFichierFormatter
{
    /**
     * NB : Ici, le séparateur est le caractère "underscore" car ce formatter est utilisé pour nommer
     * le fichier que les gestionnaires déposent sur STEP-STAR, or ce dernier n'aime pas le "tiret du 6".
     */
    protected string $separator = '_';

    protected string $prefix = 'sygal_fusion';

    /**
     * @param These $value
     */
    public function filter($value): string
    {
        $individuDoctorant = $value->getDoctorant()->getIndividu();

        $parts = [
            $this->prefix,
            $value->getId(),
            $this->normalizedString($individuDoctorant->getNomUsuel()),
            $this->normalizedString($individuDoctorant->getPrenom()),
            uniqid(),
        ];

        $outputFilePath = implode($this->separator, $parts) . '.pdf';

        return Util::reduce($outputFilePath);
    }
}
 No newline at end of file
+1 −6
Changes for module/Depot/src/Depot/Filter/NomFichierTheseFormatter.php: 1 added line, 6 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,6 @@ namespace Depot\Filter;

use Depot\Entity\Db\FichierThese;
use Fichier\Filter\AbstractNomFichierFormatter;
use Laminas\Filter\Exception;

/**
 * Filtre générateur du nom de fichier lié à une thèse.
@@ -13,16 +12,12 @@ use Laminas\Filter\Exception;
 */
class NomFichierTheseFormatter extends AbstractNomFichierFormatter
{
    private $separator = '-';

    /**
     * Retourne un nom de fichier conforme aux règles de nommage.
     *
     * @param  FichierThese $fichierThese
     * @return string
     * @throws Exception\RuntimeException If filtering $value is impossible
     */
    public function filter($fichierThese)
    public function filter($fichierThese): string
    {
        $doctorant = $fichierThese->getThese()->getDoctorant();

+4 −13
Changes for module/Depot/src/Depot/Service/FichierThese/FichierTheseService.php: 4 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Application\Entity\Db\ValiditeFichier;
use Application\Service\BaseService;
use Depot\Entity\Db\FichierThese;
use Depot\Entity\Db\Repository\FichierTheseRepository;
use Depot\Filter\NomFichierFusionPdcEtTheseFormatter;
use Depot\Filter\NomFichierTheseFormatter;
use Depot\Service\FichierThese\Exception\DepotImpossibleException;
use Depot\Service\FichierThese\Exception\ValidationImpossibleException;
@@ -35,7 +36,6 @@ use These\Entity\Db\These;
use These\Service\FichierThese\PdcData;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Exporter\Pdf;
use UnicaenApp\Util;

class FichierTheseService extends BaseService
{
@@ -500,24 +500,15 @@ class FichierTheseService extends BaseService
     */
    public function fusionnerPdcEtThese(These $these, PdcData $pdcData, string $versionFichier, bool $removeFirstPage = false, string $timeout = null): string
    {
        $outputFilePath = $this->generateOutputFilePathForMerge($these);
        $formatter = new NomFichierFusionPdcEtTheseFormatter();
        $outputFilePath = sys_get_temp_dir() . '/' . $formatter->filter($these);

        $command = $this->createCommandForPdcMerge($these, $pdcData, $versionFichier, $removeFirstPage, $outputFilePath);
        $this->runShellCommand($command, $timeout);

        return $outputFilePath;
    }

    private function generateOutputFilePathForMerge(These $these): string
    {
        $outputFilePath = uniqid(sprintf("sygal_fusion_%s-%s-%s_",
            $these->getId(),
            $these->getDoctorant()->getIndividu()->getNomUsuel(),
            $these->getDoctorant()->getIndividu()->getPrenom()
        )) . '.pdf';

        return sys_get_temp_dir() . '/' . Util::reduce($outputFilePath);
    }

    /**
     * @param These   $these
     * @param PdcData $pdcData
Loading