Updates ChangeLog.
[platal.git] / classes / flagset.php
index 7fe89b6..ce3d558 100644 (file)
@@ -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:
 ?>