/** * 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; } }