Commit 7bb32c49 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Correction d'un bug empêchant la création d'établissement ;...

[FIX] Correction d'un bug empêchant la création d'établissement ; améliorations des validateurs des formulaires de structures.
parent bbb8acb1
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ Journal des modifications

6.0.5
-----
- [FIX] Correction d'un bug empêchant la création d'établissement ; améliorations des validateurs des formulaires de structures.
- [FIX] Correction de bugs en cas d'utilisateur ayant à la fois le rôle Doctorant et un autre rôle.

6.0.4
+5 −1
Changes for doc/release-notes/v6.0.5.md: 5 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -19,4 +19,8 @@ systemctl reload php8.0-fpm

## 2. Dans la base de données

RAS.
 No newline at end of file
```postgresql
drop index etablissement_domaine_uindex;
create unique index etablissement_domaine_uindex on etablissement(domaine) where histo_destruction is null;
create unique index etablissement_domaine_histo_uindex on etablissement(domaine, histo_destruction) where histo_destruction is not null;
```
 No newline at end of file
+14 −1
Changes for module/Structure/src/Structure/Form/EcoleDoctoraleForm.php: 14 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -2,9 +2,11 @@

namespace Structure\Form;

use Laminas\Filter\ToNull;
use Laminas\Form\Element\Checkbox;
use Laminas\Form\Element\Text;
use Laminas\InputFilter\InputFilterProviderInterface;
use Laminas\Validator\Uri;
use Structure\Entity\Db\EcoleDoctorale;

class EcoleDoctoraleForm extends StructureForm implements InputFilterProviderInterface
@@ -23,7 +25,7 @@ class EcoleDoctoraleForm extends StructureForm implements InputFilterProviderInt
        );

        $this->add((new Text('offre-these'))
            ->setLabel("Lien vers l'offre de thèse :")
            ->setLabel("Lien (URL) vers l'offre de thèse :")
        );

        $this->add((new Checkbox('estFerme'))
@@ -43,10 +45,21 @@ class EcoleDoctoraleForm extends StructureForm implements InputFilterProviderInt
            'theme' => [
                'name' => 'theme',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
            ],
            'offre-these' => [
                'name' => 'offre-these',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => Uri::class, 'options' => ['allowRelative' => false]],
                ],
            ],
            'estFerme' => [
                'name' => 'estFerme',
+32 −0
Changes for module/Structure/src/Structure/Form/EtablissementForm.php: 32 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,10 +2,12 @@

namespace Structure\Form;

use Laminas\Filter\ToNull;
use Laminas\Form\Element\Checkbox;
use Laminas\Form\Element\Text;
use Laminas\InputFilter\InputFilterProviderInterface;
use Laminas\Validator\EmailAddress;
use Laminas\Validator\Uri;
use Structure\Entity\Db\Etablissement;

class EtablissementForm extends StructureForm implements InputFilterProviderInterface
@@ -82,28 +84,48 @@ class EtablissementForm extends StructureForm implements InputFilterProviderInte
        return array_merge(parent::getInputFilterSpecification(), [
            'code' => [
                'required' => true, // requis pour le calcul du nom de fichier logo
                'filters' => [
                    ['name' => 'StringTrim'],
                ],
            ],
            'domaine' => [
                'name' => 'domaine',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
            ],
            'adresse' => [
                'name' => 'adresse',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
            ],
            'telephone' => [
                'name' => 'telephone',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
            ],
            'fax' => [
                'name' => 'fax',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
            ],
            'email' => [
                'name' => 'email',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => EmailAddress::class],
@@ -113,6 +135,7 @@ class EtablissementForm extends StructureForm implements InputFilterProviderInte
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => EmailAddress::class],
@@ -122,6 +145,7 @@ class EtablissementForm extends StructureForm implements InputFilterProviderInte
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => EmailAddress::class],
@@ -131,6 +155,7 @@ class EtablissementForm extends StructureForm implements InputFilterProviderInte
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => EmailAddress::class],
@@ -139,6 +164,13 @@ class EtablissementForm extends StructureForm implements InputFilterProviderInte
            'siteWeb' => [
                'name' => 'siteWeb',
                'required' => false,
                'filters' => [
                    ['name' => 'StringTrim'],
                    ['name' => ToNull::class],
                ],
                'validators' => [
                    ['name' => Uri::class, 'options' => ['allowRelative' => false]],
                ],
            ],
        ]);
    }
+6 −11
Changes for module/Structure/src/Structure/Form/Hydrator/EtablissementHydrator.php: 6 added lines, 11 removed lines.
Original line number Diff line number Diff line
@@ -14,11 +14,11 @@ class EtablissementHydrator extends StructureHydrator
    {
        $data = parent::extract($etablissement);

        $data['domaine'] = $etablissement->getDomaine();
        $data['estMembre'] = $etablissement->estMembre();
        $data['estAssocie'] = $etablissement->estAssocie();
        $data['estInscription'] = $etablissement->estInscription();
        $data['estCed'] = $etablissement->estCed();

        $data['adresse'] = $etablissement->getStructure()->getAdresse();
        $data['telephone'] = $etablissement->getStructure()->getTelephone();
        $data['fax'] = $etablissement->getStructure()->getFax();
@@ -40,16 +40,11 @@ class EtablissementHydrator extends StructureHydrator
        /** @var Etablissement $object */
        $object = parent::hydrate($data, $etablissement);

        $object->setDomaine($data['domaine']);
        $object->getStructure()->setAdresse($data['adresse']);
        $object->getStructure()->setTelephone($data['telephone']);
        $object->getStructure()->setFax($data['fax']);
        $object->getStructure()->setEmail($data['email']);
        $object->getStructure()->setSiteWeb($data['siteWeb']);
        $object->setEstMembre($data['estMembre']);
        $object->setEstAssocie($data['estAssocie']);
        $object->setEstInscription($data['estInscription']);
        $object->setEstCed($data['estCed']);
        $object->getStructure()->setAdresse($data['adresse'] ?: null);
        $object->getStructure()->setTelephone($data['telephone'] ?: null);
        $object->getStructure()->setFax($data['fax'] ?: null);
        $object->getStructure()->setEmail($data['email'] ?: null);
        $object->getStructure()->setSiteWeb($data['siteWeb'] ?: null);

        return $object;
    }
Loading