Commit 9228a06b authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction d'un bug empêchant la suppression auto de fichier lorsqu'on dépose...

Correction d'un bug empêchant la suppression auto de fichier lorsqu'on dépose une version retraitée manuellement
parent 32eeb6e2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -217,9 +217,9 @@ class FichierTheseController extends AbstractController
                $versionASupprimer = $version->estVersionCorrigee() ?
                    VersionFichier::CODE_ARCHI_CORR :
                    VersionFichier::CODE_ARCHI;
                $fichiers = $this->fichierTheseService->getRepository()->fetchFichierTheses($these, null, $versionASupprimer, null) ;
                if (! empty($fichiers)) {
                    $this->fichierTheseService->deleteFichiers($fichiers, $these);
                $fichierTheses = $this->fichierTheseService->getRepository()->fetchFichierTheses($these, null, $versionASupprimer, null) ;
                if (! empty($fichierTheses)) {
                    $this->fichierTheseService->deleteFichiers($fichierTheses, $these);
                }
            }

+3 −3
Original line number Diff line number Diff line
@@ -1242,9 +1242,9 @@ class TheseController extends AbstractController

                // suppression des fichiers expurgés éventuellement déposés en l'absence de pb de droit d'auteur
                $besoinVersionExpurgee = ! $diffusion->getDroitAuteurOk();
                $fichiersExpurgesDeposes = $this->fichierTheseService->getRepository()->fetchFichierTheses($these, null , $version, false);
                if (! $besoinVersionExpurgee && !empty($fichiersExpurgesDeposes)) {
                    $this->fichierTheseService->deleteFichiers($fichiersExpurgesDeposes, $these);
                $fichierThesesExpurgesDeposes = $this->fichierTheseService->getRepository()->fetchFichierTheses($these, null , $version, false);
                if (! $besoinVersionExpurgee && !empty($fichierThesesExpurgesDeposes)) {
                    $this->fichierTheseService->deleteFichiers($fichierThesesExpurgesDeposes, $these);
//                    $this->flashMessenger()->addSuccessMessage("Les fichiers expurgés fournis devenus inutiles ont été supprimés.");
                }

+1 −1
Original line number Diff line number Diff line
@@ -728,7 +728,7 @@ class These implements HistoriqueAwareInterface, ResourceInterface
            throw new RuntimeException("Le fichier à supprimer est introuvable parmi les fichiers de la thèse");
        }

        $this->fichierTheses->removeElement($fichierThese);
        $this->removeFichierThese($fichierThese);

        return $this;
    }
+11 −5
Original line number Diff line number Diff line
@@ -392,19 +392,25 @@ class FichierTheseService extends BaseService
    }

    /**
     * Supprime définitivement des fichiers liés à une thèse.
     * Supprime définitivement des Fichiers ou des FichierThese, pour une thèse donnée.
     *
     * @param Fichier[] $fichiers
     * @param Fichier[]|FichierThese[] $fichiers
     * @param These                    $these
     */
    public function deleteFichiers(array $fichiers, These $these)
    {
        // normalisation
        $normalizedFichiers = [];
        foreach ($fichiers as $fichier) {
            $normalizedFichiers[] = $fichier instanceof FichierThese ? $fichier->getFichier() : $fichier;
        }

        $this->entityManager->beginTransaction();
        try {
            foreach ($fichiers as $fichier) {
            foreach ($normalizedFichiers as $fichier) {
                $these->removeFichier($fichier);
            }
            $this->fichierService->supprimerFichiers($fichiers);
            $this->fichierService->supprimerFichiers($normalizedFichiers);
            $this->entityManager->commit();
        } catch (\Exception $e) {
            $this->entityManager->rollback();