UserInfo.php 5.18 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
2
3
4
<?php
namespace UnicaenAuth\View\Helper;

use UnicaenApp\Entity\Ldap\People;
5
use UnicaenApp\Mapper\Ldap\Structure as MapperStructure;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
6
use Laminas\View\Helper\HtmlList;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
7
8
9
10
11
12
13
14
15
16
17

/**
 * Aide de vue affichant des info sur l'utilisateur connecté :
 * - affectations administratives et recherche
 * - responsabilités administratives
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class UserInfo extends UserAbstract
{
    /**
18
     * @var MapperStructure 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
19
     */
20
    protected $mapperStructure;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
21
22
23
24

    /**
     * @var bool
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
25
    protected $affectationPrincipale = false;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
26
27
28
29
    
    /**
     * Point d'entrée.
     *
Bertrand Gauthier's avatar
Bertrand Gauthier committed
30
     * @param boolean $affectationPrincipale Indique s'il ne faut prendre en compte que l'affectation principale
31
     * @return self 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
32
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
33
    public function __invoke($affectationPrincipale = false)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
34
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
35
        $this->setAffectationPrincipale($affectationPrincipale);
Bertrand Gauthier's avatar
Bertrand Gauthier committed
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        return $this;
    }
    
    /**
     * Retourne le code HTML généré par cette aide de vue.
     * 
     * @return string 
     */
    public function __toString()
    {
        if (!($authIdentity = $this->getIdentity())) {
            return '';
        }
        
50
51
52
53
54
55
56
57
58
59
        $libAffAdmin = _("Affectations administratives");
        $libAffRech  = _("Affectations recherche");
        $libRespons  = _("Responsabilités");
        
        if ($this->getTranslator()) {
            $libAffAdmin = $this->getTranslator()->translate($libAffAdmin, $this->getTranslatorTextDomain());
            $libAffRech  = $this->getTranslator()->translate($libAffRech, $this->getTranslatorTextDomain());
            $libRespons  = $this->getTranslator()->translate($libRespons, $this->getTranslatorTextDomain());
        }
        
Bertrand Gauthier's avatar
Bertrand Gauthier committed
60
        $out = '';
61
62
63
        $templateAff         = "<strong>" . $libAffAdmin . " :</strong> %s";
        $templateAffRech     = "<strong>" . $libAffRech  . " :</strong> %s";
        $templateFonctStruct = "<strong>" . $libRespons  . " :</strong> %s";
Bertrand Gauthier's avatar
Bertrand Gauthier committed
64
65
66
67
68
69

        $helperHtmlList = new HtmlList();
        
        if ($authIdentity instanceof People) {
            
            // affectations admin
70
            $affectations = $authIdentity->getAffectationsAdmin($this->getMapperStructure(), $this->getAffectationPrincipale());
71
72
73
74
75
76
            if (!$affectations) {
                $aucuneAffTrouvee = _("Aucune affectation trouvée.");
                if ($this->getTranslator()) {
                    $aucuneAffTrouvee = $this->getTranslator()->translate($aucuneAffTrouvee, $this->getTranslatorTextDomain());
                }
                $affectations[] = $aucuneAffTrouvee;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
77
            }
78
79
80
            ksort($affectations);
            $affectations = $helperHtmlList($affectations, $ordered = false, $attribs = false, $escape = false);
            $out .= sprintf($templateAff, $affectations);
Bertrand Gauthier's avatar
Bertrand Gauthier committed
81
82

            // affectations recherche
83
            $affectations = $authIdentity->getAffectationsRecherche($this->getMapperStructure());
Bertrand Gauthier's avatar
Bertrand Gauthier committed
84
85
86
87
88
89
            if ($affectations) {
                ksort($affectations);
                $affectations = $helperHtmlList($affectations, $ordered = false, $attribs = false, $escape = false);
                $out .= sprintf($templateAffRech, $affectations);
            }

90
91
92
93
94
95
96
            // fonctions structurelles
            $fonctions = $authIdentity->getFonctionsStructurelles($this->getMapperStructure());
            if ($fonctions) {
                ksort($fonctions);
                $fonctions = $helperHtmlList($fonctions, $ordered = false, $attribs = false, $escape = false);
                $out .= sprintf($templateFonctStruct, $fonctions);
            }
Bertrand Gauthier's avatar
Bertrand Gauthier committed
97
98
        }
        else {
99
100
101
102
103
            $aucuneAffDispo = _("Aucune information disponible.");
            if ($this->getTranslator()) {
                $aucuneAffDispo = $this->getTranslator()->translate($aucuneAffDispo, $this->getTranslatorTextDomain());
            }
            $out .= $aucuneAffDispo;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
104
        }
105
106
107
108
109

        // formulaire d'usurpation d'identité
        $userUsurpationHelper = $this->view->plugin('userUsurpation'); /* @var $userUsurpationHelper \UnicaenAuth\View\Helper\UserUsurpationHelper */
        $out .= $userUsurpationHelper();

Bertrand Gauthier's avatar
Bertrand Gauthier committed
110
111
112
113
        return $out;
    }

    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
114
     * Indique si l'affichage de l'affectation princiaple seulement est activé ou non.
Bertrand Gauthier's avatar
Bertrand Gauthier committed
115
116
     * @return bool
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
117
    public function getAffectationPrincipale()
Bertrand Gauthier's avatar
Bertrand Gauthier committed
118
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
119
        return $this->affectationPrincipale;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
120
121
122
    }

    /**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
123
     * Active ou non l'affichage de l'affectation principale seulement.
Bertrand Gauthier's avatar
Bertrand Gauthier committed
124
     * 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
125
     * @param bool $affectationPrincipale
126
     * @return self
Bertrand Gauthier's avatar
Bertrand Gauthier committed
127
     */
Bertrand Gauthier's avatar
Bertrand Gauthier committed
128
    public function setAffectationPrincipale($affectationPrincipale = true)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
129
    {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
130
        $this->affectationPrincipale = $affectationPrincipale;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
131
132
133
134
        return $this;
    }

    /**
135
     * Spécifie le mapper d'accès aux structures de l'annuaire LDAP.
Bertrand Gauthier's avatar
Bertrand Gauthier committed
136
     * 
137
138
     * @param MapperStructure $mapperStructure
     * @return self
Bertrand Gauthier's avatar
Bertrand Gauthier committed
139
     */
140
    public function setMapperStructure(MapperStructure $mapperStructure)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
141
    {
142
        $this->mapperStructure = $mapperStructure;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
143
144
145
146
        return $this;
    }

    /**
147
     * Retourne le mapper d'accès aux structures de l'annuaire LDAP.
Bertrand Gauthier's avatar
Bertrand Gauthier committed
148
     * 
149
     * @return MapperStructure
Bertrand Gauthier's avatar
Bertrand Gauthier committed
150
     */
151
    public function getMapperStructure()
Bertrand Gauthier's avatar
Bertrand Gauthier committed
152
    {
153
        return $this->mapperStructure;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
154
    }
155
}