UserProfile.php 2.68 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
2
<?php

3
namespace UnicaenAuth\View\Helper;
4

Bertrand Gauthier's avatar
Bertrand Gauthier committed
5
6
7
8
9
10
11
/**
 * Aide de vue permettant d'afficher le profil de l'utilisateur connecté.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class UserProfile extends UserAbstract
{
12
    /**
13
     * @var bool
14
15
     */
    protected $userProfileSelectable = false;
16

Bertrand Gauthier's avatar
Bertrand Gauthier committed
17
18
    /**
     * Point d'entrée.
19
     *
20
     * @param bool $userProfileSelectable Spécifie s'il faut afficher les profils
21
22
     *                                    de l'utilisateur sous forme d'une liste déroulante ou de boutons radios,
     *                                    permettant ainsi à l'utilisateur de changer de profil courant.
23
     * @return self
Bertrand Gauthier's avatar
Bertrand Gauthier committed
24
     */
25
    public function __invoke($userProfileSelectable = false)
Bertrand Gauthier's avatar
Bertrand Gauthier committed
26
    {
27
        $this->userProfileSelectable = $userProfileSelectable;
28

Bertrand Gauthier's avatar
Bertrand Gauthier committed
29
30
        return $this;
    }
31

Bertrand Gauthier's avatar
Bertrand Gauthier committed
32
33
34
35
36
    /**
     * Retourne le code HTML généré par cette aide de vue.
     *
     * @return string
     */
37
    public function render()
Bertrand Gauthier's avatar
Bertrand Gauthier committed
38
    {
39
40
41
42
43
44
45
46
47
48
        $title   = _("Profil utilisateur");
        $unknown = _("Inconnu");
        $none    = _("Aucun");

        if ($this->getTranslator()) {
            $title   = $this->getTranslator()->translate($title, $this->getTranslatorTextDomain());
            $unknown = $this->getTranslator()->translate($unknown, $this->getTranslatorTextDomain());
            $none    = $this->getTranslator()->translate($none, $this->getTranslatorTextDomain());
        }

49
        $roles = $this->getIdentityRolesAsOptions();
50

51
52
53
54
55
        if (!$roles) {
            $roles[] = $none;
        }

        $html = "<strong>$title :</strong>" . PHP_EOL;
56

57
58
        if ($this->userProfileSelectable) {
            $html .= $this->getView()->userProfileSelect(false);
59
        } else {
60
61
            $html .= $this->getView()->htmlList($roles);
        }
62

63
64
        return $html;
    }
65

66
67
68
69
70
71
72
73
74
    /**
     * Retourne le code HTML généré par cette aide de vue.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->render();
    }
75

76
77
    /**
     * Retourne les rôles de l'utilisateur courant.
78
     *
79
80
81
82
     * @return array
     */
    protected function getIdentityRolesAsOptions()
    {
83
        return $this->getUserContext()->getIdentityRolesToString();
84
    }
85

86
87
88
89
    /**
     * Spécifie s'il faut afficher les profils
     * de l'utilisateur sous forme d'une liste déroulante ou de boutons radios, permettant
     * ainsi à l'utilisateur de changer de profil courant.
90
91
     *
     * @param bool $userProfileSelectable
92
93
94
95
96
     * @return \UnicaenAuth\View\Helper\UserProfile
     */
    public function setUserProfileSelectable($userProfileSelectable = true)
    {
        $this->userProfileSelectable = $userProfileSelectable;
97

98
99
        return $this;
    }
100
}