X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fflagset.php;h=ce3d55851fc776eddec41e940249e14463abc8fa;hb=44837f0200b687b01145e5a7b984830152dcd57d;hp=7fe89b6852c488c4327e0b7e77eabcbd5c3ff5a5;hpb=2b1ee50b0196216dbe4f37e3b039469d6003ca23;p=platal.git diff --git a/classes/flagset.php b/classes/flagset.php index 7fe89b6..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 = ""; @@ -90,7 +110,13 @@ class Flagset $this->value=$newvalue; } -} + /** return the flagset + */ + public function flags() + { + return $this->value; + } +} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>