X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=Uplink%2FP10_ModeSets.class.php;h=612ee65fa739ceef377e3e7086a45fd7c954e95c;hb=d1fc76f5af98ff28ca6405cc5d6f50a3bbf0ac9b;hp=e03521d24ab83fb25a426ed87a22ec36d2e6ce88;hpb=61ea565f8e0161c0f0f75aac75682941fc2a3611;p=PHP-P10.git diff --git a/Uplink/P10_ModeSets.class.php b/Uplink/P10_ModeSets.class.php index e03521d..612ee65 100644 --- a/Uplink/P10_ModeSets.class.php +++ b/Uplink/P10_ModeSets.class.php @@ -108,9 +108,9 @@ class P10_ChannelModeSet { continue; } $flag = self::$modevalues[$mode]; - if(self::$modevalues[$mode] == self::MODE_TYPE_A) continue; //we shouldn't get such a mode on parseModes + if(self::$modes[$mode] == self::MODE_TYPE_A) continue; //we shouldn't get such a mode on parseModes $this->modeflags |= $flag; - if(self::$modevalues[$mode] == self::MODE_TYPE_B || self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { $this->modeparams[$mode] = $args[$c++]; } } @@ -155,26 +155,26 @@ class P10_ChannelModeSet { if($add) { if($returndiff && !($this->modeflags & $flag)) { $modestradd .= $mode; - if(self::$modevalues[$mode] == self::MODE_TYPE_B || self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { $paramstradd .= " ".$args[$c]; } } $this->modeflags |= $flag; - if(self::$modevalues[$mode] == self::MODE_TYPE_B || self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { $this->modeparams[$mode] = $args[$c++]; } } else { if($returndiff && ($this->modeflags & $flag)) { $modestrdel .= $mode; - if(self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_C) { $paramstrdel .= " ".$args[$c]; } } $this->modeflags &= ~$flag; - if(self::$modevalues[$mode] == self::MODE_TYPE_B || self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { unset($this->modeparams[$mode]); } - if(self::$modevalues[$mode] == self::MODE_TYPE_C) $c++; + if(self::$modes[$mode] == self::MODE_TYPE_C) $c++; } } if($returndiff) { @@ -210,7 +210,7 @@ class P10_ChannelModeSet { foreach(self::$modevalues as $mode => $flag) { if(($this->modeflags & $flag)) { $modestr .= $mode; - if(self::$modevalues[$mode] == self::MODE_TYPE_B || self::$modevalues[$mode] == self::MODE_TYPE_C) { + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { $paramstr .= " ".$this->modeparams[$mode]; } } @@ -224,7 +224,10 @@ class P10_ChannelModeSet { continue; } $flag = self::$modevalues[$mode]; - return ($this->modeflags & $flag); + if(self::$modes[$mode] == self::MODE_TYPE_B || self::$modes[$mode] == self::MODE_TYPE_C) { + return (($this->modeflags & $flag) ? $this->modeparams[$mode] : false); + } else + return ($this->modeflags & $flag); } } @@ -239,7 +242,7 @@ class P10_UserModeSet { "s" => self::MODE_WITHOUT_PARAMETER, "d" => self::MODE_WITHOUT_PARAMETER, "k" => self::MODE_WITHOUT_PARAMETER, - "g" => self::MODE_WITH_PARAMETER, + "g" => self::MODE_WITHOUT_PARAMETER, "r" => self::MODE_WITH_PARAMETER, "f" => self::MODE_WITH_PARAMETER, "n" => self::MODE_WITHOUT_PARAMETER, @@ -286,7 +289,7 @@ class P10_UserModeSet { } $flag = self::$modevalues[$mode]; $this->modeflags |= $flag; - if(self::$modevalues[$mode] == self::MODE_WITH_PARAMETER) { + if(self::$modes[$mode] == self::MODE_WITH_PARAMETER) { $this->modeparams[$mode] = $args[$c++]; } } @@ -317,12 +320,12 @@ class P10_UserModeSet { if($add) { if($returndiff && !($this->modeflags & $flag)) { $modestradd .= $mode; - if(self::$modevalues[$mode] == self::MODE_WITH_PARAMETER) { + if(self::$modes[$mode] == self::MODE_WITH_PARAMETER) { $paramstradd .= " ".$args[$c]; } } $this->modeflags |= $flag; - if(self::$modevalues[$mode] == self::MODE_WITH_PARAMETER) { + if(self::$modes[$mode] == self::MODE_WITH_PARAMETER) { $this->modeparams[$mode] = $args[$c++]; } } else { @@ -346,7 +349,7 @@ class P10_UserModeSet { foreach(self::$modevalues as $mode => $flag) { if(($this->modeflags & $flag)) { $modestr .= $mode; - if(self::$modevalues[$mode] == self::MODE_WITH_PARAMETER) { + if(self::$modes[$mode] == self::MODE_WITH_PARAMETER) { $paramstr .= " ".$this->modeparams[$mode]; } } @@ -354,6 +357,18 @@ class P10_UserModeSet { return $modestr.$paramstr; } + public function hasMode($mode) { + if(!array_key_exists($mode, self::$modevalues)) { + trigger_error("unknown mode (".$mode.") on setModes (".$modes.").", E_USER_WARNING); + continue; + } + $flag = self::$modevalues[$mode]; + if(self::$modes[$mode] == self::MODE_WITH_PARAMETER) { + return (($this->modeflags & $flag) ? $this->modeparams[$mode] : false); + } else + return ($this->modeflags & $flag); + } + } ?> \ No newline at end of file