From: x2003bruneau Date: Fri, 6 Apr 2007 09:33:06 +0000 (+0000) Subject: Flag combination test becomes a feature of FlagSet X-Git-Tag: xorg/0.9.14~121 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=aa5836d7f3ab269718f45f9ffa290b942b662632;p=platal.git Flag combination test becomes a feature of FlagSet git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1666 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/classes/flagset.php b/classes/flagset.php index d06115f..40a3b14 100644 --- a/classes/flagset.php +++ b/classes/flagset.php @@ -69,6 +69,26 @@ class Flagset return 0; } + /** test flag combination + */ + public function hasFlagCombination($flag) + { + $perms = explode(',', $flag); + foreach ($perms as $perm) + { + $ok = true; + $rights = explode(':', $perm); + foreach ($rights as $right) { + if (($right{0} == '!' && $this->hasFlag(substr($right, 1))) || !$this->hasFlag($right)) { + $ok = false; + } + } + if ($ok) { + return true; + } + } + return false; + } /** remove flag * @param $flag XXX diff --git a/classes/platal.php b/classes/platal.php index 81900f0..e72fc0b 100644 --- a/classes/platal.php +++ b/classes/platal.php @@ -181,23 +181,7 @@ class Platal return true; } $s_perms = S::v('perms'); - - // hook perms syntax is - $perms = explode(',', $perms); - foreach ($perms as $perm) - { - $ok = true; - $rights = explode(':', $perm); - foreach ($rights as $right) { - if (($right{0} == '!' && $s_perms->hasFlag(substr($right, 1))) || !$s_perms->hasFlag($right)) { - $ok = false; - } - } - if ($ok) { - return true; - } - } - return false; + return $s_perms->hasFlagCombination($perms); } private function call_hook(PlatalPage &$page) diff --git a/templates/lists/header_listes.tpl b/templates/lists/header_listes.tpl index 39ba296..c50398a 100644 --- a/templates/lists/header_listes.tpl +++ b/templates/lists/header_listes.tpl @@ -46,7 +46,7 @@ {/if} - {if $details.own || $smarty.session.perms->hasFlag('admin') || $smarty.session.perms->hasFlag('groupadmin')} + {if $details.own || $smarty.session.perms->hasFlagCombination('admin,groupadmin')} Administrer la liste : @@ -73,7 +73,7 @@ {/if} - {if $smarty.session.perms->hasFlag('admin') || $smarty.session.perms->hasFlag('groupadmin')} + {if $smarty.session.perms->hasFlagCombination('admin,groupadmin')} Administrer (avancé) :