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

Documentation et correction

parent ffef9f54
Loading
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
# Version 6.4.0 16/12/2025

* Ajout de l'interface `HasIndicateursInterface` et du trait `HasIndicateursTrait` pour associer des indicateurs à des entités externes à la biliothèque
* Ajout d'un viewhelper `indicateurs` affichant un ensemble d'indicateurs

# Version 6.3.0 01/04/2025

* Possibilité de restreindre l'affichage des indicateurs en fonction de rôles
+76 −1
Original line number Diff line number Diff line
Module Unicaen Indicateur : `unicaen/indicateur`
==========================
----

# Interface et trait

## HasIndicateurs 

L'interface [`HasIndicateursInterface`](src/UnicaenIndicateur/Entity/Interface/HasIndicateursInterface.php) et le trait [`HasIndicateursTrait`](src/UnicaenIndicateur/Entity/Trait/HasIndicateursTrait.php) 
permettent d'accrocher un ensemble d'indicateur à une entité externe à la biliothèque. Ils fornissement les fonctions de manipulation de cette liste d'indicateurs.

```php
public function getIndicateurs(): array;
public function hasIndicateur(Indicateur $indicateur) : bool;
public function addIndicateur(Indicateur $indicateur) : void;
public function removeIndicateur(Indicateur $indicateur) : void;
public function clearIndicateurs() : void;
```

Le trait ajoute un attribut `indicateurs` qu'il devra être initialisé dans le constructeur de votre entité.
```php
class Campagne implements HasIndicateursInterface {
    use HasIndicateursTrait;

    public function __construct()
    {
        $this->indicateurs = new ArrayCollection();
    }
}
```

Il faut aussi penser à l'ajouter dans le mapping de cette entity
```xml
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="EntretienProfessionnel\Entity\Db\Campagne" table="entretienprofessionnel_campagne">

        <id name="id" type="integer" column="id">
            <generator strategy="IDENTITY"/>
        </id>

        ...

        <!-- HasIndicateur ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <many-to-many field="indicateurs" target-entity="UnicaenIndicateur\Entity\Db\Indicateur">
            <join-table name="entretienprofessionnel_campagne_indicateur">
                <join-columns>
                    <join-column name="campagne_id"/>
                </join-columns>
                <inverse-join-columns>
                    <join-column name="indicateur_id"/>
                </inverse-join-columns>
            </join-table>
        </many-to-many>

        ...

    </entity>
</doctrine-mapping>
````

Et créer la table de "linkage" associée
```postgresql
create table entretienprofessionnel_campagne_indicateur
(
    campagne_id   integer not null
        constraint epc_indicateur_entretienprofessionnel_campagne_id_fk
            references entretienprofessionnel_campagne
            on delete cascade,
    indicateur_id integer not null
        constraint epc_indicateur_unicaen_indicateur_indicateur_id_fk
            references unicaen_indicateur_indicateur
            on delete cascade,
    constraint entretienprofessionnel_campagne_indicateur_pk
        primary key (campagne_id, indicateur_id)
);
```

# Périmètres

+1 −1
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Entity\Db\Interface;
namespace UnicaenIndicateur\Entity\Interface;

use UnicaenIndicateur\Entity\Db\Indicateur;

+1 −1
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Entity\Db\Trait;
namespace UnicaenIndicateur\Entity\Trait;

use Doctrine\Common\Collections\Collection;
use UnicaenIndicateur\Entity\Db\Indicateur;