UserCurrent.php 3.06 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
namespace UnicaenAuth\View\Helper;

/**
 * Aide de vue affichant toutes les infos concernant l'utilisateur courant.
 * C'est à dire :
 *  - "Aucun" + lien de connexion OU BIEN nom de l'utilisateur connecté + lien de déconnexion
 *  - profil de l'utilisateur connecté
 *  - infos administratives sur l'utilisateur
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class UserCurrent extends UserAbstract
{
    /**
     * @var string
     */
    protected $legende;
    /**
     * @var bool
     */
    protected $affectationFineSiDispo = false;

    /**
     * Point d'entrée.
     * 
     * @param string $legende Légende affichée devant l'identité de l'utilisateur connecté éventuel
     * @param boolean $affectationFineSiDispo Indique s'il faut prendre en compte l'affectation
     * plus fine (ucbnSousStructure) si elle existe, à la place de l'affectation standard (niveau 2)
     * @return UserCurrent 
     */
    public function __invoke($legende = "Utilisateur connecté : ", $affectationFineSiDispo = false)
    {
        $this->setLegende($legende)
             ->setAffectationFineSiDispo($affectationFineSiDispo);
        return $this;
    }

    /**
     * Retourne le code HTML généré par cette aide de vue.
     * 
     * @return string 
     */
    public function __toString()
    {
        try {
            if ($this->getIdentity()) {
                $out = sprintf('<a id="info" class="infobulle">%s%s<em><span>%s%s</span></em></a>', 
                        $this->getLegende(),
                        $this->getView()->userStatus(false), 
                        $this->getView()->userProfile(), 
                        $this->getView()->userInfo($this->getAffectationFineSiDispo()));
            }
            else {
                $out = "" . $this->getView()->userStatus(false);
            }
        } catch (\Exception $e) {
            var_dump($e);
            $out = '<p>' . $e->getMessage() . '</p><p>' . $e->getTraceAsString() . '</p>';
        }

        return $out;
    }

    /**
     * Retourne la légende affichée devant l'identité de l'utilisateur connecté éventuel.
     * 
     * @return string
     */
    public function getLegende()
    {
        return $this->legende;
    }

    /**
     * Change la légende affichée devant l'identité de l'utilisateur connecté éventuel.
     * 
     * @param string $legende
     * @return UserCurrent
     */
    public function setLegende($legende = true)
    {
        $this->legende = $legende;
        return $this;
    }

    /**
     * Indique si l'affichage de l'affectation fine éventuelle est activé ou non.
     * 
     * @return bool
     */
    public function getAffectationFineSiDispo()
    {
        return $this->affectationFineSiDispo;
    }

    /**
     * Active ou non l'affichage de l'affectation fine éventuelle.
     * 
     * @param bool $affectationFineSiDispo
     * @return UserCurrent
     */
    public function setAffectationFineSiDispo($affectationFineSiDispo = true)
    {
        $this->affectationFineSiDispo = $affectationFineSiDispo;
        return $this;
    }

}