Skip to content
Snippets Groups Projects
Select Git revision
  • a5892b429e67fa4dc602eda6f51db180d8142ffc
  • master default protected
  • 5.x
  • ll-php8-bs5
  • release_5_bs5
  • ll-php8
  • 4.x
  • laminas_migration
  • release_1.0.0.2
  • release_4.0.0
  • release_3.2.8
  • bootstrap4_migration
  • 1.0.0.3
  • 6.0.7
  • 6.0.6
  • 6.0.5
  • 6.0.4
  • 6.0.3
  • 6.0.2
  • 6.0.1
  • 5.1.1
  • 6.0.0
  • 5.1.0
  • 5.0.0
  • 4.0.2
  • 3.2.11
  • 4.0.1
  • 3.2.10
  • 4.0.0
  • 1.0.0.2
  • 3.2.9
  • 3.2.8
32 results

UserCurrent.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    UserCurrent.php 3.15 KiB
    <?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)
         * @return self 
         */
        public function __invoke($affectationFineSiDispo = false)
        {
            $this->setAffectationFineSiDispo($affectationFineSiDispo);
            return $this;
        }
        
        /**
         * Retourne le code HTML généré par cette aide de vue.
         * 
         * @return string 
         */
        public function __toString()
        {
            $id = 'user-current-info';
            $userStatusHelper = $this->getView()->plugin('userStatus'); /* @var $userStatusHelper \UnicaenAuth\View\Helper\UserStatus */
            $status = $userStatusHelper(false);
    
            if ($this->getIdentity()) {
                $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());
            }
            else {
                $content = _("Aucun");
                if ($this->getTranslator()) {
                    $content = $this->getTranslator()->translate($content, $this->getTranslatorTextDomain());
                }
            }
    
            $content = preg_replace('/\r\n|\n|\r/', '', $content);
    
            $title = _("Utilisateur connecté à l'application");
            if ($this->getTranslator()) {
                $title = $this->getTranslator()->translate($title, $this->getTranslatorTextDomain());
            }
    
            $out = <<<EOS
    <a class="navbar-link" 
       id="$id" 
       title="$title" 
       data-placement="bottom" 
       data-toggle="popover" 
       data-content="$content" 
       href="#">$status</a>
    EOS;
            $out .= PHP_EOL;
            $out .= <<<EOS
    <script type="text/javascript">
        $(function() {
            $("#$id").popover({ html: true, container: '#navbar' });
        });
    </script>
    EOS;
            $out .= PHP_EOL;
            
            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
         * @return self
         */
        public function setAffectationFineSiDispo($affectationFineSiDispo = true)
        {
            $this->affectationFineSiDispo = $affectationFineSiDispo;
            return $this;
        }
    }