function cmd_mode($client, $argv) { $name = $argv[0]; $set = isset($argv[1]) ? implode(' ', array_slice($argv, 1)) : false; if (Channel::is_valid($name)) { // Valid channel name if (($channel = Channel::find($name)) === false) { // Channel doesn't exist. $client->write(IRC::sprintf(IRC::NoSuchNickChannel, &$client, $name)); return; } if ($set === false) { // Not setting anything. // Modes $client->write(IRC::sprintf(IRC::ChannelModes, &$client, $name, $channel->modes->make_string())); // Creation time $client->write(IRC::sprintf(IRC::ChannelCreated, &$client, $name, $channel->created)); } else { // TODO: Check for mode +o, etc, before allowing this. $channel->modes->mode($set); } return; } // Treat as a PM if (($user = Client::find_by_nick($name)) === false) { // Couldn't find a channel or user under this name $client->write(IRC::sprintf(IRC::NoSuchNickChannel, &$client, $name)); } else { // Found a user // TODO: User modes (oper only?) } }