Remove my old and ugly hack to check permissions and set up a new flexible way to...
[platal.git] / classes / flagset.php
1 <?php
2 /*
3 * Copyright (C) 2003-2004 Polytechnique.org
4 * http://opensource.polytechnique.org/
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21
22 /** class for describing flags
23 */
24 class Flagset
25 {
26 /** string that holds the flagset */
27 private $value;
28
29 /** the boundary between flags */
30 private $sep = ",";
31
32
33 /** set flag
34 * @param $flags services FROM coupures
35 * @return VOID
36 */
37 public function __construct($flags = "")
38 {
39 $this->value = $flags;
40 }
41
42
43 /** add flag
44 * @param $flag XXX
45 * @return VOID
46 */
47 public function addFlag($flag)
48 {
49 if (!$flag) return;
50 if (!$this->hasflag($flag)) {
51 if ($this->value)
52 $this->value .= $this->sep;
53 $this->value .= $flag;
54 }
55 }
56
57
58 /** test si flag ou pas
59 * @param $flag XXX
60 * @return 1 || 0
61 */
62 public function hasFlag($flag)
63 {
64 $tok = strtok($this->value,$this->sep);
65 while ($tok) {
66 if ($tok==$flag) return 1;
67 $tok = strtok($this->sep);
68 }
69 return 0;
70 }
71
72
73 /** remove flag
74 * @param $flag XXX
75 * @return VOID
76 */
77 public function rmFlag($flag)
78 {
79 if (!$flag) return;
80 $newvalue = "";
81 $tok = strtok($this->value,$this->sep);
82 while ($tok) {
83 if ($tok!=$flag) {
84 if ($newvalue)
85 $newvalue .= $this->sep;
86 $newvalue .= $tok;
87 }
88 $tok = strtok($this->sep);
89 }
90 $this->value=$newvalue;
91 }
92
93 /** return the flagset
94 */
95 public function flags()
96 {
97 return $this->value;
98 }
99 }
100
101 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
102 ?>