UserInfo.php 4.95 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
7
8
9
10
11
12
13
14
15
16
17
use Zend\View\Helper\HtmlList;

/**
 * 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
        }
        
        return $out;
    }

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

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

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

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