Seriously needs caching. SRSLY
<?php
class ImageGeneration {
function getInfo($name) {
$this->loadDefaultInfo();
$XML = new XMLReader;
$XML->open("http://chat.hypermutt.net/online/user/".$name.".xml");
$wn = array();
while($XML->read()) {
if ($XML->nodeType == XMLReader::ELEMENT) {
$wn[] = $XML->name;
}
if ($XML->nodeType == XMLReader::TEXT) {
if ("user/info/nick" == implode('/', $wn)) {
$this->name = $XML->value . ". ";
}
if ("user/info/online" == implode('/', $wn)) {
$this->away = ($XML->value == "TRUE") ? true : false;
}
if ("user/info/connected" == implode('/', $wn)) {
$this->onlinefor = strtotime($XML->value);
}
if ("user/info/timenow" == implode('/', $wn)) {
$sc = (strtotime($XML->value) - $this->onlinefor);
$t = floor($sc/86400);
$c["days"] = ($t > 0) ? $t."D " : ""; $sc = ($sc-$t*86400);
$t = floor($sc/3600);
$c["hours"] = ($t > 0) ? $t."H " : ""; $sc = ($sc-$t*3600);
$t = floor($sc/60);
$c["minutes"] = ($t > 0) ? $t."M " : "";
$this->onlinefor = $c["days"].$c["hours"].$c["minutes"];
}
if ("user/info/away" == implode('/', $wn)) {
$this->away = ($XML->value == "TRUE") ? true : false;
}
if ("user/info/awaymsg" == implode('/', $wn)) {
$this->awaymessage = $XML->value;
}
if ("user/channels/channel/name" == implode('/', $wn)) {
$this->channels .= str_replace('#','',$XML->value)." ";
}
}
if ($XML->nodeType == XMLReader::END_ELEMENT) {
array_pop($wn);
}
}
$XML->close();
}
function loadDefaultInfo() {
$this->name = ". ";
$this->online = true;
$this->onlinefor = "";
$this->away = true;
$this->awaymessage = "";
$this->channels = "";
}
function drawImage() {
header("Content-type: image/png");
$image = imagecreatefrompng("background.png");
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocate($image, 255, 0, 0);
$green = imagecolorallocate($image, 0, 255, 0);
$feb = "slkscreb.ttf";
$fnn = "slkscr.ttf";
$sizes["name"] = imagettfbbox(6, 0, $feb, $this->name);
$sizes["online"] = imagettfbbox(6, 0, $feb, "online: ");
$sizes["away"] = imagettfbbox(6, 0, $feb, "away: ");
$sizes["yes"] = imagettfbbox(6, 0, $feb, "yes ");
$sizes["#"] = imagettfbbox(6, 0, $feb, "#: ");
imagettftext($image, 6, 0, 22, 8, -$white, $feb, $this->name);
imagettftext($image, 6, 0, (22 + $sizes["name"][4]), 8, -$white, $feb, "online:");
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + ($sizes["online"][4] - $sizes["away"][4])), 18, -$white, $feb, "away:");
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + ($sizes["online"][4] - $sizes["#"][4])), 28, -$white, $feb, "#: ");
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + $sizes["online"][4]), 8, -(($this->online) ? $green : $red), $feb, (($this->online) ? "yes" : "no"));
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + $sizes["online"][4]), 18, -((!$this->away) ? $green : $red), $feb, (($this->away) ? "yes" : "no"));
if ($this->online)
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + $sizes["online"][4] + $sizes["yes"][4]), 8, $white, $fnn, $this->onlinefor);
if ($this->away)
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + $sizes["online"][4] + $sizes["yes"][4]), 18, $white, $fnn, $this->awaymessage);
imagettftext($image, 6, 0, (22 + $sizes["name"][4] + $sizes["online"][4]), 28, $white, $fnn, $this->channels);
imagepng($image);
imagedestroy($image);
}
}
$x = new ImageGeneration;
$x->getInfo($_GET['name']);
$x->drawImage();
?>