UserCurrent.php 3.47 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
<?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 bool
     */
    protected $affectationFineSiDispo = false;

    /**
     * Point d'entrée.
     * 
     * @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)
25
     * @return self 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
26
     */
27
    public function __invoke($affectationFineSiDispo = false)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
28
    {
29
        $this->setAffectationFineSiDispo($affectationFineSiDispo);
Bertrand Gauthier's avatar
Bertrand Gauthier committed
30
31
        return $this;
    }
32
    
Bertrand Gauthier's avatar
Bertrand Gauthier committed
33
34
35
36
37
38
39
40
    /**
     * 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
41
            $id = 'user-current-info';
42
43
            $userStatusHelper = $this->getView()->plugin('userStatus'); /* @var $userStatusHelper \UnicaenAuth\View\Helper\UserStatus */
            $status = $userStatusHelper(false);
Bertrand Gauthier's avatar
Bertrand Gauthier committed
44
            
Bertrand Gauthier's avatar
Bertrand Gauthier committed
45
            if ($this->getIdentity()) {
46
47
48
                $userProfileHelper = $this->getView()->plugin('userProfile'); /* @var $userProfileHelper \UnicaenAuth\View\Helper\UserProfile */
                $userInfoHelper    = $this->getView()->plugin('userInfo'); /* @var $userInfoHelper \UnicaenAuth\View\Helper\UserInfo */
                $content = $userProfileHelper . $userInfoHelper($this->getAffectationFineSiDispo());
Bertrand Gauthier's avatar
Bertrand Gauthier committed
49
50
            }
            else {
51
52
53
54
                $content = _("Aucun");
                if ($this->getTranslator()) {
                    $content = $this->getTranslator()->translate($content, $this->getTranslatorTextDomain());
                }
Bertrand Gauthier's avatar
Bertrand Gauthier committed
55
56
57
            }
            
            $content = preg_replace('/\r\n|\n|\r/', '', $content);
58
59
60
61
62
63
            
            $title = _("Utilisateur connecté à l'application");
            if ($this->getTranslator()) {
                $title = $this->getTranslator()->translate($title, $this->getTranslatorTextDomain());
            }
                    
Bertrand Gauthier's avatar
Bertrand Gauthier committed
64
            $out = <<<EOS
65
66
67
68
69
70
71
<a class="navbar-link" 
   id="$id" 
   title="$title" 
   data-placement="bottom" 
   data-toggle="popover" 
   data-content="$content" 
   href="#">$status</a>
Bertrand Gauthier's avatar
Bertrand Gauthier committed
72
EOS;
73
            $out .= PHP_EOL;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
74
            $out .= <<<EOS
Bertrand Gauthier's avatar
Bertrand Gauthier committed
75
76
<script type="text/javascript">
    $(function() {
77
        $("#$id").popover({ html: true, container: '#navbar' });
Bertrand Gauthier's avatar
Bertrand Gauthier committed
78
79
80
    });
</script>
EOS;
81
            $out .= PHP_EOL;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
82
83
        }
        catch (\Exception $e) {
Bertrand Gauthier's avatar
Bertrand Gauthier committed
84
85
86
            var_dump($e);
            $out = '<p>' . $e->getMessage() . '</p><p>' . $e->getTraceAsString() . '</p>';
        }
Bertrand Gauthier's avatar
Bertrand Gauthier committed
87
        
Bertrand Gauthier's avatar
Bertrand Gauthier committed
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
        return $out;
    }

    /**
     * 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
105
     * @return self
Bertrand Gauthier's avatar
Bertrand Gauthier committed
106
107
108
109
110
111
     */
    public function setAffectationFineSiDispo($affectationFineSiDispo = true)
    {
        $this->affectationFineSiDispo = $affectationFineSiDispo;
        return $this;
    }
112
}