Commit 24695940 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Module StepStar : possibilité de télécharger les fichiers TEF générés sur la page 'Génération TEF'.

parent b53e21f8
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ Journal des modifications
- Module StepStar : mise à jour du script bash d'envoi quotidien des thèses vers STEP/STAR.
- Module StepStar : plus d'envoi de la date d'abandon (recommandation de l'ABES).
- Module StepStar : ajout dans le TEF des IdRef de tous les acteurs de la thèse (doctorant, directeur, codirecteur, etc.)
- Module StepStar : possibilité de télécharger les fichiers TEF générés sur la page 'Génération TEF'.
- Suppression du menu 'Administration > Compléments d'individu' devenu inutile.
- Amélioration visuelle des pages de création/modification de structure (Etab/ED/UR).
- Affichage des co-encadrants sur l'annuraire des thèses (au survol de la souris sur la direction de thèse)
+15 −0
Changes for module/StepStar/config/module.config.php: 15 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -206,6 +206,19 @@ return [
                                'action' => 'generer-theses',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'telecharger-tef' => [
                                'type' => 'Literal',
                                'options' => [
                                    'route' => '/telecharger-tef',
                                    'defaults' => [
                                        'controller' => GenerateController::class,
                                        'action' => 'telecharger-tef',
                                    ],
                                ],
                            ],
                        ],
                    ],
                    'envoi' => [
                        'type' => 'Literal',
@@ -488,10 +501,12 @@ return [
                [
                    /**
                     * @see \StepStar\Controller\Generate\GenerateController::genererThesesAction()
                     * @see \StepStar\Controller\Generate\GenerateController::telechargerTefAction()
                     */
                    'controller' => GenerateController::class,
                    'action' => [
                        'generer-theses',
                        'telecharger-tef',
                    ],
                    'role' => [],
                    'privileges' => StepStarPrivileges::LOG_LISTER,
+1 −4
Changes for module/StepStar/src/StepStar/Controller/Generate/GenerateConsoleController.php: 1 added line, 4 removed lines.
Original line number Diff line number Diff line
@@ -36,11 +36,8 @@ class GenerateConsoleController extends AbstractConsoleController
        }
        $this->console->writeLine("Nombre de theses trouvees : " . count($theses));

        $logs = $this->generateFacade->generateFilesForTheses($theses, $command, $this->tag);
        $log = $this->generateFacade->generateFilesForTheses($theses, $command, $this->tag);

        /** @var \StepStar\Entity\Db\Log $log */
        foreach ($logs as $log) {
        $this->console->writeLine($log->getLog());
    }
}
 No newline at end of file
}
 No newline at end of file
+37 −5
Changes for module/StepStar/src/StepStar/Controller/Generate/GenerateController.php: 37 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -3,7 +3,9 @@
namespace StepStar\Controller\Generate;

use Application\Controller\AbstractController;
use Fichier\FileUtils;
use Laminas\Http\Response;
use Laminas\Session\Container as SessionContainer;
use StepStar\Facade\Generate\GenerateFacadeAwareTrait;
use StepStar\Form\Generate\GenerateForm;
use StepStar\Service\Fetch\FetchServiceAwareTrait;
@@ -17,6 +19,12 @@ class GenerateController extends AbstractController
    use LogServiceAwareTrait;

    private GenerateForm $generateForm;
    private SessionContainer $sessionContainer;

    public function __construct()
    {
        $this->sessionContainer = new SessionContainer(__CLASS__);
    }

    public function setGenerateForm(GenerateForm $generateForm): void
    {
@@ -44,16 +52,19 @@ class GenerateController extends AbstractController
                    $this->flashMessenger()->addErrorMessage("Aucune these trouvee avec les criteres specifies");
                }

                $logs = $this->generateFacade->generateFilesForTheses($theses, $command);
                $log = $this->generateFacade->generateFilesForTheses($theses, $command);

                // pour l'action de téléchargement ci-après, on met à disposition dans la session le chemin du fichier généré
                $resulFilePath = $log->getZipFilePath() ?: $log->getTefFilePath();
                $this->sessionContainer->offsetSet('resulFilePath', $resulFilePath);

                /** @var \StepStar\Entity\Db\Log $log */
                foreach ($logs as $log) {
                if ($log->isSuccess()) {
                        $this->flashMessenger()->addSuccessMessage($log->getLogToHtml());
                    $downloadUrl = $this->url()->fromRoute('step-star/generation/telecharger-tef');
                    $this->flashMessenger()->addSuccessMessage($log->getLogToHtml() .
                        "<br><a href='$downloadUrl'>Télécharger le ou les fichiers TEF générés</a>");
                } else {
                    $this->flashMessenger()->addErrorMessage($log->getLogToHtml());
                }
                }

                return $this->redirect()->refresh();
            }
@@ -61,6 +72,27 @@ class GenerateController extends AbstractController

        return [
            'form' => $this->generateForm,
            'downloadEnabled' => $this->sessionContainer->offsetExists('resulFilePath'),
        ];
    }

    private function isDownloadResultEnabled(): bool
    {
        return $this->sessionContainer->offsetExists('resulFilePath');
    }

    /**
     * Action pour envoyer au client web le fichier TEF généré ou un zip en cas de fichiers TEF multiples.
     * Le chemin du fichier sur le serveur est transmis à cette action via la session.
     */
    public function telechargerTefAction(): Response
    {
        if (!$this->sessionContainer->offsetExists('resulFilePath')) {
            return $this->redirect()->toRoute('step-star/generation');
        }

        $resulFilePath = $this->sessionContainer->offsetGet('resulFilePath');

        FileUtils::downloadFile($resulFilePath);
    }
}
 No newline at end of file
+40 −0
Changes for module/StepStar/src/StepStar/Entity/Db/Log.php: 40 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace StepStar\Entity\Db;

use Laminas\Router\Http\RouteInterface;
use These\Entity\Db\These;
use DateTime;
use Exception;
@@ -27,6 +28,9 @@ class Log
    private ?int $theseId = null;
    private ?These $these = null;

    private ?string $tefFilePath = null; // sans mapping en bdd
    private ?string $zipFilePath = null; // sans mapping en bdd

    /**
     * @return int
     */
@@ -306,4 +310,40 @@ class Log
    {
        $this->these = $these;
    }

    /**
     * Renseigne le chemin absolu du fichier TEF temporaire généré.
     * **NB : pas de mapping en bdd, c'est juste utilitaire.**
     */
    public function setTefFilePath(?string $tefFilePath): void
    {
        $this->tefFilePath = $tefFilePath;
    }

    /**
     * Retourne le chemin absolu du fichier TEF temporaire généré.
     * **NB : pas de mapping en bdd, c'est juste utilitaire.**
     */
    public function getTefFilePath(): ?string
    {
        return $this->tefFilePath;
    }

    /**
     * Renseigne le chemin absolu du fichier ZIP généré.
     * **NB : pas de mapping en bdd, c'est juste utilitaire.**
     */
    public function setZipFilePath(?string $zipFilePath): void
    {
        $this->zipFilePath = $zipFilePath;
    }

    /**
     * Retourne le chemin absolu du fichier ZIP généré, le cas échéant.
     * **NB : pas de mapping en bdd, c'est juste utilitaire.**
     */
    public function getZipFilePath(): ?string
    {
        return $this->zipFilePath;
    }
}
Loading