<?php
class ICQStatus{
var $status;
var $fp;
var $ICQServer = 'status.icq.com';
function ICQStatus(){
$this->status = array();
}
function Connect2ICQServer(){
$this->fp = fsockopen($this->ICQServer, 80, $errno, $errstr, 90);
socket_set_blocking($this->fp, 1);
}
/* Return 0 if uin's status is offline,
1 if uin's status is online,
2 if uin's status is unknown */
function GetStatus($uin){
$this->Connect2ICQServer();
if( isset($this->status[$uin]) ){
return $this->status[$uin];
}
$data = '';
fputs($this->fp,
'GET /online.gif?icq=' . $uin . '&img=1 HTTP/1.1' . "\r\n" .
'Host: ' . $this->ICQServer . "\r\n\r\n");
while( !feof($this->fp) ){
$data = fgets($this->fp, 2048);
if( ereg('Location: +(.*)', $data, $parts) ){
break;
}
}
$this->status[$uin] = 2;
if( isset($parts[1]) ){
$file = trim($parts[1]);
if( $file == '/1/online1.gif' ){
$this->status[$uin] = 1;
}
elseif( $file == '/1/online0.gif' ){
$this->status[$uin] = 0;
}
}
return $this->status[$uin];
}
function CloseICQConnection(){
fclose($this->fp);
}
}
?>
|