Commit 6fd1dcf5 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Passage dans UnicaenRenderer du template des historiques de co-encadrements

parent 0beaf645
Loading
Loading
Loading
Loading
+4 −0
Changes for CHANGELOG.md: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
Journal des modifications
=========================

6.0.6
-----
- Passage dans UnicaenRenderer du template des historiques de co-encadrements

6.0.5
-----
- [FIX] Correction d'un bug empêchant la création d'établissement ; améliorations des validateurs des formulaires de structures.
+32 −0
Changes for doc/release-notes/v6.0.6.md: 32 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Version 6.0.5

## 1. Sur le serveur d'application

*Rappel : depuis la version 6.0.0, la version de PHP requise est la 8.0.*

- Placez-vous dans le répertoire de l'application puis lancez la commande suivante
  pour installer la nouvelle version :

```bash
git fetch --tags && git checkout --force 6.0.5 && bash ./install.sh
```

- Rechargez le moteur PHP, exemple :

```bash
systemctl reload php8.0-fpm
```

## 2. Dans la base de données

```postgresql
-- INSERTION DE NOUVELLES MACROS --
INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('Acteur#Denomination', '<p>Retourne la dénomination de l''acteur sous la forme  - Prénom Nom -</p>', 'acteur', 'getDenomination');
INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('Acteur#Etablissement', '<p>Retourne le libellé de l''établissement du co-encadrant</p>', 'acteur', 'getEtablissementAsLibelle');
INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('Acteur#Qualite', '<p>retourne la qualité de l''acteur (maître de conférence, directeur de recherche, ...)</p>', 'acteur', 'getQualite');
-- INSERTION DU TEMPLATE POUR L'HISTORIQUE DES CO-ENCADREMENTS
INSERT INTO unicaen_renderer_template (code, description, document_type, document_sujet, document_corps, document_css, namespace) VALUES ('COENCADREMENTS_JUSTIFICATIF', null, 'pdf', 'Justificatif de co-encadrements de VAR[Acteur#Denomination]', e'<h1>Justificatif de co-encadrements</h1>
<p>Ce document certifie que VAR[Acteur#Denomination], actuellement VAR[Acteur#Qualite] à VAR[Acteur#Etablissement], a assuré la fonction de co-encadrant sur pour les thèses suivantes :<br />###LISTING_THESE###</p>', null, 'These\Provider\Template');


```
 No newline at end of file
+1 −0
Changes for module/These/config/others/co-encadrant.config.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ return [
                        'options'       => [
                            'route'    => '/generer-justificatif-coencadrements/:co-encadrant',
                            'defaults' => [
                                /** @see CoEncadrantController::genererJustificatifCoencadrementsAction() */
                                'controller'    => CoEncadrantController::class,
                                'action'        => 'generer-justificatif-coencadrements',
                            ],
+45 −15
Changes for module/These/src/These/Controller/CoEncadrantController.php: 45 added lines, 15 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\JsonModel;
use Laminas\View\Model\ViewModel;
use Laminas\View\Renderer\PhpRenderer;
use Laminas\View\Resolver\TemplatePathStack;
use Structure\Entity\Db\EcoleDoctorale;
use Structure\Entity\Db\UniteRecherche;
use Structure\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
@@ -21,11 +22,13 @@ use Structure\Service\UniteRecherche\UniteRechercheServiceAwareTrait;
use These\Entity\Db\Acteur;
use These\Entity\Db\These;
use These\Form\CoEncadrant\RechercherCoEncadrantFormAwareTrait;
use These\Provider\Template\PdfTemplates;
use These\Service\Acteur\ActeurServiceAwareTrait;
use These\Service\CoEncadrant\CoEncadrantServiceAwareTrait;
use These\Service\CoEncadrant\Exporter\JustificatifCoencadrements\JustificatifCoencadrementPdfExporter;
use These\Service\These\TheseServiceAwareTrait;
use UnicaenApp\View\Model\CsvModel;
use UnicaenPdf\Exporter\PdfExporter as PdfExporter;
use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;

class CoEncadrantController extends AbstractActionController
{
@@ -38,6 +41,7 @@ class CoEncadrantController extends AbstractActionController
    use EcoleDoctoraleServiceAwareTrait;
    use EtablissementServiceAwareTrait;
    use UniteRechercheServiceAwareTrait;
    use RenduServiceAwareTrait;


    /** @var PhpRenderer */
@@ -166,26 +170,52 @@ class CoEncadrantController extends AbstractActionController
        ]);
    }

    public function genererJustificatifCoencadrementsAction(): void
    public function genererJustificatifCoencadrementsAction(): ?string
    {
        $coencadrant = $this->getCoEncadrantService()->getRequestedCoEncadrant($this);
        $theses = $this->getTheseService()->getRepository()->fetchThesesByCoEncadrant($coencadrant->getIndividu());

        $logos = [];
        try {
            $logos['etablissement'] = $this->fichierStorageService->getFileForLogoStructure($coencadrant->getEtablissement()->getStructure());
        } catch (StorageAdapterException $e) {
            $logos['etablissement'] = null;
        $vars = [
            'acteur' => $coencadrant,
        ];

        $listing  = "<ul>";
        foreach ($theses as $these) {
            //todo macro ou formateur ...
            $listing .= "<li>";

            $listing .= $these->getTitre();
            $listing .= " (".$these->getAnneeUniv1ereInscription(). ")";

            $listing .= "<br>";

            $listing .= $these->getDoctorant()->getIndividu()->getPrenom1() . " " . $these->getDoctorant()->getIndividu()->getNomUsuel();
            $listing .= " - ";
            $listing .= $these->getEtablissement()->getStructure()->getLibelle();
            $listing .= " - ";
            $listing .= $these->getUniteRecherche()->getStructure()->getLibelle() . " (".$these->getUniteRecherche()->getStructure()->getSigle().")";
            $listing .= "</li>";
        }
        $listing .= "</ul>";

        //exporter
        $export = new JustificatifCoencadrementPdfExporter($this->renderer, 'A4');
        $export->setVars([
            'coencadrant' => $coencadrant,
            'theses' => $theses,
            'logos' => $logos,
        ]);
        $export->export('justificatif_coencadrement_' . $coencadrant->getIndividu()->getId() . ".pdf");
        $logos = [
            "COMUE" => $this->etablissementService->fetchEtablissementComue()?$this->fichierStorageService->getFileForLogoStructure($this->etablissementService->fetchEtablissementComue()->getStructure()):null,
            "ETAB" => $coencadrant->getEtablissement()?$this->fichierStorageService->getFileForLogoStructure($coencadrant->getEtablissement()->getStructure()):null,
        ];

        $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplates::COENCADREMENTS_JUSTIFICATIF, $vars);
        $corps = str_replace("###LISTING_THESE###", $listing,$rendu->getCorps());
        $filename = 'justificatif_coencadrement_' . $coencadrant->getIndividu()->getId() . ".pdf";

        $export = new PdfExporter();

        $export->getMpdf()->SetMargins(0,0,60);
        //todo passer un header exploitant les logo
//        $export->setHeaderScript('pdf/header.phtml', null, $logos);
        $export->setHeaderScriptToNone();
        $export->setFooterScriptToNone();
        $export->addBodyHtml($corps);
        return $export->export($filename);
    }

    public function genererExportCsvAction(): CsvModel
+4 −0
Changes for module/These/src/These/Controller/Factory/CoEncadrantControllerFactory.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ use These\Form\CoEncadrant\RechercherCoEncadrantForm;
use These\Service\Acteur\ActeurService;
use These\Service\CoEncadrant\CoEncadrantService;
use These\Service\These\TheseService;
use UnicaenRenderer\Service\Rendu\RenduService;

class CoEncadrantControllerFactory
{
@@ -35,6 +36,7 @@ class CoEncadrantControllerFactory
         * @var EtablissementService $etablissementService
         * @var IndividuService $individuService
         * @var FichierStorageService $fileService
         * @var RenduService $renduService
         * @var TheseService $theseService
         * @var UniteRechercheService $uniteRechercheService
 */
@@ -44,6 +46,7 @@ class CoEncadrantControllerFactory
        $etablissementService = $container->get(EtablissementService::class);
        $individuService = $container->get(IndividuService::class);
        $fileService = $container->get(FichierStorageService::class);
        $renduService = $container->get(RenduService::class);
        $theseService = $container->get('TheseService');
        $uniteRechercheService = $container->get(UniteRechercheService::class);

@@ -62,6 +65,7 @@ class CoEncadrantControllerFactory
        $controller->setEtablissementService($etablissementService);
        $controller->setIndividuService($individuService);
        $controller->setFichierStorageService($fileService);
        $controller->setRenduService($renduService);
        $controller->setTheseService($theseService);
        $controller->setUniteRechercheService($uniteRechercheService);
        $controller->setRechercherCoEncadrantForm($rechercheCoEncadrantForm);
Loading