<?php

function parsechanmodes($modes,$setby = "%unknown%") {
   global $pieces;
   $pcount = 0;
   while($mode = substr($modes,0,1)) {
      $modes = substr($modes,1);
      if($mode == "+") {
         $set = true;
      }
      elseif($mode == "-") {
         $set = false;
      }
      elseif($mode == "o") {
         $nick = $pieces[1][4+$pcount];
         $pcount++;
         if($set) {
            $this->nicks[$nick]->modes['o']['time'] = time();
            $this->nicks[$nick]->modes['o']['setby'] = $setby;
         }
         else {
            unset($this->nicks[$nick]->modes['o']);
         }
      }
      elseif($mode == "l") {
         $limit = $pieces[1][4+$pcount];
         $pcount++;
         if($set) {
            $this->modes["l"]['value'] = $limit;
            $this->modes["l"]['time']  = time();;
            $this->modes["l"]['setby'] = $setby;
         }
         else {
            unset($this->modes["l"]);
         }
      }
      elseif($mode == "b") {
         $ban = $pieces[1][4+$pcount];
         $pcount++;
         if($set) {
            $this->modes["b"][$ban]['time'] = time();
            $this->modes["b"][$ban]['setby'] = $setby;
         }
         else {
            unset($this->modes["b"][$ban]);
         }
      }
      elseif($mode == "v") {
         $nick = $pieces[1][4+$pcount];
         $pcount++;
         if($set) {
            $this->nicks[$nick]->modes['v']['time'] = time();
            $this->nicks[$nick]->modes['v']['setby'] = $setby;
         }
         else {
            unset($this->nicks[$nick]->modes['v']);
         }
      }
      elseif($mode == "k") {
         $key = $pieces[1][4+$pcount];
         $pcount++;
         if($set) {
            $this->modes["k"]['value'] = $key;
            $this->modes["k"]['time']  = time();;
            $this->modes["k"]['setby'] = $setby;
         }
         else {
            unset($this->modes["k"]);
         }
      }
      else {
         if($set) {
            $this->modes[$mode]['time']  = time();;
            $this->modes[$mode]['setby'] = $setby;
         }
         else {
            unset($this->modes[$mode]);
         }
      }
   }
}

?>