diff -r 45164bc2567a -r 508400fc5282 libirc.php --- a/libirc.php Sat Jan 10 14:12:36 2009 -0500 +++ b/libirc.php Tue Jan 20 22:08:07 2009 -0500 @@ -256,6 +256,58 @@ } /** + * Returns WHOIS information about a nick. + * @param string Nick + * @return array + */ + + public function whois($nick) + { + static $cache = array(); + if ( isset($cache[$nick]) ) + { + if ( $cache[$nick]['time'] + 20 >= time() ) + { + return $cache[$nick]; + } + } + $this->put("WHOIS $nick\r\n"); + $lines = array(); + $return = array( + 'identified' => false, + 'time' => time() + ); + while ( $line = $this->get(3) ) + { + $lines[] = $line; + list(, $code) = explode(' ', $line); + $code = intval($code); + switch($code) + { + case 401: + return false; + case 311: + list(, , , $return['nick'], $return['user'], $return['host']) = explode(' ', $line); + $return['ircname'] = substr($line, strpos(substr($line, 1), ':') + 2); + break; + case 319: + $return['channels'] = explode(' ', substr($line, strpos(substr($line, 1), ':') + 2)); + break; + case 307: + case 320: + if ( strstr($line, 'identified') ) + $return['identified'] = true; + break; + case 318: + $cache[$nick] = $return; + return $return; + } + } + $cache[$nick] = $return; + return $return; + } + + /** * Parse bold (...) tags and color tags in a text into IRC speak, and process /me commands. Colors are ..., specify background with .... Valid colors are white, black, navy, green, red, maroon, purple, orange, yellow, lime, teal, aqua, cyan, blue, pink, grey, and silver * @param string Text to filter * @return string