\r\n".
"".
"".
"".
"".$target."".
"30".
"".
"".
"".
"".
"".
"";
$post = "POST /GWS/Groove/1.0/Contacts/ HTTP/1.0\r\n" .
"Host: ".$host."\r\n".
"User-Agent: presence.php\r\n".
"Accept: text/xml\r\n".
"Accept: multipart/*\r\n".
"Content-Length: " . strlen($body) . "\r\n".
"Content-Type: text/xml; charset=utf-8\r\n".
"SOAPAction: \"http://www.groove.net/Groove/1.0/Contacts#Read\"\r\n";
$payload = $post."\r\n".$body;
// Open a socket and send the HTTP request
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp)
{
return "error: can't open";
}
if( !fputs($fp, $payload, strlen($payload)))
{
fclose($fp);
return "error: can't put";
}
// Expected response:
//
//
//
//
//
// grooveIdentity://bmbsqsp2snq79wjxibjc89wt4t5xgfdi@hfptest/GWS/Groove/1.0/vCard/grooveIdentity/bmbsqsp2snq79wjxibjc89wt4t5xgfdi@Online
// grooveIdentity://c4epcjm2984aq77fxwsfpxd7fzq9mnga@Some Person/Groove/GWS/Groove/1.0/vCard/grooveIdentity/c4epcjm2984aq77fxwsfpxd7fzq9mnga@OffLine
//
//
//
//
$resp = "";
while ($chunk = fread($fp, 32768))
{
$resp .= $chunk;
}
fclose($fp);
// separate content from HTTP headers
if(preg_match("/([^<]*?)\r?\n\r?\n(<.*>)/s",$resp,$result))
{
$data = $result[2];
}
else
{
return "error: can't separate headers\r\n".$resp;
}
if(strlen($data) == 0)
{
return "error: no data";
}
return $data;
}
function onStartElement($parser,$elname,$attrs='')
{
global $tag;
$tag = $elname;
}
function onEndElement($parser,$elname,$attrs='')
{
}
function onCharacterData($parser,$data)
{
global $tag;
global $username;
global $responseText;
global $name;
if( $tag=="Name" )
{
$username = $data;
}
if( $tag=="Awareness" & $username==$name )
{
$responseText = $data;
}
}
function printResponse()
{
global $name;
global $responseText;
if( !isset( $responseText ) )
{
$responseText = "Unknown";
}
print "\r\n".
"\r\n".
"".$responseText."\r\n";
switch( strtolower($responseText) )
{
case "online":
print "http://www.cabezal.com/presence/Online.png\r\n";
break;
case "offline":
print "http://www.cabezal.com/presence/Offline.png\r\n";
break;
default:
break;
}
print "".$name."\r\n".
"";
}
if( !isset($user) )
{
global $responseText;
$responseText="No username specified";
$name="Unspecified";
}
else
{
$xml = doContact( $gwstarget );
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_set_element_handler($parser, 'onStartElement','onEndElement');
xml_set_character_data_handler($parser, 'onCharacterData');
if( !xml_parse($parser,$xml,true))
{
global $responseText;
$responseText = "XML error '".
xml_error_string(xml_get_error_code($parser)).
"' at line ".
xml_get_current_line_number($parser);
}
xml_parser_free($parser);
}
printResponse();
?>