/**
  * Affiche la matrice des droits de visibilité entre utilisateurs
  *
  * @author Frédéric Mossmann <*****@*****.**>
  * @since 2006/12/07
  */
 public function view()
 {
     CopixHTMLHeader::addCSSLink(_resource("styles/module_sysutils.css"));
     if (!Admin::canAdmin()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     $user_types = array('USER_VIL', 'USER_ENS', 'USER_ADM', 'USER_RES', 'USER_ELE', 'USER_EXT');
     $visibility_matrice = array();
     foreach ($user_types as $src) {
         foreach ($user_types as $dst) {
             $visibility_matrice[$src][$dst] = Kernel::getUserTypeVisibility($dst, $src);
         }
     }
     $tplUserVisibility = new CopixTpl();
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', CopixI18N::get('sysutils|admin.moduleDescription'));
     $tplUserVisibility->assign('visibility', $visibility_matrice);
     $tplUserVisibility->assign('user_types', $user_types);
     $tpl->assign('MAIN', $tplUserVisibility->fetch('sysutils|uservisibility.tpl'));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Retourne la visibilitÈ d'un utilisateur
  *
  * @author FrÈdÈric Mossmann <*****@*****.**>
  * @since 2006/12/07
  * @param string $dst_type Type personne ‡ voir.
  * @param integer $dst_id Identifiant personne ‡ voir.
  * @param string $src_type Type personne qui veut voir (option). L'utilisateur connectÈ par dÈfaut.
  * @param integer $src_id Identifiant personne qui veut voir (option). L'utilisateur connectÈ par dÈfaut.
  * @return bool True si la visibilitÈ est autorisÈe
  * @todo Affiner la recherche si la visibilitÈ est limitÈ ‡ un noeud (ville, ecole, etc.)
  */
 public function getUserVisibility($dst_type, $dst_id, $src_type = "ME", $src_id = 0)
 {
     if ($src_type == 'ME') {
         if (_currentUser()->getExtra('type')) {
             $src_type = _currentUser()->getExtra('type');
             $src_id = _currentUser()->getExtra('id');
         } else {
             return false;
         }
     }
     // Recherche la visibilitÈ gÈnÈrique en fonction du type d'utilisateur.
     $type_visibility = Kernel::getUserTypeVisibility($dst_type, $src_type);
     // Si c'est FULL ou NONE, on rÈpond de suite. Sinon, on doit affiner la recherche (TODO)
     switch ($type_visibility) {
         case 'FULL':
             return true;
         case 'NONE':
             return false;
         case 'BU_GRVILLE':
         case 'BU_VILLE':
         case 'BU_ECOLE':
         case 'BU_CLASSE':
         default:
             return true;
             break;
     }
 }