Commit 840e3521 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

[FIX] Correction du problème de téléchargement des avis en mode non connecté...

[FIX] Correction du problème de téléchargement des avis en mode non connecté (par exemple pour les membres du jury)
parent 2d63d5d9
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ Journal des modifications
- [FIX] Plus d'envoi de mail lors du classement des inscriptions si les inscriptions ne sont pas closes
- [FIX] Ajout de l'affichage de la liste des présences à une session si celle-ci est imminente.
- [FIX] Correction du calcul d'erreur de l'année de thèse du doctorant dans les sessions de formation.
- [FIX] Correction du problème de téléchargement des avis en mode non connecté (par exemple pour les membres du jury)

5.2.5
-----
+18 −0
Changes for module/Soutenance/config/others/avis.config.php: 18 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -56,6 +56,13 @@ return array(
                    ],
                    'privileges' => AvisSoutenancePrivileges::AVIS_ANNULER,
                ],
                [
                    'controller' => AvisController::class,
                    'action' => [
                        'telecharger',
                    ],
                    'roles' => [],
                ],
            ],
        ],
    ],
@@ -97,6 +104,17 @@ return array(
                                    ],
                                ],
                            ],
                            'telecharger' => [
                                'type' => Literal::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route' => '/telecharger',
                                    'defaults' => [
                                        'controller' => AvisController::class,
                                        'action' => 'telecharger',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
+25 −0
Changes for module/Soutenance/src/Soutenance/Controller/AvisController.php: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
namespace Soutenance\Controller;

use Application\Controller\AbstractController;
use Fichier\Service\Fichier\FichierServiceAwareTrait;
use Fichier\Service\Fichier\FichierStorageServiceAwareTrait;
use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException;
use These\Service\Acteur\ActeurServiceAwareTrait;
use These\Service\These\TheseServiceAwareTrait;
use Soutenance\Entity\Avis;
@@ -16,6 +19,7 @@ use Soutenance\Service\Proposition\PropositionServiceAwareTrait;
use Soutenance\Service\Validation\ValidatationServiceAwareTrait;
use Laminas\Http\Request;
use Laminas\View\Model\ViewModel;
use UnicaenApp\Exception\RuntimeException;

class AvisController extends AbstractController
{
@@ -27,6 +31,9 @@ class AvisController extends AbstractController
    use TheseServiceAwareTrait;
    use ValidatationServiceAwareTrait;

    use FichierStorageServiceAwareTrait;
    use FichierServiceAwareTrait;

    use AvisFormAwareTrait;

    public function indexAction()
@@ -133,4 +140,22 @@ class AvisController extends AbstractController
        $this->redirect()->toRoute('soutenance/index-rapporteur', ['these' => $these->getId()], [], true);
    }


    public function telechargerAction()
    {
        $these = $this->requestedThese();
        $membre = $this->getMembreService()->getRequestedMembre($this, 'rapporteur');
        $avis = $this->getAvisService()->getAvisByMembre($membre);
        $fichier = $avis->getFichier();

        // injection préalable du contenu du fichier pour pouvoir utiliser le plugin Uploader
        try {
            $contenuFichier = $this->fichierStorageService->getFileContentForFichier($fichier);
        } catch (StorageAdapterException $e) {
            throw new RuntimeException("Impossible d'obtenir le contenu du fichier", null, $e);
        }
        $fichier->setContenuFichierData($contenuFichier);

        $this->uploader()->download($fichier);
    }
}
 No newline at end of file
+16 −2
Changes for module/Soutenance/src/Soutenance/Controller/AvisControllerFactory.php: 16 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,10 @@

namespace Soutenance\Controller;

use Fichier\Service\Fichier\FichierService;
use Fichier\Service\Fichier\FichierStorageService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use These\Service\Acteur\ActeurService;
use These\Service\These\TheseService;
use Interop\Container\ContainerInterface;
@@ -17,8 +21,10 @@ class AvisControllerFactory
    /**
     * @param ContainerInterface $container
     * @return AvisController
     * @throws ContainerExceptionInterface
     * @throws NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container)
    public function __invoke(ContainerInterface $container) : AvisController
    {

        /**
@@ -38,12 +44,17 @@ class AvisControllerFactory
        $theseService               = $container->get('TheseService');
        $validationService          = $container->get(ValidationService::class);

        /** @var FichierService $fichierService */
        $fichierService = $container->get(FichierService::class);

        /** @var FichierStorageService $fileService */
        $fileService = $container->get(FichierStorageService::class);

        /**
         * @var AvisForm $avisForm
         */
        $avisForm = $container->get('FormElementManager')->get(AvisForm::class);

        /** @var AvisController $controller */
        $controller = new AvisController();
        $controller->setTheseService($theseService);
        $controller->setValidationService($validationService);
@@ -53,6 +64,9 @@ class AvisControllerFactory
        $controller->setAvisService($avisService);
        $controller->setMembreService($membreService);

        $controller->setFichierService($fichierService);
        $controller->setFichierStorageService($fileService);

        $controller->setAvisForm($avisForm);

        return $controller;
+9 −3
Changes for module/Soutenance/src/Soutenance/Controller/PresoutenanceController.php: 9 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -593,10 +593,16 @@ class PresoutenanceController extends AbstractController
        foreach ($proposition->getAvis() as $avis) {
            if ($avis->estNonHistorise()) {
                $denomination = $avis->getMembre()->getDenomination();
                $lien = $this->url()->fromRoute('fichier/these/telecharger', [
//                $lien = $this->url()->fromRoute('fichier/these/telecharger', [
//                    'these'      => $these->getId(),
//                    'fichier'    => $avis->getFichier()->getUuid(),
//                    'fichierNom' => $avis->getFichier()->getNom(),
//                ], [
//                    'force_canonical'=>true
//                ],true);
                $lien = $this->url()->fromRoute('soutenance/avis-soutenance/telecharger', [
                    'these' => $these->getId(),
                    'fichier'    => $avis->getFichier()->getUuid(),
                    'fichierNom' => $avis->getFichier()->getNom(),
                    'membre' => $avis->getMembre()->getId()
                    ], [
                        'force_canonical'=>true
                    ], true);