X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fflagset.php;h=ce3d55851fc776eddec41e940249e14463abc8fa;hb=e2cea47d18a6c2f1449e220c90103181229e939f;hp=d06115f48c7c2a4f3b3ce26bd2733b32fdf4b34f;hpb=bf517dafc122edf6ccd86847f0626cfd0df9f340;p=platal.git diff --git a/classes/flagset.php b/classes/flagset.php index d06115f..ce3d558 100644 --- a/classes/flagset.php +++ b/classes/flagset.php @@ -44,7 +44,7 @@ class Flagset * @param $flag XXX * @return VOID */ - public function addFlag($flag) + public function addFlag($flag) { if (!$flag) return; if (!$this->hasflag($flag)) { @@ -59,7 +59,7 @@ class Flagset * @param $flag XXX * @return 1 || 0 */ - public function hasFlag($flag) + public function hasFlag($flag) { $tok = strtok($this->value,$this->sep); while ($tok) { @@ -69,12 +69,32 @@ 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 * @return VOID */ - public function rmFlag($flag) + public function rmFlag($flag) { if (!$flag) return; $newvalue = ""; @@ -96,7 +116,7 @@ class Flagset { return $this->value; } -} +} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>