UserCurrent.php 3.36 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
<?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 
     */
32
    public function __invoke($legende = null, $affectationFineSiDispo = false)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
33
    {
34
        $this->setLegende($legende ?: _("Utilisateur connecté : "))
Bertrand Gauthier's avatar
Bertrand Gauthier committed
35
36
37
38
39
40
41
42
43
44
45
46
             ->setAffectationFineSiDispo($affectationFineSiDispo);
        return $this;
    }

    /**
     * Retourne le code HTML généré par cette aide de vue.
     * 
     * @return string 
     */
    public function __toString()
    {
        try {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
47
48
49
            $id = 'user-current-info';
            $status = $this->getView()->userStatus(false);
            
Bertrand Gauthier's avatar
Bertrand Gauthier committed
50
            if ($this->getIdentity()) {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
51
                $content = $this->getView()->userProfile() . $this->getView()->userInfo($this->getAffectationFineSiDispo());
Bertrand Gauthier's avatar
Bertrand Gauthier committed
52
53
54
55
56
57
58
            }
            else {
                $content = "Aucun";
            }
            
            $content = preg_replace('/\r\n|\n|\r/', '', $content);
            $out = <<<EOS
Bertrand Gauthier's avatar
Bertrand Gauthier committed
59
60
<a class="navbar-link" id="$id" title="Utilisateur connecté" data-placement="bottom" data-toggle="popover" data-content="$content" href="#">$status</a>
EOS;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
61
            $out .= <<<EOS
Bertrand Gauthier's avatar
Bertrand Gauthier committed
62
63
<script type="text/javascript">
    $(function() {
64
        $("#$id").popover({ html: true, container: '#navbar' });
Bertrand Gauthier's avatar
Bertrand Gauthier committed
65
66
67
68
69
    });
</script>
EOS;
        }
        catch (\Exception $e) {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
70
71
72
            var_dump($e);
            $out = '<p>' . $e->getMessage() . '</p><p>' . $e->getTraceAsString() . '</p>';
        }
Bertrand Gauthier's avatar
Bertrand Gauthier committed
73
        
Bertrand Gauthier's avatar
Bertrand Gauthier committed
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
110
111
112
113
114
115
116
117
118
119
120
121
        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;
    }

}