00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00024 class flagset {
00026 var $value;
00027
00029 var $sep = ",";
00030
00031
00036 function flagset( $flags="" ) {
00037 $this->value = $flags;
00038 }
00039
00040
00045 function addflag($flag) {
00046 if (!$flag) return;
00047 if (!$this->hasflag($flag)) {
00048 if ($this->value)
00049 $this->value .= $this->sep;
00050 $this->value .= $flag;
00051 }
00052 }
00053
00054
00059 function as_array()
00060 {
00061 if ($this->value) {
00062 $arr = explode($this->sep, $this->value);
00063 } else {
00064 $arr = array();
00065 }
00066 return $arr;
00067 }
00068
00069
00074 function hasflag($flag) {
00075 $tok = strtok($this->value,$this->sep);
00076 while ($tok) {
00077 if ($tok==$flag) return 1;
00078 $tok = strtok($this->sep);
00079 }
00080 return 0;
00081 }
00082
00083
00088 function rmflag($flag) {
00089 if (!$flag) return;
00090 $newvalue = "";
00091 $tok = strtok($this->value,$this->sep);
00092 while ($tok) {
00093 if ($tok!=$flag) {
00094 if ($newvalue)
00095 $newvalue .= $this->sep;
00096 $newvalue .= $tok;
00097 }
00098 $tok = strtok($this->sep);
00099 }
00100 $this->value=$newvalue;
00101 }
00102
00103 }
00104
00105 ?>