All pastes #34928 Raw Edit

itrebal

public text v1 · immutable
#34928 ·published 2005-12-26 20:52 UTC
rendered paste body
k':
      if(( $params == '') || preg_match('/^ +$/',$params)){
	// Wrong syntax
	$srv->send($uid,'ERROR: Parameter missing'.$srv->crlf);
      }elseif(preg_match('/^ +([^ ]+)$/', $params, $matches)){
	$nick_old = get_nick($uid);
	$nick_new = preg_replace('/[,\\[\\]]/','',$matches[1]);
	if($nick_new == '' ){
	  $srv->send($uid,'ERROR: Invalid nickname'.$srv->crlf);
       	}else{
	  // Nick already used?
	  $found = FALSE;
	  for($i = 0;$i <= $srv->active_clients;$i++){
	    if($i == $uid) continue;
	    if(!strcasecmp(get_nick($i),$nick_new)){
	      $found = TRUE;
	      break; // Stop searching
	    }
	  }
	  if($found){
	    // Nick already used
	    $srv->send($uid,'ERROR: Nickname already in use'.$srv->crlf);
	  }else{
	    set_nick($uid, $nick_new);
	    // Notify others
	    if($nick_old == ''){
	      // User has just logged in
	      for($i=0;$i <= $srv->active_clients;$i++){
		if($i == $uid) continue;
		if(get_nick($i) != ''){ //To logged-in only
		  $srv->send($i,'['.$nick_new.'] joined the chat.'.$srv->crlf);
		}
	      }	  
	      $srv->send($uid,'You joined the chat as ['.$nick_new.'].'.$srv->crlf);
	      echo '['.$srv->get_addr($uid).'] is ['.$nick_new."]\n";
	    }else{
	      // User changed its nick
	      for($i=0; $i <= $srv->active_clients; $i++){
		if($i == $uid) continue;
		if(get_nick($i) != ''){	// To logged-in only
		  $srv->send($i,'['.$nick_old.'] is now ['.$nick_new.']'.$srv->crlf);
		}
	      }
	      $srv->send($uid, 'Your nick was changed to ['.$nick_new.']'.$srv->crlf);
	      echo '['.$srv->get_addr($uid).'] is now [' . $nick_new . ']\n';
	    }
	  }
	}
      }else{
	// Wrong syntax
	$srv->send($uid, 'ERROR: A nickname must NOT contain spaces.'.$srv->crlf);
      }
      break;